From: syd@dsinc.DSI.COM (Syd Weinstein)
Newsgroups: comp.mail.elm,comp.sources.bugs
Subject: elm 2.4 Patch #17
Summary: This is an official patch for elm 2.4 system.  Please apply it.
Date: 15 Dec 92 01:48:43 GMT
Followup-To: poster
Organization: Datacomp Systems, Inc., Huntingdon Valley, PA 19006
NNTP-Posting-Host: dsinc.dsi.com

this is part 4 of a 4 part patch

Fix:	From rn, say "| patch -p -N -d DIR", where DIR is your elm source
	directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
	If you don't have the patch program, apply the following by hand,
	or get patch (version 2.0, latest patchlevel).

	After patching:
		sh Configure -d
		make
		make install

	If patch indicates that patchlevel is the wrong version, you may need
	to apply one or more previous patches, or the patch may already
	have been applied.  See the patchlevel.h file to find out what has or
	has not been applied.  In any event, don't continue with the patch.

	If you are missing previous patches they can be obtained from our:
	archive server.

	Syd Weinstein
	elm@DSI.COM

	The patches are available from the dsinc archive server
	Send the following message to archive-server@DSI.COM for
	a list of available patches:

	Subject: patch list
	send index elm

Index: hdrs/patchlevel.h
Prereq: "16"
*** ../elm2.4/hdrs/patchlevel.h	Wed Nov 25 14:10:35 1992
--- hdrs/patchlevel.h	Wed Nov 25 19:50:23 1992
***************
*** 1 ****
! #define PATCHLEVEL "16"
--- 1 ----
! #define PATCHLEVEL "17"

Index: src/mime.c
Prereq: 5.6
*** ../elm2.4/src/mime.c	Wed Nov 25 14:10:40 1992
--- src/mime.c	Thu Dec 10 20:45:36 1992
***************
*** 1,5 ****
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,5 ----
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.8 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 11,16 ****
--- 11,26 ----
   *
   ******************************************************************************
   * $Log: mime.c,v $
+  * Revision 5.8  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.7  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.6  1992/11/22  01:22:48  syd
   * According to the MIME BNF, quoted strings are allowed in the value portion
   * of a parameter.
***************
*** 53,59 ****
  
  #include <errno.h>
  #include <ctype.h>
- #include <sys/types.h>
  #include <sys/stat.h>
  
  int check_for_multipart(filedesc)
--- 63,68 ----
***************
*** 192,199 ****
      fprintf(dest, "\n");
      while (line_len = fread(buffer, 1, sizeof(buffer), incfile)) {
        if (fwrite(buffer, 1, line_len, dest) != line_len) {
          Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmWriteFailedCopyAcross,
! 	        "\n\rWrite failed in copy_message_across\n\r"), 0);
          emergency_exit();
        }
      } 
--- 201,210 ----
      fprintf(dest, "\n");
      while (line_len = fread(buffer, 1, sizeof(buffer), incfile)) {
        if (fwrite(buffer, 1, line_len, dest) != line_len) {
+ 	MoveCursor(LINES, 0);
+ 	Raw(OFF);
          Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmWriteFailedCopyAcross,
! 	        "\nWrite failed in copy_message_across\n"), 0);
          emergency_exit();
        }
      } 
***************
*** 202,210 ****
  	unlink(tmp_fn);
      }
    } else {
      Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCantOpenIncludedFile,
! 		    "\n\rCan't open included File,ignored\n\r"), 0);
!     sleep(2);
      emergency_exit();
    }
    return(0);
--- 213,222 ----
  	unlink(tmp_fn);
      }
    } else {
+     MoveCursor(LINES, 0);
+     Raw(OFF);
      Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCantOpenIncludedFile,
! 		    "\nCan't open included File\n"), 0);
      emergency_exit();
    }
    return(0);

Index: src/newmbox.c
Prereq: 5.8
*** ../elm2.4/src/newmbox.c	Wed Nov 25 14:10:40 1992
--- src/newmbox.c	Thu Dec 10 20:45:37 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: newmbox.c,v 5.8 1992/11/22 00:08:45 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.8 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: newmbox.c,v 5.11 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.11 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,33 ----
   *
   *******************************************************************************
   * $Log: newmbox.c,v $
+  * Revision 5.11  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.10  1992/12/07  04:31:38  syd
+  * Fix typo
+  * From: Syd
+  *
+  * Revision 5.9  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.8  1992/11/22  00:08:45  syd
   * I was playing with the metamail stuff and Sun's Openwindows Mailtool
   * and discovered that I was able to 'display' messages generated with
***************
*** 65,71 ****
  #undef tolower		/* we have our own "tolower" routine instead! */
  #endif
  
- #include <sys/types.h>		
  #include <sys/stat.h>
  #include <errno.h>
  
--- 79,84 ----
***************
*** 168,177 ****
  	if ((mailfile = fopen(cur_folder,"r")) == NULL)  {
  	  if (errno != ENOENT ) { /* error on anything but file not exist */
  	    err = errno;
! 	    Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmFailOnOpenNewmbox,
! 		    "\n\rfail on open in newmbox, open %s failed!!\n\r"),
! 		    1, cur_folder);
! 	    Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	    dprint(1, (debugfile, "fail on open in newbox, file %s!!\n",
  		    cur_folder));
  	    rm_temps_exit();
--- 181,192 ----
  	if ((mailfile = fopen(cur_folder,"r")) == NULL)  {
  	  if (errno != ENOENT ) { /* error on anything but file not exist */
  	    err = errno;
! 	    MoveCursor(LINES,0);
! 	    Raw(OFF);
! 	    printf(catgets(elm_msg_cat, ElmSet, ElmFailOnOpenNewmbox,
! 		    "\nfail on open in newmbox, open %s failed!!\n"),
! 		    cur_folder);
! 	    printf("** %s. **\n", error_description(err));
  	    dprint(1, (debugfile, "fail on open in newbox, file %s!!\n",
  		    cur_folder));
  	    rm_temps_exit();
***************
*** 303,313 ****
  	    if ((temp = fopen(cur_tempfolder,"w")) == NULL) {
  	     err = errno;
  	     unlock();	/* remove lock file! */
  	     Raw(OFF);
! 	     Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntOpenForTemp,
! 		     "\n\rCouldn't open file %s for use as temp file.\n\r"),
! 		     1, cur_tempfolder);
! 	     Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	     dprint(1, (debugfile,
                  "Error: Couldn't open file %s as temp mbox.  errno %s (%s)\n",
  	         cur_tempfolder, error_description(err), "read_headers"));
--- 318,329 ----
  	    if ((temp = fopen(cur_tempfolder,"w")) == NULL) {
  	     err = errno;
  	     unlock();	/* remove lock file! */
+ 	     MoveCursor(LINES, 0);
  	     Raw(OFF);
! 	     printf(catgets(elm_msg_cat, ElmSet, ElmCouldntOpenForTemp,
! 		     "\nCouldn't open file %s for use as temp file.\n"),
! 		     cur_tempfolder);
! 	     printf("** %s. **\n", error_description(err));
  	     dprint(1, (debugfile,
                  "Error: Couldn't open file %s as temp mbox.  errno %s (%s)\n",
  	         cur_tempfolder, error_description(err), "read_headers"));
***************
*** 321,331 ****
  	   if ((temp = fopen(cur_tempfolder,"a")) == NULL) {
  	     err = errno;
  	     unlock();	/* remove lock file! */
  	     Raw(OFF);
! 	     Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntReopenForTemp,
! 		     "\n\rCouldn't reopen file %s for use as temp file.\n\r"),
! 		     1, cur_tempfolder);
! 	     Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	     dprint(1, (debugfile, 
                  "Error: Couldn't reopen file %s as temp mbox.  errno %s (%s)\n",
  	         cur_tempfolder, error_description(err), "read_headers"));
--- 337,348 ----
  	   if ((temp = fopen(cur_tempfolder,"a")) == NULL) {
  	     err = errno;
  	     unlock();	/* remove lock file! */
+ 	     MoveCursor(LINES,0);
  	     Raw(OFF);
! 	     printf(catgets(elm_msg_cat, ElmSet, ElmCouldntReopenForTemp,
! 		     "\nCouldn't reopen file %s for use as temp file.\n"),
! 		     cur_tempfolder);
! 	     printf("** %s. **\n", error_description(err));
  	     dprint(1, (debugfile, 
                  "Error: Couldn't reopen file %s as temp mbox.  errno %s (%s)\n",
  	         cur_tempfolder, error_description(err), "read_headers"));
***************
*** 357,366 ****
  	if (add_new_only) {
  	   if (fseek(mailfile, mailfile_size, 0) == -1) {
  	     err = errno;
! 	     Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekEndFolder,
! 		"\n\rCouldn't seek to %ld (end of folder) in %s!\n\r"),
! 		2, mailfile_size, cur_folder);	
! 	     Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	     dprint(1, (debugfile,
       "Error: Couldn't seek to end of folder %s: (offset %ld) Errno %s (%s)\n",
  	        cur_folder, mailfile_size, error_description(err), "read_headers"));
--- 374,385 ----
  	if (add_new_only) {
  	   if (fseek(mailfile, mailfile_size, 0) == -1) {
  	     err = errno;
! 	     MoveCursor(LINES, 0);
! 	     Raw(OFF);
! 	     MCprintf(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekEndFolder,
! 		"\nCouldn't seek to %ld (end of folder) in %s!\n"),
! 		mailfile_size, cur_folder);	
! 	     printf("** %s. **\n", 1, error_description(err));
  	     dprint(1, (debugfile,
       "Error: Couldn't seek to end of folder %s: (offset %ld) Errno %s (%s)\n",
  	        cur_folder, mailfile_size, error_description(err), "read_headers"));
***************
*** 385,394 ****
  	  if (copyit)
  	    if (fwrite(buffer, 1, line_bytes, temp) != line_bytes) {
  		err = errno;
! 		Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmWriteToTempFailed,
! 				"\n\rWrite to tempfile %s failed!!\n\r"),
! 				1, cur_tempfolder);
! 		Write_to_screen("** %s. **\n\r", 1, error_description(err));
  		dprint(1, (debugfile, "Can't write to tempfile %s!!\n",
  			   cur_tempfolder));
  		rm_temps_exit();
--- 404,415 ----
  	  if (copyit)
  	    if (fwrite(buffer, 1, line_bytes, temp) != line_bytes) {
  		err = errno;
! 		MoveCursor(LINES, 0);
! 		Raw(OFF);
! 		printf(catgets(elm_msg_cat, ElmSet, ElmWriteToTempFailed,
! 				"\nWrite to tempfile %s failed!!\n"),
! 				cur_tempfolder);
! 		printf("** %s. **\n", error_description(err));
  		dprint(1, (debugfile, "Can't write to tempfile %s!!\n",
  			   cur_tempfolder));
  		rm_temps_exit();
***************
*** 426,439 ****
  #else
  	    if (! first_word(buffer, "From ") && !forwarding_mail) {
  #endif /* MMDF */
! 	      PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmFolderCorrupt,
! 		  "\n\rFolder is corrupt!!  I can't read it!!\n\r\n\r"));
  	      fflush(stderr);
  	      dprint(1, (debugfile, 
  			   "\n\n**** First mail header is corrupt!! ****\n\n"));
  	      dprint(1, (debugfile, "Line is;\n\t%s\n\n", buffer));
!               mail_only++;	/* to avoid leave() cursor motion */
!               leave();
  	    }
  	  }
  
--- 447,461 ----
  #else
  	    if (! first_word(buffer, "From ") && !forwarding_mail) {
  #endif /* MMDF */
! 	      MoveCursor(LINES,0);
! 	      Raw(OFF);
! 	      printf(catgets(elm_msg_cat, ElmSet, ElmFolderCorrupt,
! 		  "\nFolder is corrupt!!  I can't read it!!\n\n"));
  	      fflush(stderr);
  	      dprint(1, (debugfile, 
  			   "\n\n**** First mail header is corrupt!! ****\n\n"));
  	      dprint(1, (debugfile, "Line is;\n\t%s\n\n", buffer));
!               leave(0);
  	    }
  	  }
  
***************
*** 461,470 ****
  			new_max * sizeof(struct header_rec *));
  		}
  		if (new_headers == NULL) {
! 		  error1(catgets(elm_msg_cat, ElmSet, ElmCouldntAllocMemory,
! 	"\n\r\n\rCouldn't allocate enough memory! Message #%d.\n\r\n\r"),
  			  count);
! 		  leave();
  		}
  		headers = new_headers;
  		while (max_headers < new_max)
--- 483,494 ----
  			new_max * sizeof(struct header_rec *));
  		}
  		if (new_headers == NULL) {
! 	          MoveCursor(LINES,0);
! 	          Raw(OFF);
! 		  printf(catgets(elm_msg_cat, ElmSet, ElmCouldntAllocMemory,
! 	"\n\nCouldn't allocate enough memory! Message #%d.\n\n"),
  			  count);
! 		  leave(0);
  		}
  		headers = new_headers;
  		while (max_headers < new_max)
***************
*** 478,487 ****
  
  		if ((h = (struct header_rec *)
  			  malloc(sizeof(struct header_rec))) == NULL) {
! 		  error1(catgets(elm_msg_cat, ElmSet, ElmCouldntAllocMemory,
! 	"\n\r\n\rCouldn't allocate enough memory! Message #%d.\n\r\n\r"),
  			  count);
! 		  leave();
  		}
  		headers[count] = h;
  	      }
--- 502,513 ----
  
  		if ((h = (struct header_rec *)
  			  malloc(sizeof(struct header_rec))) == NULL) {
! 	          MoveCursor(LINES,0);
! 	          Raw(OFF);
! 		  printf(catgets(elm_msg_cat, ElmSet, ElmCouldntAllocMemory,
! 	"\n\nCouldn't allocate enough memory! Message #%d.\n\n"),
  			  count);
! 		  leave(0);
  		}
  		headers[count] = h;
  	      }
***************
*** 595,608 ****
  	      /* if this is the first "From" in file but the "From" line is
  	       * not of the proper format, we've got a corrupt folder.
  	       */
! 	      PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmFolderCorrupt,
! 		  "\n\rFolder is corrupt!!  I can't read it!!\n\r\n\r"));
  	      fflush(stderr);
  	      dprint(1, (debugfile, 
  			   "\n\n**** First mail header is corrupt!! ****\n\n"));
  	      dprint(1, (debugfile, "Line is;\n\t%s\n\n", buffer));
! 	      mail_only++;	/* to avoid leave() cursor motion */
! 	      leave();
  	    } else if (in_header == FALSE && content_length_found == TRUE && line_bytes > 1) {
  		/* invalid content length, skip back to beginning of
  		 * this messages text and ignore the content length
--- 621,635 ----
  	      /* if this is the first "From" in file but the "From" line is
  	       * not of the proper format, we've got a corrupt folder.
  	       */
! 	      MoveCursor(LINES,0);
! 	      Raw(OFF);
! 	      printf(catgets(elm_msg_cat, ElmSet, ElmFolderCorrupt,
! 		  "\nFolder is corrupt!!  I can't read it!!\n\n"));
  	      fflush(stderr);
  	      dprint(1, (debugfile, 
  			   "\n\n**** First mail header is corrupt!! ****\n\n"));
  	      dprint(1, (debugfile, "Line is;\n\t%s\n\n", buffer));
! 	      leave(0);
  	    } else if (in_header == FALSE && content_length_found == TRUE && line_bytes > 1) {
  		/* invalid content length, skip back to beginning of
  		 * this messages text and ignore the content length
***************
*** 612,621 ****
  		 */
  	      if (fseek(mailfile, content_start, 0) == -1) {
  		err = errno;
! 		Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFolder,
! 		   "\n\rCouldn't seek %ld bytes into folder.\n\r"),
! 		   1, mailfile_size);	
! 		Write_to_screen("** %s. **\n\r", 1, error_description(err));
  		dprint(1, (debugfile,
        "Error: Couldn't seek folder %s: (offset %ld) Errno %s (%s)\n",
  		   cur_folder, mailfile_size, error_description(err), "reset - read_headers"));
--- 639,650 ----
  		 */
  	      if (fseek(mailfile, content_start, 0) == -1) {
  		err = errno;
! 		MoveCursor(LINES, 0);
! 		Raw(OFF);
! 		printf(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFolder,
! 		   "\nCouldn't seek %ld bytes into folder.\n"),
! 		   mailfile_size);	
! 		printf("** %s. **\n", 1, error_description(err));
  		dprint(1, (debugfile,
        "Error: Couldn't seek folder %s: (offset %ld) Errno %s (%s)\n",
  		   cur_folder, mailfile_size, error_description(err), "reset - read_headers"));
***************
*** 624,633 ****
  	      if (copyit)
  		if (fseek(temp, content_start, 0) == -1) {
  		  err = errno;
! 		  Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoTempFile,
! 		     "\n\rCouldn't seek %ld bytes into temp file.\n\r"),
! 		     1, mailfile_size);
! 		  Write_to_screen("** %s. **\n\r", 1, error_description(err));
  		  dprint(1, (debugfile,
  	"Error: Couldn't seek temp file %s: (offset %ld) Errno %s (%s)\n",
  		     cur_tempfolder, mailfile_size, error_description(err), "reset - read_headers"));
--- 653,664 ----
  	      if (copyit)
  		if (fseek(temp, content_start, 0) == -1) {
  		  err = errno;
! 		  MoveCursor(LINES, 0);
! 		  Raw(OFF);
! 		  printf(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoTempFile,
! 		     "\nCouldn't seek %ld bytes into temp file.\n"),
! 		     mailfile_size);
! 		  printf("** %s. **\n", error_description(err));
  		  dprint(1, (debugfile,
  	"Error: Couldn't seek temp file %s: (offset %ld) Errno %s (%s)\n",
  		     cur_tempfolder, mailfile_size, error_description(err), "reset - read_headers"));
***************
*** 811,820 ****
  	  unlock();	/* remove lock file! */
  	  if ((ferror(mailfile)) || (fclose(mailfile) == EOF)) {
  	      err = errno;
! 	      Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCloseOnFolderFailed,
! 			      "\n\rClose on folder %s failed!!\n\r"),
! 			      1, cur_folder);
! 	      Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	      dprint(1, (debugfile, "Can't close on folder %s!!\n",
  			 cur_folder));
  	      rm_temps_exit();
--- 842,853 ----
  	  unlock();	/* remove lock file! */
  	  if ((ferror(mailfile)) || (fclose(mailfile) == EOF)) {
  	      err = errno;
! 	      MoveCursor(LINES, 0);
! 	      Raw(OFF);
! 	      printf(catgets(elm_msg_cat, ElmSet, ElmCloseOnFolderFailed,
! 			      "\nClose on folder %s failed!!\n"),
! 			      cur_folder);
! 	      printf("** %s. **\n", error_description(err));
  	      dprint(1, (debugfile, "Can't close on folder %s!!\n",
  			 cur_folder));
  	      rm_temps_exit();
***************
*** 821,830 ****
  	  }
  	  if ((ferror(temp)) || (fclose(temp) == EOF)) {
  	      err = errno;
! 	      Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmColeOnTempFailed,
! 			      "\n\rClose on tempfile %s failed!!\n\r"), 
! 			      1, cur_tempfolder);
! 	      Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	      dprint(1, (debugfile, "Can't close on tempfile %s!!\n",
  			 cur_tempfolder));
  	      rm_temps_exit();
--- 854,865 ----
  	  }
  	  if ((ferror(temp)) || (fclose(temp) == EOF)) {
  	      err = errno;
! 	      MoveCursor(LINES, 0);
! 	      Raw(OFF);
! 	      printf(catgets(elm_msg_cat, ElmSet, ElmCloseOnTempFailed,
! 			      "\nClose on tempfile %s failed!!\n"), 
! 			      cur_tempfolder);
! 	      printf("** %s. **\n", error_description(err));
  	      dprint(1, (debugfile, "Can't close on tempfile %s!!\n",
  			 cur_tempfolder));
  	      rm_temps_exit();
***************
*** 831,839 ****
  	  }
  	  /* sanity check on append - is resulting temp file longer??? */
  	  if ( bytes(cur_tempfolder) != mailfile_size) {
! 	     Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmLengthNESpool,
! 	       "\n\rnewmbox - length of mbox. != spool mailbox length!!\n\r"),
! 		0);
  	    dprint(0, (debugfile, "newmbox - mbox. != spool mail length"));
  	    rm_temps_exit();
  	  }
--- 866,875 ----
  	  }
  	  /* sanity check on append - is resulting temp file longer??? */
  	  if ( bytes(cur_tempfolder) != mailfile_size) {
! 	     MoveCursor(LINES, 0);
! 	     Raw(OFF);
! 	     printf(catgets(elm_msg_cat, ElmSet, ElmLengthNESpool,
! 	       "\nnewmbox - length of mbox. != spool mailbox length!!\n"));
  	    dprint(0, (debugfile, "newmbox - mbox. != spool mail length"));
  	    rm_temps_exit();
  	  }
***************
*** 841,854 ****
  	    err = errno;
  	    MoveCursor(LINES,0);
  	    Raw(OFF);
! 	    Write_to_screen(catgets(elm_msg_cat, ElmSet, ElmCouldntReopenForTemp,
! 		   "\n\rCouldn't reopen file %s for use as temp file.\n\r"),
! 	           1, cur_tempfolder);
! 	    Write_to_screen("** %s. **\n\r", 1, error_description(err));
  	    dprint(1, (debugfile,
  		  "Error: Reopening %s as temp file failed!  errno %s (%s)\n",
! 	           cur_tempfolder, error_description(errno), "read_headers"));
! 	    leave();
  	  }
  	}
  	else 
--- 877,890 ----
  	    err = errno;
  	    MoveCursor(LINES,0);
  	    Raw(OFF);
! 	    printf(catgets(elm_msg_cat, ElmSet, ElmCouldntReopenForTemp,
! 		   "\nCouldn't reopen file %s for use as temp file.\n"),
! 	           cur_tempfolder);
! 	    printf("** %s. **\n", error_description(err));
  	    dprint(1, (debugfile,
  		  "Error: Reopening %s as temp file failed!  errno %s (%s)\n",
! 	           cur_tempfolder, error_description(err), "read_headers"));
! 	    leave(0);
  	  }
  	}
  	else 

Index: src/pattern.c
Prereq: 5.1
*** ../elm2.4/src/pattern.c	Sat Oct  3 18:59:07 1992
--- src/pattern.c	Wed Nov 25 19:47:11 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: pattern.c,v 5.1 1992/10/03 22:58:40 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.1 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: pattern.c,v 5.2 1992/11/26 00:46:50 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.2 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: pattern.c,v $
+  * Revision 5.2  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.1  1992/10/03  22:58:40  syd
   * Initial checkin as of 2.4 Release at PL0
   *
***************
*** 354,360 ****
  	**/
  
  	char buffer[LONG_STRING];
! 	int  message_number, lines, line, line_len;
  
  	message_number = current-1;
  
--- 359,365 ----
  	**/
  
  	char buffer[LONG_STRING];
! 	int  message_number, lines, line, line_len, err;
  
  	message_number = current-1;
  
***************
*** 365,377 ****
  
  	  if (fseek(mailfile, headers[message_number]->offset, 0L) == -1) {
  
  	    dprint(1, (debugfile,
  		"Error: seek %ld bytes into file failed. errno %d (%s)\n",
! 		headers[message_number]->offset, errno, 
  		"match_in_message"));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmMatchSeekFailed,
  		   "ELM [match] failed looking %ld bytes into file (%s)."),
! 		   headers[message_number]->offset, error_description(errno));
  	    return(1);	/* fake it out to avoid replacing error message */
  	  }
  
--- 370,383 ----
  
  	  if (fseek(mailfile, headers[message_number]->offset, 0L) == -1) {
  
+ 	    err = errno;
  	    dprint(1, (debugfile,
  		"Error: seek %ld bytes into file failed. errno %d (%s)\n",
! 		headers[message_number]->offset, err, 
  		"match_in_message"));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmMatchSeekFailed,
  		   "ELM [match] failed looking %ld bytes into file (%s)."),
! 		   headers[message_number]->offset, error_description(err));
  	    return(1);	/* fake it out to avoid replacing error message */
  	  }
  

Index: src/pmalloc.c
Prereq: 5.1
*** ../elm2.4/src/pmalloc.c	Sat Oct  3 18:59:08 1992
--- src/pmalloc.c	Sun Dec  6 23:28:14 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: pmalloc.c,v 5.1 1992/10/03 22:58:40 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.1 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: pmalloc.c,v 5.3 1992/12/07 04:28:03 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,28 ----
   *
   *******************************************************************************
   * $Log: pmalloc.c,v $
+  * Revision 5.3  1992/12/07  04:28:03  syd
+  * change include from defs to headers as now needs LINES
+  * From: Syd
+  *
+  * Revision 5.2  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.1  1992/10/03  22:58:40  syd
   * Initial checkin as of 2.4 Release at PL0
   *
***************
*** 29,35 ****
  **/
  
  #include <stdio.h>
! #include "defs.h"
  #include "s_elm.h"
  
  extern nl_catd elm_msg_cat;	/* message catalog	    */
--- 38,44 ----
  **/
  
  #include <stdio.h>
! #include "headers.h"
  #include "s_elm.h"
  
  extern nl_catd elm_msg_cat;	/* message catalog	    */
***************
*** 54,63 ****
  
  	if (size > free_mem) {
  	  if ((our_block = (char *) malloc(PMALLOC_BUFFER_SIZE)) == NULL) {
  	    fprintf(stderr, catgets(elm_msg_cat, ElmSet, ElmCouldntMallocBytes,
! 		    "\n\r\n\rCouldn't malloc %d bytes!!\n\r\n\r"),
  		    PMALLOC_BUFFER_SIZE);
! 	    leave();	
            }
  	  our_block += 4;  /* just for safety, don't give back true address */
  	  free_mem = PMALLOC_BUFFER_SIZE-4;
--- 63,74 ----
  
  	if (size > free_mem) {
  	  if ((our_block = (char *) malloc(PMALLOC_BUFFER_SIZE)) == NULL) {
+ 	    MoveCursor(LINES,0);
+ 	    Raw(OFF);
  	    fprintf(stderr, catgets(elm_msg_cat, ElmSet, ElmCouldntMallocBytes,
! 		    "\n\nCouldn't malloc %d bytes!!\n\n"),
  		    PMALLOC_BUFFER_SIZE);
! 	    leave(0);	
            }
  	  our_block += 4;  /* just for safety, don't give back true address */
  	  free_mem = PMALLOC_BUFFER_SIZE-4;

Index: src/quit.c
Prereq: 5.3
*** ../elm2.4/src/quit.c	Tue Oct 27 11:17:30 1992
--- src/quit.c	Wed Nov 25 19:46:43 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: quit.c,v 5.3 1992/10/24 13:35:39 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: quit.c,v 5.4 1992/11/26 00:46:13 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: quit.c,v $
+  * Revision 5.4  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.3  1992/10/24  13:35:39  syd
   * changes found by using codecenter on Elm 2.4.3
   * From: Graham Hudspith <gwh@inmos.co.uk>
***************
*** 58,64 ****
  	   * changed for its own purposes */
  	  return;
  
! 	leave();
  }
  
  int
--- 63,69 ----
  	   * changed for its own purposes */
  	  return;
  
! 	leave(0);
  }
  
  int
***************
*** 67,72 ****
--- 72,78 ----
  	/** Resync on the current folder. Leave current and read it back in.
  	    Return indicates whether a redraw of the screen is needed.
  	 **/
+ 	int  err;
  
  	  if(leave_mbox(TRUE, FALSE, TRUE) ==-1)
  	    /* new mail - leave not done - can't change to another file yet
***************
*** 78,89 ****
  
  	  if ((errno = can_access(cur_folder, READ_ACCESS)) != 0) {
  	    if (strcmp(cur_folder, defaultfile) != 0 || errno != ENOENT) {
  	      dprint(1, (debugfile,
  		     "Error: given file %s as folder - unreadable (%s)!\n", 
! 		     cur_folder, error_description(errno)));
  	      fprintf(stderr, catgets(elm_msg_cat, ElmSet, ElmCantOpenFolderRead,
  			"Can't open folder '%s' for reading!\n"), cur_folder);
! 	      leave();
  	    }
  	  }
  
--- 84,98 ----
  
  	  if ((errno = can_access(cur_folder, READ_ACCESS)) != 0) {
  	    if (strcmp(cur_folder, defaultfile) != 0 || errno != ENOENT) {
+ 	      err = errno;
+ 	      MoveCursor(LINES, 0);
+ 	      Raw(OFF);
  	      dprint(1, (debugfile,
  		     "Error: given file %s as folder - unreadable (%s)!\n", 
! 		     cur_folder, error_description(err)));
  	      fprintf(stderr, catgets(elm_msg_cat, ElmSet, ElmCantOpenFolderRead,
  			"Can't open folder '%s' for reading!\n"), cur_folder);
! 	      leave(0);
  	    }
  	  }
  

Index: src/read_rc.c
Prereq: 5.9
*** ../elm2.4/src/read_rc.c	Wed Nov 25 14:10:33 1992
--- src/read_rc.c	Wed Nov 25 19:46:44 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: read_rc.c,v 5.9 1992/11/24 01:44:18 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.9 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: read_rc.c,v 5.10 1992/11/26 00:46:13 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.10 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: read_rc.c,v $
+  * Revision 5.10  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.9  1992/11/24  01:44:18  syd
   * Add raw/no tite stuff around directory create questions
   * From: Syd via bug report from ade@clark.edu
***************
*** 134,139 ****
--- 139,145 ----
  #include "headers.h"
  #include "save_opts.h"
  #include "s_elm.h"
+ #include <errno.h>
  
  #ifdef BSD
  #undef tolower
***************
*** 168,174 ****
  	FILE *file;
  	char buffer[SLEN], filename[SLEN], *cp, 
  	     	temp[SLEN]; /* for when an option is run through expandenv */
! 	int  i, ch, len;
  
  	/* Establish some defaults in case elmrc is incomplete or not there.
  	 * Defaults for other elmrc options were established in their
--- 174,180 ----
  	FILE *file;
  	char buffer[SLEN], filename[SLEN], *cp, 
  	     	temp[SLEN]; /* for when an option is run through expandenv */
! 	int  i, ch, len, err;
  
  	/* Establish some defaults in case elmrc is incomplete or not there.
  	 * Defaults for other elmrc options were established in their
***************
*** 303,311 ****
  	    /* try to open elmrc file again */
  	    sprintf(filename, "%s/%s", home, elmrcfile);
  	    if((file = fopen(filename, "r")) == NULL) {
  	      dprint(2, (debugfile,
  		"Warning: could not open new \".elm/elmrc\" file.\n"));
! 	      dprint(2, (debugfile, "** %s **\n", error_description(errno)));
  	      printf(catgets(elm_msg_cat, ElmSet, ElmCouldNotOpenNewElmrc,
  		"Warning: could not open new \".elm/elmrc\" file! Using default parameters.\n\r"));
  	      sleep(4);
--- 309,318 ----
  	    /* try to open elmrc file again */
  	    sprintf(filename, "%s/%s", home, elmrcfile);
  	    if((file = fopen(filename, "r")) == NULL) {
+ 	      err = errno;
  	      dprint(2, (debugfile,
  		"Warning: could not open new \".elm/elmrc\" file.\n"));
! 	      dprint(2, (debugfile, "** %s **\n", error_description(err)));
  	      printf(catgets(elm_msg_cat, ElmSet, ElmCouldNotOpenNewElmrc,
  		"Warning: could not open new \".elm/elmrc\" file! Using default parameters.\n\r"));
  	      sleep(4);
***************
*** 777,783 ****
  	  if ((weedlist[weedcount] = 
  	      pmalloc(strlen(default_list[weedcount]) + 1)) == NULL) {
  	    printf(catgets(elm_msg_cat, ElmSet, ElmNoMemDefaultWeed,
! 		"\n\rNot enough memory for default weedlist. Leaving.\n\r"));
  	    leave(1);
  	  }
  	  strcpy(weedlist[weedcount], default_list[weedcount]);
--- 784,790 ----
  	  if ((weedlist[weedcount] = 
  	      pmalloc(strlen(default_list[weedcount]) + 1)) == NULL) {
  	    printf(catgets(elm_msg_cat, ElmSet, ElmNoMemDefaultWeed,
! 		"\nNot enough memory for default weedlist. Leaving.\n"));
  	    leave(1);
  	  }
  	  strcpy(weedlist[weedcount], default_list[weedcount]);

Index: src/remail.c
Prereq: 5.4
*** ../elm2.4/src/remail.c	Wed Nov 25 14:10:41 1992
--- src/remail.c	Wed Nov 25 20:47:14 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: remail.c,v 5.4 1992/11/22 01:14:20 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: remail.c,v 5.6 1992/11/26 01:46:26 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,28 ----
   *
   *******************************************************************************
   * $Log: remail.c,v $
+  * Revision 5.6  1992/11/26  01:46:26  syd
+  * add Decode option to copy_message, convert copy_message to
+  * use bit or for options.
+  * From: Syd and bjoerns@stud.cs.uit.no (Bjoern Stabell)
+  *
+  * Revision 5.5  1992/11/26  00:49:04  syd
+  * fix use of errno
+  * From: Syd
+  *
   * Revision 5.4  1992/11/22  01:14:20  syd
   * Allow SCO MMDF to use the mmdf library for mailer via execmail.
   * From: Larry Philps <larryp@sco.com>
***************
*** 58,63 ****
--- 67,73 ----
  	char entered[VERY_LONG_STRING], expanded[VERY_LONG_STRING];
  	char *filename, buffer[VERY_LONG_STRING], ch;
  	char mailerflags[NLEN];
+ 	int  err;
  	extern char *tempnam();
  
  	entered[0] = '\0';
***************
*** 77,88 ****
  	}
  
  	if ((mailfd = fopen(filename, "w")) == NULL) {
  	  dprint(1, (debugfile, "couldn't open temp file %s! (remail)\n", 
  		  filename));
! 	  dprint(1, (debugfile, "** %s **\n", error_description(errno)));
  	  sprintf(buffer, catgets(elm_msg_cat, ElmSet, ElmCouldntOpenForWriting,
  			"Sorry - couldn't open file %s for writing (%s)."),
! 		  error_description(errno));
  	  set_error(buffer);
  	  return(1);
  	}
--- 87,99 ----
  	}
  
  	if ((mailfd = fopen(filename, "w")) == NULL) {
+ 	  err = errno;
  	  dprint(1, (debugfile, "couldn't open temp file %s! (remail)\n", 
  		  filename));
! 	  dprint(1, (debugfile, "** %s **\n", error_description(err)));
  	  sprintf(buffer, catgets(elm_msg_cat, ElmSet, ElmCouldntOpenForWriting,
  			"Sorry - couldn't open file %s for writing (%s)."),
! 		  error_description(err));
  	  set_error(buffer);
  	  return(1);
  	}
***************
*** 97,103 ****
  	  do_mmdf_addresses(mailfd, strip_parens(strip_commas(expanded)));
  #endif /* MMDF */
  
! 	copy_message("", mailfd, FALSE, TRUE, FALSE, TRUE, TRUE);  
  
  	fclose(mailfd);
  
--- 108,114 ----
  	  do_mmdf_addresses(mailfd, strip_parens(strip_commas(expanded)));
  #endif /* MMDF */
  
! 	copy_message("", mailfd, CM_REMOTE | CM_MMDF_HEAD | CM_REMAIL);
  
  	fclose(mailfd);
  

Index: src/reply.c
Prereq: 5.4
*** ../elm2.4/src/reply.c	Tue Nov 10 15:20:29 1992
--- src/reply.c	Thu Dec 10 20:45:38 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: reply.c,v 5.4 1992/11/07 20:05:52 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: reply.c,v 5.6 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,29 ----
   *
   *******************************************************************************
   * $Log: reply.c,v $
+  * Revision 5.6  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.5  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.4  1992/11/07  20:05:52  syd
   * change to use header_cmp to allow for linear white space around the colon
   * From: Syd
***************
*** 46,52 ****
  #endif
  
  #ifndef BSD
- #  include <sys/types.h>
  # ifndef VMS
  #  include <sys/utsname.h>
  # endif
--- 56,61 ----
***************
*** 167,183 ****
  
      char ret_address[SLEN], buf[SLEN], new_address[SLEN],
  	 address[SLEN], comment[SLEN];
!     int  lines, iindex, line_pending = 0, line_len;
  
      /** First off, get to the first line of the message desired **/
  
      if (fseek(mailfile, headers[current-1]->offset, 0) == -1) {
  	dprint(1,(debugfile,"Error: seek %ld resulted in errno %s (%s)\n", 
! 		 headers[current-1]->offset, error_description(errno), 
  		 "get_and_expand_everyone"));
  	error2(catgets(elm_msg_cat, ElmSet, ElmSeekFailedFile,
  		"ELM [seek] couldn't read %d bytes into file (%s)."),
! 		headers[current-1]->offset, error_description(errno));
  	return;
      }
   
--- 176,193 ----
  
      char ret_address[SLEN], buf[SLEN], new_address[SLEN],
  	 address[SLEN], comment[SLEN];
!     int  lines, iindex, line_pending = 0, line_len, err;
  
      /** First off, get to the first line of the message desired **/
  
      if (fseek(mailfile, headers[current-1]->offset, 0) == -1) {
+ 	err = errno;
  	dprint(1,(debugfile,"Error: seek %ld resulted in errno %s (%s)\n", 
! 		 headers[current-1]->offset, error_description(err), 
  		 "get_and_expand_everyone"));
  	error2(catgets(elm_msg_cat, ElmSet, ElmSeekFailedFile,
  		"ELM [seek] couldn't read %d bytes into file (%s)."),
! 		headers[current-1]->offset, error_description(err));
  	return;
      }
   

Index: src/returnadd.c
Prereq: 5.3
*** ../elm2.4/src/returnadd.c	Tue Nov 10 15:20:29 1992
--- src/returnadd.c	Thu Dec 10 20:45:39 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: returnadd.c,v 5.3 1992/11/07 20:05:52 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: returnadd.c,v 5.5 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,29 ----
   *
   *******************************************************************************
   * $Log: returnadd.c,v $
+  * Revision 5.5  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.4  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.3  1992/11/07  20:05:52  syd
   * change to use header_cmp to allow for linear white space around the colon
   * From: Syd
***************
*** 38,45 ****
  #include "s_elm.h"
  
  #include <errno.h>
- 
- #include <sys/types.h>
  #include <sys/stat.h>
  
  char *shift_lower();
--- 48,53 ----
***************
*** 64,69 ****
--- 72,78 ----
  
  	char mybuf[LONG_STRING];
  	register char ok = 1, in_to = 0;
+ 	int  err;
  
  	buffer[0] = '\0';
  
***************
*** 78,90 ****
  	  return;
  	}
          if (fseek(mailfile, headers[msgnum]->offset, 0) == -1) {
  	    dprint(1, (debugfile, 
  		    "Error: seek %ld bytes into file hit errno %s (%s)", 
! 		    headers[msgnum]->offset, error_description(errno), 
  		    "get_existing_address"));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFlle,
  		   "Couldn't seek %ld bytes into file (%s)."),
! 	           headers[msgnum]->offset, error_description(errno));
  	    return;
          }
   
--- 87,100 ----
  	  return;
  	}
          if (fseek(mailfile, headers[msgnum]->offset, 0) == -1) {
+ 	    err = errno;
  	    dprint(1, (debugfile, 
  		    "Error: seek %ld bytes into file hit errno %s (%s)", 
! 		    headers[msgnum]->offset, error_description(err), 
  		    "get_existing_address"));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFlle,
  		   "Couldn't seek %ld bytes into file (%s)."),
! 	           headers[msgnum]->offset, error_description(err));
  	    return;
          }
   
***************
*** 122,128 ****
  	char buf[SLEN], name1[SLEN], name2[SLEN], lastname[SLEN];
  	char hold_return[SLEN], alt_name2[SLEN], buf2[SLEN];
  	int lines, len_buf, len_buf2, colon_offset, decnet_found;
! 	int using_to = FALSE;
  
  	/* now initialize all the char buffers [thanks Keith!] */
  
--- 132,138 ----
  	char buf[SLEN], name1[SLEN], name2[SLEN], lastname[SLEN];
  	char hold_return[SLEN], alt_name2[SLEN], buf2[SLEN];
  	int lines, len_buf, len_buf2, colon_offset, decnet_found;
! 	int using_to = FALSE, err;
  
  	/* now initialize all the char buffers [thanks Keith!] */
  
***************
*** 141,153 ****
  	}
  
  	if (fseek(mailfile, headers[msgnum]->offset, 0) == -1) {
  	  dprint(1, (debugfile,
  		"Error: seek %ld bytes into file hit errno %s (%s)", 
! 		headers[msgnum]->offset, error_description(errno), 
  	        "get_return"));
  	  error2(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFlle,
  		"Couldn't seek %ld bytes into file (%s)."),
! 	       headers[msgnum]->offset, error_description(errno));
  	  return(using_to);
  	}
   
--- 151,164 ----
  	}
  
  	if (fseek(mailfile, headers[msgnum]->offset, 0) == -1) {
+ 	  err = errno;
  	  dprint(1, (debugfile,
  		"Error: seek %ld bytes into file hit errno %s (%s)", 
! 		headers[msgnum]->offset, error_description(err), 
  	        "get_return"));
  	  error2(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoFlle,
  		"Couldn't seek %ld bytes into file (%s)."),
! 	       headers[msgnum]->offset, error_description(err));
  	  return(using_to);
  	}
   

Index: src/savecopy.c
Prereq: 5.3
*** ../elm2.4/src/savecopy.c	Mon Nov  2 15:51:49 1992
--- src/savecopy.c	Wed Nov 25 19:47:12 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: savecopy.c,v 5.3 1992/10/30 21:01:49 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: savecopy.c,v 5.4 1992/11/26 00:46:50 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: savecopy.c,v $
+  * Revision 5.4  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.3  1992/10/30  21:01:49  syd
   * More changes to folder creation confirmation
   * From: Larry Philps <larryp@sco.COM>
***************
*** 79,84 ****
--- 84,90 ----
  	      ch;
  	register int
  	     is_ordinary_file;
+ 	int  err;
    
  
  	/* presume copy_file is okay as is for now */
***************
*** 213,223 ****
  	    }
  	}
  
! 	if ((errno = can_open(savename, "a"))) {
  	  dprint(2, (debugfile,
  	  "Error: attempt to autosave to a file that can't be appended to!\n"));
  	  dprint(2, (debugfile, "\tfilename = \"%s\"\n", savename));
! 	  dprint(2, (debugfile, "** %s **\n", error_description(errno)));
  
  	  /* Lets try sent_mail before giving up */
  	  if(strcmp(sent_mail, savename) == 0) {
--- 219,229 ----
  	    }
  	}
  
! 	if ((err = can_open(savename, "a"))) {
  	  dprint(2, (debugfile,
  	  "Error: attempt to autosave to a file that can't be appended to!\n"));
  	  dprint(2, (debugfile, "\tfilename = \"%s\"\n", savename));
! 	  dprint(2, (debugfile, "** %s **\n", error_description(err)));
  
  	  /* Lets try sent_mail before giving up */
  	  if(strcmp(sent_mail, savename) == 0) {
***************
*** 228,238 ****
  	    return(FALSE);
  	  }
  
! 	  if ((errno = can_open(sent_mail, "a"))) {
  	    dprint(2, (debugfile,
  	  "Error: attempt to autosave to a file that can't be appended to!\n"));
  	    dprint(2, (debugfile, "\tfilename = \"%s\"\n", sent_mail));
! 	    dprint(2, (debugfile, "** %s **\n", error_description(errno)));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmCannotSaveToNorSent,
  		    "Cannot save to %s nor to \"sent\" folder %s!"),
  		    savename, sent_mail);
--- 234,244 ----
  	    return(FALSE);
  	  }
  
! 	  if ((err = can_open(sent_mail, "a"))) {
  	    dprint(2, (debugfile,
  	  "Error: attempt to autosave to a file that can't be appended to!\n"));
  	    dprint(2, (debugfile, "\tfilename = \"%s\"\n", sent_mail));
! 	    dprint(2, (debugfile, "** %s **\n", error_description(err)));
  	    error2(catgets(elm_msg_cat, ElmSet, ElmCannotSaveToNorSent,
  		    "Cannot save to %s nor to \"sent\" folder %s!"),
  		    savename, sent_mail);
***************
*** 255,264 ****
  
  	/* Now add file with message as handed to mailer */
  	if ((message = fopen(filename, "r")) == NULL) {
  	  fclose(save);
  	  dprint(1, (debugfile,
  		 "Error: Couldn't read folder %s (save_copy)\n", filename));
! 	  dprint(1, (debugfile, "** %s **\n", error_description(errno)));
  	  error1(catgets(elm_msg_cat, ElmSet, ElmCouldntReadFolder,
  		"Couldn't read folder %s!"), filename);
  	  sleep(3);
--- 261,271 ----
  
  	/* Now add file with message as handed to mailer */
  	if ((message = fopen(filename, "r")) == NULL) {
+ 	  err = errno;
  	  fclose(save);
  	  dprint(1, (debugfile,
  		 "Error: Couldn't read folder %s (save_copy)\n", filename));
! 	  dprint(1, (debugfile, "** %s **\n", error_description(err)));
  	  error1(catgets(elm_msg_cat, ElmSet, ElmCouldntReadFolder,
  		"Couldn't read folder %s!"), filename);
  	  sleep(3);

Index: src/showmsg.c
Prereq: 5.6
*** ../elm2.4/src/showmsg.c	Tue Nov 17 14:11:05 1992
--- src/showmsg.c	Sun Dec  6 23:29:17 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: showmsg.c,v 5.6 1992/11/15 01:29:37 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: showmsg.c,v 5.9 1992/12/07 04:29:12 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.9 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,33 ----
   *
   *******************************************************************************
   * $Log: showmsg.c,v $
+  * Revision 5.9  1992/12/07  04:29:12  syd
+  * add missing err declare
+  * From: Syd
+  *
+  * Revision 5.8  1992/11/26  01:46:26  syd
+  * add Decode option to copy_message, convert copy_message to
+  * use bit or for options.
+  * From: Syd and bjoerns@stud.cs.uit.no (Bjoern Stabell)
+  *
+  * Revision 5.7  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.6  1992/11/15  01:29:37  syd
   * Clear the screen before displaying MIME:
   * From: marius@rhi.hi.is (Marius Olafsson)
***************
*** 103,109 ****
  	    padding = 0,			/*   counter  */
  	    builtin = FALSE,			/* our pager? */
  	    val = 0,				/* return val */
! 	    buf_len;				/* line length */
  	struct header_rec *current_header = headers[number-1];
  #ifdef	SIGTSTP
  	SIGHAND_TYPE	(*oldstop)(), (*oldcont)();
--- 117,124 ----
  	    padding = 0,			/*   counter  */
  	    builtin = FALSE,			/* our pager? */
  	    val = 0,				/* return val */
! 	    buf_len,				/* line length */
! 	    err;				/* place holder for errno */
  	struct header_rec *current_header = headers[number-1];
  #ifdef	SIGTSTP
  	SIGHAND_TYPE	(*oldstop)(), (*oldcont)();
***************
*** 142,148 ****
  	     (current_header->status & MIME_NOTPLAIN)) &&
  	    !getenv("NOMETAMAIL") ) {
  	    char fname[STRING], Cmd[SLEN], line[VERY_LONG_STRING];
! 	    int code;
  	    long lines = current_header->lines;
  	    FILE *fpout;
  
--- 157,163 ----
  	     (current_header->status & MIME_NOTPLAIN)) &&
  	    !getenv("NOMETAMAIL") ) {
  	    char fname[STRING], Cmd[SLEN], line[VERY_LONG_STRING];
! 	    int code, err;
  	    long lines = current_header->lines;
  	    FILE *fpout;
  
***************
*** 149,155 ****
  	    if (fseek(mailfile, current_header->offset, 0) != -1) {
  		sprintf(fname, "%semm.%d.%d", temp_dir, getpid(), getuid());
  		if ((fpout = fopen(fname, "w")) != NULL) {
! 		    copy_message("", fpout, FALSE, FALSE, FALSE, FALSE, FALSE);
  		    (void) fclose (fpout);
  		    sprintf(Cmd, "metamail -p -z -m Elm %s", fname);
                    ClearScreen();
--- 164,170 ----
  	    if (fseek(mailfile, current_header->offset, 0) != -1) {
  		sprintf(fname, "%semm.%d.%d", temp_dir, getpid(), getuid());
  		if ((fpout = fopen(fname, "w")) != NULL) {
! 		    copy_message("", fpout, CM_DECODE);
  		    (void) fclose (fpout);
  		    sprintf(Cmd, "metamail -p -z -m Elm %s", fname);
                    ClearScreen();
***************
*** 167,178 ****
  #endif
  
  	if (fseek(mailfile, current_header->offset, 0) == -1) {
  	  dprint(1, (debugfile,
  		  "Error: seek %d bytes into file, errno %s (show_message)\n",
! 		  current_header->offset, error_description(errno)));
  	  error2(catgets(elm_msg_cat, ElmSet, ElmSeekFailedFile,
  		  "ELM [seek] couldn't read %d bytes into file (%s)."),
! 		  current_header->offset, error_description(errno));	
  	  return(val);
  	}
  	if(current_header->encrypted)
--- 182,194 ----
  #endif
  
  	if (fseek(mailfile, current_header->offset, 0) == -1) {
+ 	  err = errno;
  	  dprint(1, (debugfile,
  		  "Error: seek %d bytes into file, errno %s (show_message)\n",
! 		  current_header->offset, error_description(err)));
  	  error2(catgets(elm_msg_cat, ElmSet, ElmSeekFailedFile,
  		  "ELM [seek] couldn't read %d bytes into file (%s)."),
! 		  current_header->offset, error_description(err));	
  	  return(val);
  	}
  	if(current_header->encrypted)
***************
*** 192,202 ****
  	  /* create pipe for external pager and fork */
  
  	  if(pipe(pipe_fd) == -1) {
  	    dprint(1, (debugfile, "Error: pipe failed, errno %s (show_msg)\n",
! 	      error_description(errno)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerPipe,
  	      "Could not prepare for external pager(pipe()-%s)."),
! 	      error_description(errno));	
  	    Raw(ON);
  	    return(val);
  	  }
--- 208,219 ----
  	  /* create pipe for external pager and fork */
  
  	  if(pipe(pipe_fd) == -1) {
+ 	    err = errno;
  	    dprint(1, (debugfile, "Error: pipe failed, errno %s (show_msg)\n",
! 	      error_description(err)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerPipe,
  	      "Could not prepare for external pager(pipe()-%s)."),
! 	      error_description(err));	
  	    Raw(ON);
  	    return(val);
  	  }
***************
*** 203,213 ****
  
  	  if((fork_ret = fork()) == -1) {
  
  	    dprint(1, (debugfile, "Error: fork failed, errno %s (show_msg)\n",
! 	      error_description(errno)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerFork,
  	      "Could not prepare for external pager(fork()-%s)."),
! 	      error_description(errno));	
  	    Raw(ON);
  	    return(val);
  
--- 220,231 ----
  
  	  if((fork_ret = fork()) == -1) {
  
+ 	    err = errno;
  	    dprint(1, (debugfile, "Error: fork failed, errno %s (show_msg)\n",
! 	      error_description(err)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerFork,
  	      "Could not prepare for external pager(fork()-%s)."),
! 	      error_description(err));	
  	    Raw(ON);
  	    return(val);
  
***************
*** 220,243 ****
  	    close(pipe_fd[1]);
  	    close(fileno(stdin));
  	    if((new_pipe_fd = dup(pipe_fd[0])) == -1) {
  	      dprint(1, (debugfile, "Error: dup failed, errno %s (show_msg)\n",
! 		error_description(errno)));
  	      error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerDup,
  	        "Could not prepare for external pager(dup()-%s)."),
! 		error_description(errno));	
! 	      _exit(errno);
  	    }
  	    close(pipe_fd[0]);	/* original pipe fd no longer needed */
  
  	    /* use stdio on new pipe fd */
  	    if(fdopen(new_pipe_fd, "r") == NULL) {
  	      dprint(1,
  		(debugfile, "Error: child fdopen failed, errno %s (show_msg)\n",
! 		error_description(errno)));
  	      error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerChildFdopen,
  		"Could not prepare for external pager(child fdopen()-%s)."),
! 		error_description(errno));	
! 	      _exit(errno);
  	    }
  
  	    /* now execute pager and exit */
--- 238,263 ----
  	    close(pipe_fd[1]);
  	    close(fileno(stdin));
  	    if((new_pipe_fd = dup(pipe_fd[0])) == -1) {
+ 	      err = errno;
  	      dprint(1, (debugfile, "Error: dup failed, errno %s (show_msg)\n",
! 		error_description(err)));
  	      error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerDup,
  	        "Could not prepare for external pager(dup()-%s)."),
! 		error_description(err));	
! 	      _exit(err);
  	    }
  	    close(pipe_fd[0]);	/* original pipe fd no longer needed */
  
  	    /* use stdio on new pipe fd */
  	    if(fdopen(new_pipe_fd, "r") == NULL) {
+ 	      err = errno;
  	      dprint(1,
  		(debugfile, "Error: child fdopen failed, errno %s (show_msg)\n",
! 		error_description(err)));
  	      error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerChildFdopen,
  		"Could not prepare for external pager(child fdopen()-%s)."),
! 		error_description(err));	
! 	      _exit(err);
  	    }
  
  	    /* now execute pager and exit */
***************
*** 256,267 ****
  	  close(pipe_fd[0]);
  
  	  if((pipe_wr_fp = fdopen(pipe_fd[1], "w")) == NULL) {
  	    dprint(1,
  	      (debugfile, "Error: parent fdopen failed, errno %s (show_msg)\n",
! 	      error_description(errno)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerParentFdopen,
  	      "Could not prepare for external pager(parent fdopen()-%s)."),
! 	      error_description(errno));	
  
  	    /* Failure - must close pipe and wait for child */
  	    close(pipe_fd[1]);
--- 276,288 ----
  	  close(pipe_fd[0]);
  
  	  if((pipe_wr_fp = fdopen(pipe_fd[1], "w")) == NULL) {
+ 	    err = errno;
  	    dprint(1,
  	      (debugfile, "Error: parent fdopen failed, errno %s (show_msg)\n",
! 	      error_description(err)));
  	    error1(catgets(elm_msg_cat, ElmSet, ElmPreparePagerParentFdopen,
  	      "Could not prepare for external pager(parent fdopen()-%s)."),
! 	      error_description(err));	
  
  	    /* Failure - must close pipe and wait for child */
  	    close(pipe_fd[1]);

Index: src/showmsg_c.c
Prereq: 5.2
*** ../elm2.4/src/showmsg_c.c	Tue Nov 10 15:20:30 1992
--- src/showmsg_c.c	Wed Nov 25 19:46:45 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: showmsg_c.c,v 5.2 1992/11/07 19:37:21 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.2 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: showmsg_c.c,v 5.3 1992/11/26 00:46:13 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: showmsg_c.c,v $
+  * Revision 5.3  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.2  1992/11/07  19:37:21  syd
   * Enhanced printing support.  Added "-I" to readmsg to
   * suppress spurious diagnostic messages.
***************
*** 243,249 ****
  
  	    case 'X' : put_cmd_name(catgets(elm_msg_cat, ElmSet, ElmQuickExit,
  				"Quick Exit"), TRUE);
! 		       leave();
  		       break;
  
  	    case 'x' : put_cmd_name(catgets(elm_msg_cat, ElmSet, ElmExit, "Exit"), TRUE);
--- 248,254 ----
  
  	    case 'X' : put_cmd_name(catgets(elm_msg_cat, ElmSet, ElmQuickExit,
  				"Quick Exit"), TRUE);
! 		       leave(0);
  		       break;
  
  	    case 'x' : put_cmd_name(catgets(elm_msg_cat, ElmSet, ElmExit, "Exit"), TRUE);

Index: src/signals.c
Prereq: 5.3
*** ../elm2.4/src/signals.c	Tue Oct 27 11:17:32 1992
--- src/signals.c	Thu Dec 10 21:40:04 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: signals.c,v 5.3 1992/10/27 01:43:40 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: signals.c,v 5.6 1992/12/11 02:39:53 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,32 ----
   *
   *******************************************************************************
   * $Log: signals.c,v $
+  * Revision 5.6  1992/12/11  02:39:53  syd
+  * A try at making USR? not loose mailbox
+  *
+  * Revision 5.5  1992/12/07  02:41:21  syd
+  * This implements the use of SIGUSR1 and SIGUSR2 as discussed on the
+  * mailing list recently, and adds them to the documentation.
+  * From: scs@lokkur.dexter.mi.us (Steve Simmons)
+  *
+  * Revision 5.4  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.3  1992/10/27  01:43:40  syd
   * Move posix_signal to lib directory
   * From: tom@osf.org
***************
*** 43,49 ****
  quit_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGQUIT **\n\n\n\n"));
! 	leave();
  }
  
  SIGHAND_TYPE
--- 56,62 ----
  quit_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGQUIT **\n\n\n\n"));
! 	leave(0);
  }
  
  SIGHAND_TYPE
***************
*** 50,56 ****
  hup_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGHUP **\n\n\n\n"));
! 	leave();
  }
  
  SIGHAND_TYPE
--- 63,69 ----
  hup_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGHUP **\n\n\n\n"));
! 	leave(0);
  }
  
  SIGHAND_TYPE
***************
*** 57,70 ****
  term_signal(sig) 
  {
  	dprint(1, (debugfile, "\n\n** Received SIGTERM **\n\n\n\n"));
! 	leave();
  }
  
  SIGHAND_TYPE
  ill_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGILL **\n\n\n\n"));
! 	PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmIllegalInstructionSignal,
  		"\n\nIllegal Instruction signal!\n\n"));
  	emergency_exit();
  }
--- 70,85 ----
  term_signal(sig) 
  {
  	dprint(1, (debugfile, "\n\n** Received SIGTERM **\n\n\n\n"));
! 	leave(0);
  }
  
  SIGHAND_TYPE
  ill_signal(sig)
  {
+ 	MoveCursor(LINES,0);
+ 	Raw(OFF);
  	dprint(1, (debugfile, "\n\n** Received SIGILL **\n\n\n\n"));
! 	printf(catgets(elm_msg_cat, ElmSet, ElmIllegalInstructionSignal,
  		"\n\nIllegal Instruction signal!\n\n"));
  	emergency_exit();
  }
***************
*** 72,79 ****
  SIGHAND_TYPE
  fpe_signal(sig)  
  {
  	dprint(1, (debugfile, "\n\n** Received SIGFPE **\n\n\n\n"));
! 	PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmFloatingPointSignal,
  		"\n\nFloating Point Exception signal!\n\n"));
  	emergency_exit();
  }
--- 87,96 ----
  SIGHAND_TYPE
  fpe_signal(sig)  
  {
+ 	MoveCursor(LINES,0);
+ 	Raw(OFF);
  	dprint(1, (debugfile, "\n\n** Received SIGFPE **\n\n\n\n"));
! 	printf(catgets(elm_msg_cat, ElmSet, ElmFloatingPointSignal,
  		"\n\nFloating Point Exception signal!\n\n"));
  	emergency_exit();
  }
***************
*** 81,88 ****
  SIGHAND_TYPE
  bus_signal(sig)
  {
  	dprint(1, (debugfile, "\n\n** Received SIGBUS **\n\n\n\n"));
! 	PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmBusErrorSignal,
  		"\n\nBus Error signal!\n\n"));
  	emergency_exit();
  }
--- 98,107 ----
  SIGHAND_TYPE
  bus_signal(sig)
  {
+ 	MoveCursor(LINES,0);
+ 	Raw(OFF);
  	dprint(1, (debugfile, "\n\n** Received SIGBUS **\n\n\n\n"));
! 	printf(catgets(elm_msg_cat, ElmSet, ElmBusErrorSignal,
  		"\n\nBus Error signal!\n\n"));
  	emergency_exit();
  }
***************
*** 90,97 ****
  SIGHAND_TYPE
  segv_signal(sig)
  {
  	dprint(1, (debugfile,"\n\n** Received SIGSEGV **\n\n\n\n"));
! 	PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmSegmentViolationSignal,
  		"\n\nSegment Violation signal!\n\n"));
  	emergency_exit();
  }
--- 109,118 ----
  SIGHAND_TYPE
  segv_signal(sig)
  {
+ 	MoveCursor(LINES,0);
+ 	Raw(OFF);
  	dprint(1, (debugfile,"\n\n** Received SIGSEGV **\n\n\n\n"));
! 	printf(catgets(elm_msg_cat, ElmSet, ElmSegmentViolationSignal,
  		"\n\nSegment Violation signal!\n\n"));
  	emergency_exit();
  }
***************
*** 176,178 ****
--- 197,221 ----
  	resize_screen = 1;
  }
  #endif
+ 
+ SIGHAND_TYPE
+ usr1_signal(sig)
+ {
+ 	dprint(1, (debugfile, "\n\n** Received SIGUSR1 **\n\n\n\n"));
+ 	question_me = FALSE;
+ 	while ( leave_mbox(TRUE, FALSE, TRUE) == -1)
+ 		newmbox(cur_folder, TRUE);
+ 
+ 	leave(0);
+ }
+ 
+ SIGHAND_TYPE
+ usr2_signal(sig)
+ {
+ 	dprint(1, (debugfile, "\n\n** Received SIGUSR2 **\n\n\n\n"));
+ 	question_me = FALSE;
+ 	while ( leave_mbox(TRUE, FALSE, TRUE) == -1)
+ 		newmbox(cur_folder, TRUE);
+ 
+ 	quit(FALSE);
+ }

Index: src/syscall.c
Prereq: 5.3
*** ../elm2.4/src/syscall.c	Tue Nov 10 15:20:30 1992
--- src/syscall.c	Thu Dec 10 21:05:26 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: syscall.c,v 5.3 1992/11/07 20:45:39 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: syscall.c,v 5.5 1992/12/11 02:05:26 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,29 ----
   *
   *******************************************************************************
   * $Log: syscall.c,v $
+  * Revision 5.5  1992/12/11  02:05:26  syd
+  * List_folder knew only about '=' but nothing about the rest
+  * of [+=%] as one would have expected.
+  * From: Jukka Antero Ukkonen <ukkonen@venus.csc.fi>
+  *
+  * Revision 5.4  1992/12/11  01:58:50  syd
+  * Allow for use from restricted shell by putting SHELL=/bin/sh in the
+  * environment of spawned mail transport program.
+  * From: chip@tct.com (Chip Salzenberg)
+  *
   * Revision 5.3  1992/11/07  20:45:39  syd
   * add no tite flag on options that should not use ti/te
   * Hack by Syd
***************
*** 122,127 ****
--- 132,142 ----
  				"shell" instead of "/bin/sh" for the
  				shell escape.
  
+ 	    SY_ENV_SHELL	When set, put "SHELL=[name-of-shell]" in
+ 				the child's environment.  This hack makes
+ 				mail transport programs work right even
+ 				for users with restricted shells.
+ 
  	    SY_ENAB_SIGHUP	When set, we will set SIGHUP, SIGTSTP, and
  				SIGCONT to their default behaviour during
  				the shell escape rather than ignoring them.
***************
*** 234,239 ****
--- 249,264 ----
  	  (void) signal(SIGCONT, (options&SY_ENAB_SIGHUP) ? SIG_DFL : SIG_IGN);
  #endif
  
+ 	  /* Optionally override the SHELL environment variable. */
+ 	  if (options&SY_ENV_SHELL) {
+ 	    static char sheq[] = "SHELL=";
+ 	    char *p = malloc(sizeof(sheq) + strlen(sh));
+ 	    if (p) {
+ 	      sprintf(p, "%s%s", sheq, sh);
+ 	      putenv(p);
+ 	    }
+ 	  }
+ 
  	  /* Go for it. */
  	  if (string) execl(sh, argv_zero(sh), "-c", string, (char *) 0);
  	  else execl(sh, argv_zero(sh), (char *) 0);
***************
*** 497,503 ****
  	}
  	else
  	{
! 	  if ( *wildcard == '=' )
  	  {
  	    sprintf(buffer, "cd %s;ls -C %s", folders, wildcard+1);
  	    printf(catgets(elm_msg_cat, ElmSet, ElmFoldersWhichMatch,
--- 522,529 ----
  	}
  	else
  	{
! 	  if (( *wildcard == '=' ) ||
! 	      ( *wildcard == '+' ) || ( *wildcard == '%' ))
  	  {
  	    sprintf(buffer, "cd %s;ls -C %s", folders, wildcard+1);
  	    printf(catgets(elm_msg_cat, ElmSet, ElmFoldersWhichMatch,

Index: src/utils.c
Prereq: 5.1
*** ../elm2.4/src/utils.c	Sat Oct  3 18:59:22 1992
--- src/utils.c	Thu Dec 10 20:45:39 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: utils.c,v 5.1 1992/10/03 22:58:40 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.1 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: utils.c,v 5.4 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,33 ----
   *
   *******************************************************************************
   * $Log: utils.c,v $
+  * Revision 5.4  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.3  1992/12/07  04:30:37  syd
+  * fix missing brace on do_cursor calls
+  * From: Syd
+  *
+  * Revision 5.2  1992/11/26  00:46:13  syd
+  * changes to first change screen back (Raw off) and then issue final
+  * error message.
+  * From: Syd
+  *
   * Revision 5.1  1992/10/03  22:58:40  syd
   * Initial checkin as of 2.4 Release at PL0
   *
***************
*** 26,32 ****
  
  #include "headers.h"
  #include "s_elm.h"
- #include <sys/types.h>
  #include <sys/stat.h>
  #include <ctype.h>
  #include <errno.h>
--- 40,45 ----
***************
*** 133,138 ****
--- 146,153 ----
  {
  	/** used in dramatic cases when we must leave without altering
  	    ANYTHING about the system... **/
+ 	int do_cursor = RawState();
+ 
  	char *mk_lockname();
  
  	dprint(1, (debugfile,
***************
*** 146,159 ****
  	dprint(1, (debugfile,
  	     "     The composition file : %s%s%d\n", temp_dir, temp_file, getpid()));
  
- 	Raw(OFF);
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
! 	if (cursor_control)
  	  MoveCursor(LINES, 0);
  
! 	PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmEmergencyExitTaken,
  		"\nEmergency exit taken! All temp files intact!\n\n"));
  
  	exit(1);
--- 161,175 ----
  	dprint(1, (debugfile,
  	     "     The composition file : %s%s%d\n", temp_dir, temp_file, getpid()));
  
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
! 	if (do_cursor) {
! 	  Raw(OFF);
  	  MoveCursor(LINES, 0);
+ 	  }
  
! 	printf(catgets(elm_msg_cat, ElmSet, ElmEmergencyExitTaken,
  		"\nEmergency exit taken! All temp files intact!\n\n"));
  
  	exit(1);
***************
*** 161,170 ****
  rm_temps_exit()
  {
        char buffer[SLEN];
        PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmWriteFailedExitingIntact,
           "\nWrite to temp file failed, exiting leaving mailbox intact!\n\n"));
        dprint(2, (debugfile, "\nrm_temps_exit, deleteing temp files\n"));
!       Raw(OFF);
        if (cursor_control)  transmit_functions(OFF);
        if (hp_terminal)     softkeys_off();
        sprintf(buffer,"%s%d",temp_file, getpid());  /* editor buffer */
--- 177,188 ----
  rm_temps_exit()
  {
        char buffer[SLEN];
+       int do_cursor = RawState();
+ 
        PutLine0(LINES, 0, catgets(elm_msg_cat, ElmSet, ElmWriteFailedExitingIntact,
           "\nWrite to temp file failed, exiting leaving mailbox intact!\n\n"));
        dprint(2, (debugfile, "\nrm_temps_exit, deleteing temp files\n"));
! 
        if (cursor_control)  transmit_functions(OFF);
        if (hp_terminal)     softkeys_off();
        sprintf(buffer,"%s%d",temp_file, getpid());  /* editor buffer */
***************
*** 173,181 ****
          (void) unlink(cur_tempfolder);
        }
        unlock();                               /* remove lock file if any */
!       if(!batch_only) {
          MoveCursor(LINES,0);
          NewLine();
        }
        exit(1);
  }
--- 191,200 ----
          (void) unlink(cur_tempfolder);
        }
        unlock();                               /* remove lock file if any */
!       if(do_cursor) {
          MoveCursor(LINES,0);
          NewLine();
+         Raw(OFF);
        }
        exit(1);
  }
***************
*** 187,196 ****
  int val;	/* not used, placeholder for signal catching! */
  {
  	char buffer[SLEN];
  
  	dprint(2, (debugfile, "\nLeaving mailer normally (leave)\n"));
  
- 	Raw(OFF);
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
--- 206,215 ----
  int val;	/* not used, placeholder for signal catching! */
  {
  	char buffer[SLEN];
+ 	int do_cursor = RawState();
  
  	dprint(2, (debugfile, "\nLeaving mailer normally (leave)\n"));
  
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
***************
*** 203,211 ****
  
  	unlock();				/* remove lock file if any */
  
! 	if(!batch_only) {
  	  MoveCursor(LINES,0);
  	  NewLine();
  	}
  
  	exit(0);
--- 222,231 ----
  
  	unlock();				/* remove lock file if any */
  
! 	if (do_cursor) {
  	  MoveCursor(LINES,0);
  	  NewLine();
+ 	  Raw(OFF);
  	}
  
  	exit(0);
***************
*** 218,227 ****
  	    temp mail file and one already exists!!
  	**/
  	char buffer[SLEN];
  
  	dprint(2, (debugfile, "\nLeaving mailer quietly (silently_exit)\n"));
  
- 	Raw(OFF);
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
--- 238,247 ----
  	    temp mail file and one already exists!!
  	**/
  	char buffer[SLEN];
+ 	int do_cursor = RawState();
  
  	dprint(2, (debugfile, "\nLeaving mailer quietly (silently_exit)\n"));
  
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
***************
*** 228,235 ****
  	sprintf(buffer,"%s%s%d", temp_dir, temp_file, getpid());  /* editor buffer */
  	(void) unlink(buffer);
  
! 	MoveCursor(LINES,0);
! 	NewLine();
  
  	exit(0);
  }
--- 248,258 ----
  	sprintf(buffer,"%s%s%d", temp_dir, temp_file, getpid());  /* editor buffer */
  	(void) unlink(buffer);
  
! 	if (do_cursor) {
! 	  MoveCursor(LINES,0);
! 	  NewLine();
! 	  Raw(OFF);
! 	}
  
  	exit(0);
  }
***************
*** 243,253 ****
  	/** same as leave routine, but don't disturb lock file **/
  
  	char buffer[SLEN];
  
          dprint(3, (debugfile,
  	    "\nLeaving mailer due to presence of lock file (leave_locked)\n"));
  
- 	Raw(OFF);
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
--- 266,276 ----
  	/** same as leave routine, but don't disturb lock file **/
  
  	char buffer[SLEN];
+         int do_cursor = RawState();
  
          dprint(3, (debugfile,
  	    "\nLeaving mailer due to presence of lock file (leave_locked)\n"));
  
  	if (cursor_control)  transmit_functions(OFF);
  	if (hp_terminal)     softkeys_off();
  
***************
*** 256,263 ****
  
  	(void) unlink(cur_tempfolder);			/* temp mailbox */
  
! 	MoveCursor(LINES,0);
! 	NewLine();
  	exit(0);
  }
  #endif
--- 279,290 ----
  
  	(void) unlink(cur_tempfolder);			/* temp mailbox */
  
! 	if (do_cursor) {
! 	  MoveCursor(LINES,0);
! 	  NewLine();
! 	  Raw(OFF);
! 	}
! 
  	exit(0);
  }
  #endif

Index: src/wildcards.c
Prereq: 5.3
*** ../elm2.4/src/wildcards.c	Mon Nov  2 15:51:50 1992
--- src/wildcards.c	Thu Dec 10 20:45:40 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: wildcards.c,v 5.3 1992/10/31 18:59:24 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: wildcards.c,v 5.5 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,28 ----
   *
   *******************************************************************************
   * $Log: wildcards.c,v $
+  * Revision 5.5  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.4  1992/12/07  05:00:39  syd
+  * Add include of sys/types.h for time_t
+  * From: Syd
+  *
   * Revision 5.3  1992/10/31  18:59:24  syd
   * Prevent index underflow when wildchar is in first three chars of string
   * From: Syd via note from gwh@dogmatix.inmos.co.uk
***************
*** 33,40 ****
   * Wildcard handling module for elm.
   */
  
! # include	<stdio.h>
! # include	"defs.h"
  
  /*
   * Common wildcards.  Note that we count space as a wildcard, for
--- 42,49 ----
   * Wildcard handling module for elm.
   */
  
! #include <stdio.h>
! #include "defs.h"
  
  /*
   * Common wildcards.  Note that we count space as a wildcard, for

Index: utils/arepdaem.c
Prereq: 5.5
*** ../elm2.4/utils/arepdaem.c	Tue Nov 10 15:20:30 1992
--- utils/arepdaem.c	Thu Dec 10 20:45:40 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: arepdaem.c,v 5.5 1992/11/07 20:05:52 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: arepdaem.c,v 5.9 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.9 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,37 ----
   *
   *******************************************************************************
   * $Log: arepdaem.c,v $
+  * Revision 5.9  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
+  * Revision 5.8  1992/12/07  04:21:58  syd
+  * add missing err declares
+  * From: Syd
+  *
+  * Revision 5.7  1992/12/07  03:00:27  syd
+  * Fix long -> time_t
+  * From: Syd
+  *
+  * Revision 5.6  1992/11/26  00:46:50  syd
+  * Fix how errno is used so err is inited and used instead
+  * as errno gets overwritten by print system call
+  * From: Syd
+  *
   * Revision 5.5  1992/11/07  20:05:52  syd
   * change to use header_cmp to allow for linear white space around the colon
   * From: Syd
***************
*** 75,83 ****
  # include <time.h>
  #endif
  
- #include <sys/types.h>
  #include <sys/stat.h>
  #include <ctype.h>
  
  #define arep_lock_file	"LCK..arep"
  
--- 93,101 ----
  # include <time.h>
  #endif
  
  #include <sys/stat.h>
  #include <ctype.h>
+ #include <errno.h>
  
  #define arep_lock_file	"LCK..arep"
  
***************
*** 121,126 ****
--- 139,146 ----
  
  SIGHAND_TYPE	term_signal();
  
+ extern int errno;	/* system error number! */
+ 
  main()
  {
  	long size;
***************
*** 442,457 ****
  	/** return the number of bytes in the specified file.  This
  	    is to check to see if new mail has arrived....  **/
  
! 	int ok = 1;
! 	extern int errno;	/* system error number! */
  	struct stat buffer;
  
  	if (stat(name, &buffer) != 0)
  	  if (errno != 2) {
  	   unlock();
  	   exit(MCfprintf(stderr, catgets(elm_msg_cat, ArepdaemSet,
  	     ArepdaemErrFstat, "Error %d attempting fstat on %s"),
! 	       errno, name));
  	  }
  	  else
  	    ok = 0;
--- 462,477 ----
  	/** return the number of bytes in the specified file.  This
  	    is to check to see if new mail has arrived....  **/
  
! 	int ok = 1, err;
  	struct stat buffer;
  
  	if (stat(name, &buffer) != 0)
  	  if (errno != 2) {
+ 	   err = errno;
  	   unlock();
  	   exit(MCfprintf(stderr, catgets(elm_msg_cat, ArepdaemSet,
  	     ArepdaemErrFstat, "Error %d attempting fstat on %s"),
! 	       err, name));
  	  }
  	  else
  	    ok = 0;
***************
*** 466,481 ****
  	/** return the modification time in the specified file.
  	    This is to check to see if autoreply has changed....  **/
  
! 	int ok = 1;
! 	extern int errno;	/* system error number! */
  	struct stat buffer;
  
  	if (stat(name, &buffer) != 0)
  	  if (errno != 2) {
  	   unlock();
  	   exit(MCfprintf(stderr, catgets(elm_msg_cat, ArepdaemSet,
  	     ArepdaemErrFstat, "Error %d attempting fstat on %s"),
! 	       errno, name));
  	  }
  	  else
  	    ok = 0;
--- 486,501 ----
  	/** return the modification time in the specified file.
  	    This is to check to see if autoreply has changed....  **/
  
! 	int ok = 1, err;
  	struct stat buffer;
  
  	if (stat(name, &buffer) != 0)
  	  if (errno != 2) {
+ 	   err = errno;
  	   unlock();
  	   exit(MCfprintf(stderr, catgets(elm_msg_cat, ArepdaemSet,
  	     ArepdaemErrFstat, "Error %d attempting fstat on %s"),
! 	       err, name));
  	  }
  	  else
  	    ok = 0;
***************
*** 508,514 ****
  	**/
  
  	struct tm *thetime;
! 	long	  clock;
  #ifndef	_POSIX_SOURCE
  	struct tm *localtime(); 
  	time_t     time();
--- 528,534 ----
  	**/
  
  	struct tm *thetime;
! 	time_t	  clock;
  #ifndef	_POSIX_SOURCE
  	struct tm *localtime(); 
  	time_t     time();
***************
*** 559,566 ****
  {
  	char lock_name[SLEN];		/* name of lock file  */
  	char pid_buffer[SHORT];
! 	int pid, create_fd;
! 	extern int errno;	/* system error number! */
  
  	sprintf(lock_name, "%s/%s", LOCK_DIR, arep_lock_file);
  #ifdef PIDCHECK
--- 579,585 ----
  {
  	char lock_name[SLEN];		/* name of lock file  */
  	char pid_buffer[SHORT];
! 	int pid, create_fd, err;
  
  	sprintf(lock_name, "%s/%s", LOCK_DIR, arep_lock_file);
  #ifdef PIDCHECK
***************
*** 575,584 ****
  	      if (kill(pid, 0)) {
  	        close(create_fd);
  	        if (unlink(lock_name) != 0) {
  		    MCprintf(catgets(elm_msg_cat, ArepdaemSet,
  		    ArepdaemErrUnlink,
  		    "Error %s\n\ttrying to unlink file %s (%s)\n"), 
! 		    error_description(errno), lock_name, "lock");
  		    return(0);
  	        }
  	      } else /* kill pid check succeeded */
--- 594,604 ----
  	      if (kill(pid, 0)) {
  	        close(create_fd);
  	        if (unlink(lock_name) != 0) {
+ 		    err = errno;
  		    MCprintf(catgets(elm_msg_cat, ArepdaemSet,
  		    ArepdaemErrUnlink,
  		    "Error %s\n\ttrying to unlink file %s (%s)\n"), 
! 		    error_description(err), lock_name, "lock");
  		    return(0);
  	        }
  	      } else /* kill pid check succeeded */

Index: utils/autoreply.c
Prereq: 5.1
*** ../elm2.4/utils/autoreply.c	Sat Oct  3 20:46:58 1992
--- utils/autoreply.c	Thu Dec 10 20:45:41 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: autoreply.c,v 5.1 1992/10/04 00:46:45 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.1 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: autoreply.c,v 5.2 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.2 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: autoreply.c,v $
+  * Revision 5.2  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
   * Revision 5.1  1992/10/04  00:46:45  syd
   * Initial checkin as of 2.4 Release at PL0
   *
***************
*** 33,39 ****
  
  #include "elmutil.h"
  #include "s_autoreply.h"
- #include <sys/types.h>
  #include <sys/stat.h>
  
  #ifdef PWDINSYS
--- 38,43 ----

Index: utils/from.c
Prereq: 5.3
*** ../elm2.4/utils/from.c	Tue Nov 10 15:20:30 1992
--- utils/from.c	Thu Dec 10 20:45:42 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: from.c,v 5.3 1992/11/07 21:03:33 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: from.c,v 5.4 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: from.c,v $
+  * Revision 5.4  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
   * Revision 5.3  1992/11/07  21:03:33  syd
   * fix typo
   *
***************
*** 40,46 ****
  #else
  #  include <pwd.h>
  #endif
- #include <sys/types.h>
  #include <sys/stat.h>
  
  #define LINEFEED	(char) 10
--- 45,50 ----

Index: utils/newmail.c
Prereq: 5.6
*** ../elm2.4/utils/newmail.c	Tue Nov 17 15:21:03 1992
--- utils/newmail.c	Thu Dec 10 20:45:43 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: newmail.c,v 5.6 1992/11/17 19:23:28 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: newmail.c,v 5.7 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.7 $   $State: Exp $
   *
   * 			Copyright (c) 1988-1992 USENET Community Trust
   * 			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: newmail.c,v $
+  * Revision 5.7  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
   * Revision 5.6  1992/11/17  19:23:28  syd
   * add blank after priority to
   *
***************
*** 93,99 ****
  #else
  #  include <pwd.h>
  #endif
- #include <sys/types.h>
  #include <sys/stat.h>
  
  #define LINEFEED		(char) 10
--- 98,103 ----

Index: utils/readmsg.c
Prereq: 5.2
*** ../elm2.4/utils/readmsg.c	Tue Nov 10 15:20:31 1992
--- utils/readmsg.c	Thu Dec 10 20:45:45 1992
***************
*** 1,8 ****
  
! static char rcsid[] = "@(#)$Id: readmsg.c,v 5.2 1992/11/07 19:37:21 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.2 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
--- 1,8 ----
  
! static char rcsid[] = "@(#)$Id: readmsg.c,v 5.3 1992/12/11 01:45:04 syd Exp $";
  
  /*******************************************************************************
!  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
   *
   *			Copyright (c) 1988-1992 USENET Community Trust
   *			Copyright (c) 1986,1987 Dave Taylor
***************
*** 14,19 ****
--- 14,24 ----
   *
   *******************************************************************************
   * $Log: readmsg.c,v $
+  * Revision 5.3  1992/12/11  01:45:04  syd
+  * remove sys/types.h include, it is now included by defs.h
+  * and this routine includes defs.h or indirectly includes defs.h
+  * From: Syd
+  *
   * Revision 5.2  1992/11/07  19:37:21  syd
   * Enhanced printing support.  Added "-I" to readmsg to
   * suppress spurious diagnostic messages.
***************
*** 80,86 ****
  
  #include "elmutil.h"
  #include "s_readmsg.h"
- #include <sys/types.h>
  #include <ctype.h>
  
  /** three defines for what level of headers to display **/
--- 85,90 ----

-- 
========================================================================
Sydney S. Weinstein, CDP, CCP          Elm Coordinator - Current 2.4PL17
Datacomp Systems, Inc.                 Projected 3.0 Release: ??? ?,1994
syd@DSI.COM or dsinc!syd      Voice: (215) 947-9900, FAX: (215) 938-0235
Newsgroups: comp.mail.elm