*BSD News Article 5396


Return to BSD News archive

Path: sserve!manuel!munnari.oz.au!uunet!ogicse!psgrain!hippo!csir.co.za!paul
From: paul@csir.co.za (Paul Nash)
Newsgroups: comp.unix.bsd
Subject: [386bsd] patches for elm 2.2 pl 8
Keywords: patches ELM old very-old obsolete it-works!
Message-ID: <paul.717154190@tantrum.csir.co.za>
Date: 22 Sep 92 09:29:50 GMT
Article-I.D.: tantrum.paul.717154190
Sender: usenet@nuustak.csir.co.za (Jim the Netnews Poster)
Organization: Infotek, CSIR
Lines: 1922

Here are a few (again, much-requested) patches for elm 2.2 pl8.  I _know_
that this is terribly old, that there are newer versions, that I should
use Pine, and so on, but it _does_ work.

The changes are quite minor:  make doesn't like '-' sans options (as in
"make -${OPTIONS} target" with "OPTIONS=").  Elm #undefs the BSD toupper
and tolower, but doesn't use its own -- I just did a global rename to
"elm_to{upper,lower}", which works.  I suppose that I should have made
the BSD versions work instead, but it was late.

These are _terribly_ inelegant, and are for an out-of-date version of
Elm.  Use at your own risk!  Your mileage will definitely vary :-)

	paul

*** ./utils/Makefile	Sun Dec 29 12:19:15 1991
--- ../elm/./utils/Makefile	Wed Sep  9 14:50:14 1992
***************
*** 26,47 ****
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	 
! CHMOD		=	/bin/chmod
! CP		=	/bin/cp
  DEST		=	/usr/local/bin
! ECHO		=	/bin/echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	-lcurses 
! LINT		=	/usr/bin/lint
! LN		=	/bin/ln
! MAKE		=	/usr/local/bin/make
! MV		=	/bin/mv
  OPTIMIZE	=	-O
! RM		= 	/bin/rm -f
! TOUCH		=	/bin/touch
  #	Variables you may want to manually edit
  #		If you want debug logging then you'll
  #		want to uncomment the following.
--- 26,47 ----
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	-traditional 
! CHMOD		=	chmod
! CP		=	cp
  DEST		=	/usr/local/bin
! ECHO		=	echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	-ltermlib 
! LINT		=	lint
! LN		=	ln
! MAKE		=	make
! MV		=	mv
  OPTIMIZE	=	-O
! RM		= 	rm -f
! TOUCH		=	touch
  #	Variables you may want to manually edit
  #		If you want debug logging then you'll
  #		want to uncomment the following.
*** ./src/Makefile	Sun Dec 29 12:19:13 1991
--- ../elm/./src/Makefile	Wed Sep  9 14:50:11 1992
***************
*** 25,47 ****
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	 
! CHGRP		=	/bin/chgrp
! CHMOD		=	/bin/chmod
! CP		=	/bin/cp
  DEST		=	/usr/local/bin
! ECHO		=	/bin/echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	 -lcurses 
! LINT		=	/usr/bin/lint
! MAILGRP		=	asg
  MAILERMODE	=	2755
! MV		=	/bin/mv
  OPTIMIZE	=	-O
! RM		= 	/bin/rm -f
! TOUCH		=	/bin/touch
  
  
  #	Variables you may want to manually edit
--- 25,47 ----
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	-traditional 
! CHGRP		=	chgrp
! CHMOD		=	chmod
! CP		=	cp
  DEST		=	/usr/local/bin
! ECHO		=	echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	 -ltermlib 
! LINT		=	lint
! MAILGRP		=	mail
  MAILERMODE	=	2755
! MV		=	mv
  OPTIMIZE	=	-O
! RM		= 	rm -f
! TOUCH		=	touch
  
  
  #	Variables you may want to manually edit
*** ./filter/Makefile	Sun Dec 29 12:19:11 1991
--- ../elm/./filter/Makefile	Wed Sep  9 14:50:07 1992
***************
*** 18,41 ****
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	 
! CHGRP		=	/bin/chgrp
! CHMOD		=	/bin/chmod
! CP		=	/bin/cp
  DEST		=	/usr/local/bin
! ECHO		=	/bin/echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	-lcurses 
! LINT		=	/usr/bin/lint
! MAILGRP		=	asg
  MAILERMODE	=	2755
! MAKE		=	/usr/local/bin/make
! MV		=	/bin/mv
  OPTIMIZE	=	-O
! RM		= 	/bin/rm -f
! TOUCH		=	/bin/touch
  
  #	Variables you may want to manually edit
  #		If you want debug logging then you'll
--- 18,41 ----
  # Variables
  #	Variables established by Configure
  CC		=	cc
! CCFLAGS		=	-traditional 
! CHGRP		=	chgrp
! CHMOD		=	chmod
! CP		=	cp
  DEST		=	/usr/local/bin
! ECHO		=	echo
  LFLAGS		=	 
  LIB		=	/usr/local/lib
  LIB2		= 	
! LIBS		=	-ltermlib 
! LINT		=	lint
! MAILGRP		=	mail
  MAILERMODE	=	2755
! MAKE		=	make
! MV		=	mv
  OPTIMIZE	=	-O
! RM		= 	rm -f
! TOUCH		=	touch
  
  #	Variables you may want to manually edit
  #		If you want debug logging then you'll
*** ./doc/Makefile	Sun Dec 29 12:19:09 1991
--- ../elm/./doc/Makefile	Wed Sep  9 14:50:06 1992
***************
*** 16,32 ****
  #
  # Variables
  #	Variables established by Configure
! CHMOD		=	/bin/chmod
! CP		=	/bin/cp
  DEST		=	/usr/local/bin
! ECHO		=	/bin/echo
! FORMATTER	=	/usr/local/bin/troff
  LIB		=	/usr/local/lib
! LN		=	/bin/ln
! MAN		=	/usr/man/man1
  MANEXT		=	1
! RM		= 	/bin/rm -f
! TBL       	=	/usr/local/bin/tbl
  
  #	Other variables
  SHELL		=	/bin/sh
--- 16,32 ----
  #
  # Variables
  #	Variables established by Configure
! CHMOD		=	chmod
! CP		=	cp
  DEST		=	/usr/local/bin
! ECHO		=	echo
! FORMATTER	=	/usr/bin/troff
  LIB		=	/usr/local/lib
! LN		=	ln
! MAN		=	
  MANEXT		=	1
! RM		= 	rm -f
! TBL       	=	/usr/bin/tbl
  
  #	Other variables
  SHELL		=	/bin/sh
*** ./Makefile	Sun Dec 29 12:19:08 1991
--- ../elm/./Makefile	Wed Sep  9 14:50:04 1992
***************
*** 20,32 ****
  #
  
  #	Variables established by Configure
! CAT		=	/bin/cat
! GREP		=	/bin/grep
! ECHO		=	/bin/echo
! MAKE		=	/usr/local/bin/make
! PR		=	/bin/pr
! SHAR		=	shar -s 60000
! SLEEP		=	/bin/sleep
  TAR		=	/usr/bin/tar
  TAPE		=	unknown-remote-tape-unit
  
--- 20,32 ----
  #
  
  #	Variables established by Configure
! CAT		=	cat
! GREP		=	grep
! ECHO		=	echo
! MAKE		=	make
! PR		=	/usr/bin/pr
! SHAR		=	/usr/bin/shar -s 60000
! SLEEP		=	sleep
  TAR		=	/usr/bin/tar
  TAPE		=	unknown-remote-tape-unit
  
***************
*** 42,51 ****
  
  #	Targets that are simply executed in each subordinate makefile as is
  all install uninstall lint clean:
! 		cd src; $(MAKE) -$(MAKEFLAGS) $@
! 		cd utils; $(MAKE) -$(MAKEFLAGS) $@
! 		cd filter; $(MAKE) -$(MAKEFLAGS) $@
! 		cd doc; $(MAKE) -$(MAKEFLAGS) $@
  
  #	Targets that apply to all elm at once
  listing:
--- 42,51 ----
  
  #	Targets that are simply executed in each subordinate makefile as is
  all install uninstall lint clean:
! 		cd src; $(MAKE) $(MAKEFLAGS) $@
! 		cd utils; $(MAKE) $(MAKEFLAGS) $@
! 		cd filter; $(MAKE) $(MAKEFLAGS) $@
! 		cd doc; $(MAKE) $(MAKEFLAGS) $@
  
  #	Targets that apply to all elm at once
  listing:
***************
*** 59,68 ****
  		  $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
  		  $(ECHO) "not the case, interrupt this process quickly!";\
  		  $(SLEEP) 10;)
! 		cd src; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd filter; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd utils; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd doc; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  
  rmt-defined:
  	@(if [ "$(REMOTE)" = "" ];\
--- 59,68 ----
  		  $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
  		  $(ECHO) "not the case, interrupt this process quickly!";\
  		  $(SLEEP) 10;)
! 		cd src; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd filter; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd utils; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd doc; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
  
  rmt-defined:
  	@(if [ "$(REMOTE)" = "" ];\
***************
*** 82,91 ****
  
  #	Targets that are really in subordinate make files
  documentation:
! 	cd doc; $(MAKE) -$(MAKEFLAGS) $@
  
  elm:
! 	cd src; $(MAKE) -$(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	filter directory that sits in the current directory, rather than
--- 82,91 ----
  
  #	Targets that are really in subordinate make files
  documentation:
! 	cd doc; $(MAKE) $(MAKEFLAGS) $@
  
  elm:
! 	cd src; $(MAKE) $(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	filter directory that sits in the current directory, rather than
***************
*** 93,99 ****
  filter: _filter
  
  _filter:
! 	cd filter; $(MAKE) -$(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	utils directory that sits in the current directory, rather than
--- 93,99 ----
  filter: _filter
  
  _filter:
! 	cd filter; $(MAKE) $(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	utils directory that sits in the current directory, rather than
***************
*** 101,105 ****
  utils: _utils
  
  _utils:
! 	cd utils; $(MAKE) -$(MAKEFLAGS) all
  
--- 101,105 ----
  utils: _utils
  
  _utils:
! 	cd utils; $(MAKE) $(MAKEFLAGS) all
  
*** ./Makefile.SH	Mon Jul  8 17:15:38 1991
--- ../elm/./Makefile.SH	Sat Sep  5 01:46:32 1992
***************
*** 66,75 ****
  
  #	Targets that are simply executed in each subordinate makefile as is
  all install uninstall lint clean:
! 		cd src; $(MAKE) -$(MAKEFLAGS) $@
! 		cd utils; $(MAKE) -$(MAKEFLAGS) $@
! 		cd filter; $(MAKE) -$(MAKEFLAGS) $@
! 		cd doc; $(MAKE) -$(MAKEFLAGS) $@
  
  #	Targets that apply to all elm at once
  listing:
--- 66,75 ----
  
  #	Targets that are simply executed in each subordinate makefile as is
  all install uninstall lint clean:
! 		cd src; $(MAKE) $(MAKEFLAGS) $@
! 		cd utils; $(MAKE) $(MAKEFLAGS) $@
! 		cd filter; $(MAKE) $(MAKEFLAGS) $@
! 		cd doc; $(MAKE) $(MAKEFLAGS) $@
  
  #	Targets that apply to all elm at once
  listing:
***************
*** 83,92 ****
  		  $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
  		  $(ECHO) "not the case, interrupt this process quickly!";\
  		  $(SLEEP) 10;)
! 		cd src; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd filter; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd utils; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd doc; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  
  rmt-defined:
  	@(if [ "$(REMOTE)" = "" ];\
--- 83,92 ----
  		  $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
  		  $(ECHO) "not the case, interrupt this process quickly!";\
  		  $(SLEEP) 10;)
! 		cd src; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd filter; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd utils; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
! 		cd doc; $(MAKE) $(MAKEFLAGS) REMOTE=$(REMOTE) $@
  
  rmt-defined:
  	@(if [ "$(REMOTE)" = "" ];\
***************
*** 106,115 ****
  
  #	Targets that are really in subordinate make files
  documentation:
! 	cd doc; $(MAKE) -$(MAKEFLAGS) $@
  
  elm:
! 	cd src; $(MAKE) -$(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	filter directory that sits in the current directory, rather than
--- 106,115 ----
  
  #	Targets that are really in subordinate make files
  documentation:
! 	cd doc; $(MAKE) $(MAKEFLAGS) $@
  
  elm:
! 	cd src; $(MAKE) $(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	filter directory that sits in the current directory, rather than
***************
*** 117,123 ****
  filter: _filter
  
  _filter:
! 	cd filter; $(MAKE) -$(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	utils directory that sits in the current directory, rather than
--- 117,123 ----
  filter: _filter
  
  _filter:
! 	cd filter; $(MAKE) $(MAKEFLAGS) all
  
  #	The dummy dependency here prevents make from thinking the target is the
  #	utils directory that sits in the current directory, rather than
***************
*** 125,130 ****
  utils: _utils
  
  _utils:
! 	cd utils; $(MAKE) -$(MAKEFLAGS) all
  
  !NO!SUBS!
--- 125,130 ----
  utils: _utils
  
  _utils:
! 	cd utils; $(MAKE) $(MAKEFLAGS) all
  
  !NO!SUBS!
*** ./src/addr_util.c	Mon Jul  8 17:14:17 1991
--- ../elm/./src/addr_util.c	Mon Sep  7 08:59:58 1992
***************
*** 68,74 ****
  
  	if(*gcoscp == '&') {
  	    for(lncp = logname; *lncp; fncp++, lncp++)
! 		*fncp = toupper(*lncp);
  	} else {
  	    *fncp++ = *gcoscp;
  	}
--- 68,74 ----
  
  	if(*gcoscp == '&') {
  	    for(lncp = logname; *lncp; fncp++, lncp++)
! 		*fncp = elm_toupper(*lncp);
  	} else {
  	    *fncp++ = *gcoscp;
  	}
***************
*** 732,738 ****
  	    second and third in lowercase... **/
  
  	strcpy(entry->month, shift_lower(entry->month));
! 	entry->month[0] = toupper(entry->month[0]);
  }
  
  fix_arpa_address(address)
--- 732,738 ----
  	    second and third in lowercase... **/
  
  	strcpy(entry->month, shift_lower(entry->month));
! 	entry->month[0] = elm_toupper(entry->month[0]);
  }
  
  fix_arpa_address(address)
*** ./src/alias.c	Mon Jul  8 17:10:15 1991
--- ../elm/./src/alias.c	Mon Sep  7 09:05:36 1992
***************
*** 409,415 ****
  	  
  	  dprint(3, (debugfile, "\n-- Alias command: %c\n\n", ch));
  
! 	  switch (tolower(ch)) {
  	    case '?': redraw += alias_help();			break;
  
  	    case 'a': newaliases += add_current_alias();	break;
--- 409,415 ----
  	  
  	  dprint(3, (debugfile, "\n-- Alias command: %c\n\n", ch));
  
! 	  switch (elm_tolower(ch)) {
  	    case '?': redraw += alias_help();			break;
  
  	    case 'a': newaliases += add_current_alias();	break;
***************
*** 542,548 ****
  	}
  
  	while ((ch = ReadCh()) != '.') {
! 	  ch = tolower(ch);
  	  switch(ch) {
  	    case '?' : display_helpfile(ALIAS_HELP);	
  		       redraw++;
--- 542,548 ----
  	}
  
  	while ((ch = ReadCh()) != '.') {
! 	  ch = elm_tolower(ch);
  	  switch(ch) {
  	    case '?' : display_helpfile(ALIAS_HELP);	
  		       redraw++;
*** ./utils/answer.c	Mon Jul  8 17:11:31 1991
--- ../elm/./utils/answer.c	Sat Sep  5 01:55:11 1992
***************
*** 334,341 ****
--- 334,343 ----
  #undef  NULL
  #define NULL			(char *) 0	/* for this routine only   */
  
+ #if defined (NOT_386_BSD)
  extern int strspn();
  extern char *strpbrk();
+ #endif /* defined (NOT_386_BSD) */
  
  char *get_token(string, sepset, depth)
  char *string, *sepset;
*** ./config.h	Sun Dec 29 12:19:07 1991
--- ../elm/./config.h	Wed Sep  9 14:50:02 1992
***************
*** 34,40 ****
   *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
   *	to specify standard input, otherwise the value is "".
   */
! #define CPPSTDIN "/lib/cpp"
  #define CPPMINUS ""
  
  /* index:
--- 34,40 ----
   *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
   *	to specify standard input, otherwise the value is "".
   */
! #define CPPSTDIN "/usr/bin/cpp"
  #define CPPMINUS ""
  
  /* index:
***************
*** 45,52 ****
   *	This preprocessor symbol is defined, along with index, if the system
   *	uses the strchr and strrchr routines instead.
   */
! #define	index strchr	/* cultural */
! #define	rindex strrchr	/*  differences? */
  
  /* MKDIR:
   *	This symbol, if defined, indicates that the mkdir routine is available
--- 45,52 ----
   *	This preprocessor symbol is defined, along with index, if the system
   *	uses the strchr and strrchr routines instead.
   */
! /*#undef	index strchr	/* cultural */
! /*#undef	rindex strrchr	/*  differences? */
  
  /* MKDIR:
   *	This symbol, if defined, indicates that the mkdir routine is available
***************
*** 61,79 ****
   *	The program should be prepared to look up the host name, translate
   *	generic filenames, use PATH, etc.
   */
! /*#undef	PORTABLE	/**/
  
  /* SYMLINK:
   *	This symbol, if defined, indicates that the symlink routine is available
   *	to create symbolic links.
   */
! /*#undef	SYMLINK		/**/
  
  /* vfork:
   *	This symbol, if defined, remaps the vfork routine to fork if the
   *	vfork() routine isn't supported here.
   */
! #define	vfork fork	/**/
  
  /* VOIDSIG:
   *	This symbol is defined if this system declares "void (*signal())()" in
--- 61,79 ----
   *	The program should be prepared to look up the host name, translate
   *	generic filenames, use PATH, etc.
   */
! #define	PORTABLE	/**/
  
  /* SYMLINK:
   *	This symbol, if defined, indicates that the symlink routine is available
   *	to create symbolic links.
   */
! #define	SYMLINK		/**/
  
  /* vfork:
   *	This symbol, if defined, remaps the vfork routine to fork if the
   *	vfork() routine isn't supported here.
   */
! /*#undef	vfork fork	/**/
  
  /* VOIDSIG:
   *	This symbol is defined if this system declares "void (*signal())()" in
***************
*** 110,116 ****
  /* LOCK_BY_FLOCK
   *	This symbol, if defined, indicates that the flock mailbox locking should also be used.
   */
! /*#undef	LOCK_BY_FLOCK		/**/
  
  /* GETHOSTNAME:
   *	This symbol, if defined, indicates that the C program may use the
--- 110,116 ----
  /* LOCK_BY_FLOCK
   *	This symbol, if defined, indicates that the flock mailbox locking should also be used.
   */
! #define	LOCK_BY_FLOCK		/**/
  
  /* GETHOSTNAME:
   *	This symbol, if defined, indicates that the C program may use the
***************
*** 131,139 ****
   *	This symbol, if defined, indicated that the host name is compiled
   *	in from the string hostname
   */
! /*#undef	GETHOSTNAME	/**/
! #define	DOUNAME		/**/
! /*#undef	PHOSTNAME "uuname -l"	/**/
  /*#undef	HOSTCOMPILED	/**/
  
  /* GETOPT:
--- 131,139 ----
   *	This symbol, if defined, indicated that the host name is compiled
   *	in from the string hostname
   */
! #define	GETHOSTNAME	/**/
! /*#undef	DOUNAME		/**/
! /*#undef	PHOSTNAME "hostname"	/**/
  /*#undef	HOSTCOMPILED	/**/
  
  /* GETOPT:
***************
*** 222,228 ****
  /* RENAME:
   *	This symbol, if defined, indicates that the rename() routine exists.
   */
! /*#undef	RENAME		/**/
  
  /* SAVE_GROUP_MAILBOX_ID:
   *	This symbol, if defined, indica;es that Elm needs to restore the
--- 222,228 ----
  /* RENAME:
   *	This symbol, if defined, indicates that the rename() routine exists.
   */
! #define	RENAME		/**/
  
  /* SAVE_GROUP_MAILBOX_ID:
   *	This symbol, if defined, indica;es that Elm needs to restore the
***************
*** 233,239 ****
  /* SIGVEC:
   *	This symbol, if defined, indicates that the sigvec() routine exists.
   */
! /*#undef	SIGVEC		/**/
  
  /* STRINGS:
   *	This symbol, if defined, indicates that the file strings.h
--- 233,239 ----
  /* SIGVEC:
   *	This symbol, if defined, indicates that the sigvec() routine exists.
   */
! #define	SIGVEC		/**/
  
  /* STRINGS:
   *	This symbol, if defined, indicates that the file strings.h
***************
*** 243,249 ****
   *	This symbol, if defined, indicates that the file pwd.h
   *	is in the sys sub directory
   */
! /*#undef	STRINGS		/**/
  /*#undef	PWDINSYS	/**/
  
  /* TEMPNAM:
--- 243,249 ----
   *	This symbol, if defined, indicates that the file pwd.h
   *	is in the sys sub directory
   */
! #define	STRINGS		/**/
  /*#undef	PWDINSYS	/**/
  
  /* TEMPNAM:
***************
*** 256,262 ****
   *	termio.h rather than sgtty.h.  There are also differences in the
   *	ioctl() calls that depend on the value of this symbol.
   */
! #define	TERMIO		/**/
  
  /* TMINSYS:
   *	This symbol is defined if this system declares "struct tm" in
--- 256,262 ----
   *	termio.h rather than sgtty.h.  There are also differences in the
   *	ioctl() calls that depend on the value of this symbol.
   */
! /*#undef	TERMIO		/**/
  
  /* TMINSYS:
   *	This symbol is defined if this system declares "struct tm" in
***************
*** 268,275 ****
   *	This symbol is defined if this system uses tz_minutes west
   *	in time.h instead of timezone.  Only for BSD Systems
   */
! /*#undef	TMINSYS 	/**/
! /*#undef	TZ_MINUTESWEST 	/**/
  
  /* USE_EMBEDDED_ADDRESSES:
   *	This symbol, if defined, indicates that replyto: and from:
--- 268,275 ----
   *	This symbol is defined if this system uses tz_minutes west
   *	in time.h instead of timezone.  Only for BSD Systems
   */
! #define	TMINSYS 	/**/
! #define	TZ_MINUTESWEST 	/**/
  
  /* USE_EMBEDDED_ADDRESSES:
   *	This symbol, if defined, indicates that replyto: and from:
***************
*** 285,291 ****
  /* DEFEDITOR:
   *	This symbol contains the name of the default editor.
   */
! #define DEFEDITOR "/usr/local/bin/j"		/**/
  
  /* MAX_SALIASES:
   *	This symbol defines the number of system wide aliases allowed.
--- 285,291 ----
  /* DEFEDITOR:
   *	This symbol contains the name of the default editor.
   */
! #define DEFEDITOR "/usr/bin/vi"		/**/
  
  /* MAX_SALIASES:
   *	This symbol defines the number of system wide aliases allowed.
***************
*** 293,300 ****
  /* MAX_UALIASES:
   *	This symbol defines the number of per user aliases allowed.
   */
! #define	MAX_SALIASES	503	/* number of system aliases allowed      */
! #define	MAX_UALIASES	251	/* number of user aliases allowed 	 */
  
  /* HOSTNAME:
   *	This symbol contains name of the host the program is going to run on.
--- 293,300 ----
  /* MAX_UALIASES:
   *	This symbol defines the number of per user aliases allowed.
   */
! #define	MAX_SALIASES	223	/* number of system aliases allowed      */
! #define	MAX_UALIASES	127	/* number of user aliases allowed 	 */
  
  /* HOSTNAME:
   *	This symbol contains name of the host the program is going to run on.
***************
*** 309,316 ****
   *	the program.  If the host name is derived from PHOSTNAME, the domain
   *	may or may not already be there, and the program should check.
   */
! #define HOSTNAME "frcs"		/**/
! #define MYDOMAIN ".Alt.ZA"		/**/
  
  /* PASSNAMES:
   *	This symbol, if defined, indicates that full names are stored in
--- 309,316 ----
   *	the program.  If the host name is derived from PHOSTNAME, the domain
   *	may or may not already be there, and the program should check.
   */
! #define HOSTNAME "tantrum"		/**/
! #define MYDOMAIN ".csir.co.za"		/**/
  
  /* PASSNAMES:
   *	This symbol, if defined, indicates that full names are stored in
***************
*** 334,340 ****
   *	This symbol contains the full name of the preferred user shell on this
   *	system.  Usual values are /bin/csh, /bin/ksh, /bin/sh.
   */
! #define PREFSHELL "/bin/ksh"		/**/
  
  /* XENIX:
   *	This symbol, if defined, indicates this is a Xenix system,
--- 334,340 ----
   *	This symbol contains the full name of the preferred user shell on this
   *	system.  Usual values are /bin/csh, /bin/ksh, /bin/sh.
   */
! #define PREFSHELL "/bin/sh"		/**/
  
  /* XENIX:
   *	This symbol, if defined, indicates this is a Xenix system,
***************
*** 344,348 ****
   *	This symbol, if defined, indicates this is a BSD type system,
   */
  /*#undef	XENIX	/**/
! /*#undef	BSD	/**/
  
--- 344,348 ----
   *	This symbol, if defined, indicates this is a BSD type system,
   */
  /*#undef	XENIX	/**/
! #define	BSD	/**/
  
*** ./config.sh	Sun Dec 29 12:19:02 1991
--- ../elm/./config.sh	Wed Sep  9 14:49:57 1992
***************
*** 7,23 ****
  Log='$Log'
  Header='$Header'
  contains='grep'
! cppstdin='/lib/cpp'
  cppminus=''
! d_index='define'
  d_mkdir='define'
! d_portable='undef'
! d_symlink='undef'
! d_vfork='define'
  d_voidsig='define'
  d_whoami='undef'
! n=''
! c='\c'
  package='elm2'
  spitshell='cat'
  shsharp='true'
--- 7,23 ----
  Log='$Log'
  Header='$Header'
  contains='grep'
! cppstdin='/usr/bin/cpp'
  cppminus=''
! d_index='undef'
  d_mkdir='define'
! d_portable='define'
! d_symlink='define'
! d_vfork='undef'
  d_voidsig='define'
  d_whoami='undef'
! n='-n'
! c=''
  package='elm2'
  spitshell='cat'
  shsharp='true'
***************
*** 42,60 ****
  touch
  tr
  '
! expr='/bin/expr'
! sed='/bin/sed'
! echo='/bin/echo'
! cat='/bin/cat'
! rm='/bin/rm'
! mv='/bin/mv'
! cp='/bin/cp'
  tail=''
! tr='/usr/bin/tr'
  mkdir=''
  sort=''
  uniq=''
! grep='/bin/grep'
  trylist='
  Mcc
  cpp
--- 42,60 ----
  touch
  tr
  '
! expr='expr'
! sed='sed'
! echo='echo'
! cat='cat'
! rm='rm'
! mv='mv'
! cp='cp'
  tail=''
! tr='tr'
  mkdir=''
  sort=''
  uniq=''
! grep='grep'
  trylist='
  Mcc
  cpp
***************
*** 84,119 ****
  inews=''
  egrep=''
  more='/usr/bin/more'
! pg='/usr/bin/pg'
  Mcc='Mcc'
! vi='/bin/vi'
! mailx='/usr/bin/mailx'
  mail=''
! cpp='/lib/cpp'
  perl=''
  emacs='emacs'
! ls='/bin/ls'
  rmail='/bin/rmail'
! sendmail='/usr/lib/sendmail'
! shar='shar'
  smail='/usr/local/bin/smail'
! tbl='/usr/local/bin/tbl'
! troff='/usr/local/bin/troff'
! nroff='/usr/local/bin/nroff'
! uname='/bin/uname'
  uuname='/usr/bin/uuname'
! line='/bin/line'
! chgrp='/bin/chgrp'
! chmod='/bin/chmod'
! lint='/usr/bin/lint'
! sleep='/bin/sleep'
! pr='/bin/pr'
  tar='/usr/bin/tar'
! ln='/bin/ln'
  lpr='/usr/bin/lpr'
! lp='/usr/bin/lp'
! touch='/bin/touch'
! make='/usr/local/bin/make'
  bin='/usr/local/bin'
  d_calendar='undef'
  calendar=''
--- 84,119 ----
  inews=''
  egrep=''
  more='/usr/bin/more'
! pg='pg'
  Mcc='Mcc'
! vi='/usr/bin/vi'
! mailx='mailx'
  mail=''
! cpp='/usr/bin/cpp'
  perl=''
  emacs='emacs'
! ls='ls'
  rmail='/bin/rmail'
! sendmail='/usr/local/bin/sendmail'
! shar='/usr/bin/shar'
  smail='/usr/local/bin/smail'
! tbl='/usr/bin/tbl'
! troff='/usr/bin/troff'
! nroff='/usr/bin/nroff'
! uname='uname'
  uuname='/usr/bin/uuname'
! line='line'
! chgrp='chgrp'
! chmod='chmod'
! lint='lint'
! sleep='sleep'
! pr='/usr/bin/pr'
  tar='/usr/bin/tar'
! ln='ln'
  lpr='/usr/bin/lpr'
! lp='lp'
! touch='touch'
! make='make'
  bin='/usr/local/bin'
  d_calendar='undef'
  calendar=''
***************
*** 120,128 ****
  d_crypt='define'
  cryptlib=''
  d_cuserid='undef'
! d_flock='undef'
! d_gethname='undef'
! d_douname='define'
  d_phostname='undef'
  d_host_comp='undef'
  d_getopt='define'
--- 120,128 ----
  d_crypt='define'
  cryptlib=''
  d_cuserid='undef'
! d_flock='define'
! d_gethname='define'
! d_douname='undef'
  d_phostname='undef'
  d_host_comp='undef'
  d_getopt='define'
***************
*** 129,135 ****
  d_havedbm='undef'
  dbm=''
  d_havetlib='define'
! termlib='-lcurses'
  d_internet='define'
  d_mboxedit='undef'
  d_newauto='undef'
--- 129,135 ----
  d_havedbm='undef'
  dbm=''
  d_havetlib='define'
! termlib='-ltermlib'
  d_internet='define'
  d_mboxedit='undef'
  d_newauto='undef'
***************
*** 142,177 ****
  d_nocheckvalid='define'
  d_remlock='undef'
  maxattempts='6'
! d_rename='undef'
  d_setgid='define'
  mailermode='2755'
! d_sigvec='undef'
! d_strings='undef'
  d_pwdinsys='undef'
  includepath=''
  d_tempnam='define'
  tempnamo=''
  tempnamc=''
! d_termio='define'
! d_tminsys='undef'
! d_tz_min='undef'
  d_useembed='define'
  d_utimbuf='define'
  defbatsub='no subject (file transmission)'
! defeditor='/usr/local/bin/j'
! elmalias='503'
! maxsysalias='503'
! maxuseralias='251'
! hostname='frcs'
! phostname='uuname -l'
! mydomain='.Alt.ZA'
  lib='/usr/local/lib'
! libc='/lib/libc.a'
! linepr='/usr/bin/lp'
! maildir='/usr/mail'
! mailer='/usr/lib/sendmail'
! mailgrp='asg'
! mansrc='/usr/man/man1'
  manext='1'
  models='none'
  split=''
--- 142,177 ----
  d_nocheckvalid='define'
  d_remlock='undef'
  maxattempts='6'
! d_rename='define'
  d_setgid='define'
  mailermode='2755'
! d_sigvec='define'
! d_strings='define'
  d_pwdinsys='undef'
  includepath=''
  d_tempnam='define'
  tempnamo=''
  tempnamc=''
! d_termio='undef'
! d_tminsys='define'
! d_tz_min='define'
  d_useembed='define'
  d_utimbuf='define'
  defbatsub='no subject (file transmission)'
! defeditor='/usr/bin/vi'
! elmalias='223'
! maxsysalias='223'
! maxuseralias='127'
! hostname='tantrum'
! phostname='hostname'
! mydomain='.csir.co.za'
  lib='/usr/local/lib'
! libc='/usr/lib/libc.a'
! linepr='/usr/bin/lpr'
! maildir='/var/mail'
! mailer='/usr/local/bin/smail'
! mailgrp='mail'
! mansrc=''
  manext='1'
  models='none'
  split=''
***************
*** 180,186 ****
  large=''
  huge=''
  optimize='-O'
! ccflags=''
  ldflags=''
  cc='cc'
  libs=''
--- 180,186 ----
  large=''
  huge=''
  optimize='-O'
! ccflags='-traditional'
  ldflags=''
  cc='cc'
  libs=''
***************
*** 190,205 ****
  d_usgnames='undef'
  passcat='cat /etc/passwd'
  pager='builtin+'
! pathalias='/usr/local/lib/smail/paths'
  domains='/usr/lib/domains'
  lsysfile=''
! lsysvssys='Systems'
! prefshell='/bin/ksh'
  rmttape='unknown-remote-tape-unit'
! roff='/usr/local/bin/troff'
  tmpdir='/tmp'
  xencf=''
  xenlf=''
  d_xenix='undef'
! d_bsd='undef'
  CONFIG=true
--- 190,205 ----
  d_usgnames='undef'
  passcat='cat /etc/passwd'
  pager='builtin+'
! pathalias='/usr/lib/nmail.paths'
  domains='/usr/lib/domains'
  lsysfile=''
! lsysvssys='L.sys'
! prefshell='/bin/sh'
  rmttape='unknown-remote-tape-unit'
! roff='/usr/bin/troff'
  tmpdir='/tmp'
  xencf=''
  xenlf=''
  d_xenix='undef'
! d_bsd='define'
  CONFIG=true
*** ./src/date.c	Mon Jul  8 17:15:45 1991
--- ../elm/./src/date.c	Mon Sep  7 09:06:40 1992
***************
*** 373,393 ****
  
  	char ch;
  
! 	switch (tolower(name[0])) {
! 	 case 'a' : if ((ch = tolower(name[1])) == 'p')	return(APRIL);
  		    else if (ch == 'u') return(AUGUST);
  		    else return(-1);	/* error! */
  	
  	 case 'd' : return(DECEMBER);
  	 case 'f' : return(FEBRUARY);
! 	 case 'j' : if ((ch = tolower(name[1])) == 'a') return(JANUARY);
  		    else if (ch == 'u') {
! 	              if ((ch = tolower(name[2])) == 'n') return(JUNE);
  		      else if (ch == 'l') return(JULY);
  		      else return(-1);		/* error! */
  	            }
  		    else return(-1);		/* error */
! 	 case 'm' : if ((ch = tolower(name[2])) == 'r') return(MARCH);
  		    else if (ch == 'y') return(MAY);
  		    else return(-1);		/* error! */
  	 case 'n' : return(NOVEMBER);
--- 373,393 ----
  
  	char ch;
  
! 	switch (elm_tolower(name[0])) {
! 	 case 'a' : if ((ch = elm_tolower(name[1])) == 'p')	return(APRIL);
  		    else if (ch == 'u') return(AUGUST);
  		    else return(-1);	/* error! */
  	
  	 case 'd' : return(DECEMBER);
  	 case 'f' : return(FEBRUARY);
! 	 case 'j' : if ((ch = elm_tolower(name[1])) == 'a') return(JANUARY);
  		    else if (ch == 'u') {
! 	              if ((ch = elm_tolower(name[2])) == 'n') return(JUNE);
  		      else if (ch == 'l') return(JULY);
  		      else return(-1);		/* error! */
  	            }
  		    else return(-1);		/* error */
! 	 case 'm' : if ((ch = elm_tolower(name[2])) == 'r') return(MARCH);
  		    else if (ch == 'y') return(MAY);
  		    else return(-1);		/* error! */
  	 case 'n' : return(NOVEMBER);
*** ./src/domains.c	Mon Jul  8 17:10:26 1991
--- ../elm/./src/domains.c	Mon Sep  7 09:06:59 1992
***************
*** 136,142 ****
  	  if (! isalnum(buffer[i]) && ! okay_others(buffer[i]) && 
  	        buffer[i] != '.')
  	    return(0);		      /* an you fail again, bozo! */
! 	  domain[j++] = toupper(buffer[i]);
  	  i++;
  	}
  
--- 136,142 ----
  	  if (! isalnum(buffer[i]) && ! okay_others(buffer[i]) && 
  	        buffer[i] != '.')
  	    return(0);		      /* an you fail again, bozo! */
! 	  domain[j++] = elm_toupper(buffer[i]);
  	  i++;
  	}
  
*** ./src/editmsg.c	Mon Jul  8 17:15:16 1991
--- ../elm/./src/editmsg.c	Mon Sep  7 09:17:55 1992
***************
*** 207,213 ****
  	  if (strcmp(buffer, ".") == 0)
  	    break;	/* '.' is as good as a ^D to us dumb programs :-) */
  	  if (buffer[0] == escape_char) {
! 	    switch (tolower(buffer[1])) {
                case '?' : tilde_help();
  			 goto more_input;
  
--- 207,213 ----
  	  if (strcmp(buffer, ".") == 0)
  	    break;	/* '.' is as good as a ^D to us dumb programs :-) */
  	  if (buffer[0] == escape_char) {
! 	    switch (elm_tolower(buffer[1])) {
                case '?' : tilde_help();
  			 goto more_input;
  
***************
*** 543,549 ****
  	char  local_buffer[SLEN], *arg;
  	register int lines = 0, add_prefix=0, mindex;
  
! 	if (add_prefix = (tolower(buffer[0]) == 'm'))
  		buffer++;
  
  	/* strip whitespace to get argument */
--- 543,549 ----
  	char  local_buffer[SLEN], *arg;
  	register int lines = 0, add_prefix=0, mindex;
  
! 	if (add_prefix = (elm_tolower(buffer[0]) == 'm'))
  		buffer++;
  
  	/* strip whitespace to get argument */
*** ./src/hdrconfg.c	Mon Jul  8 17:10:39 1991
--- ../elm/./src/hdrconfg.c	Mon Sep  7 09:07:51 1992
***************
*** 122,128 ****
  	  PutLine0(INPUT_LINE,0,"Choice: ");
  	  CleartoEOS();
  	  c = getchar();
! 	  c = toupper(c);
  	  clear_error();
  	  if (c == EOF)
  		return(0);
--- 122,128 ----
  	  PutLine0(INPUT_LINE,0,"Choice: ");
  	  CleartoEOS();
  	  c = getchar();
! 	  c = elm_toupper(c);
  	  clear_error();
  	  if (c == EOF)
  		return(0);
*** ./src/in_utils.c	Mon Jul  8 17:14:44 1991
--- ../elm/./src/in_utils.c	Mon Sep  7 09:18:10 1992
***************
*** 78,88 ****
  	fflush(stdin);
  
  	ch = ReadCh();
! 	ch = tolower(ch);
  
  	while (!( ch == 'y' || ch == 'n' || ch == '\n' || ch == '\r')) {
  	  ch = ReadCh();
! 	  ch = tolower(ch);
  	}
  	if(ch == '\n' || ch == '\r')
  	  ch = dflt;
--- 78,88 ----
  	fflush(stdin);
  
  	ch = ReadCh();
! 	ch = elm_tolower(ch);
  
  	while (!( ch == 'y' || ch == 'n' || ch == '\n' || ch == '\r')) {
  	  ch = ReadCh();
! 	  ch = elm_tolower(ch);
  	}
  	if(ch == '\n' || ch == '\r')
  	  ch = dflt;
*** ./src/limit.c	Mon Jul  8 17:10:49 1991
--- ../elm/./src/limit.c	Mon Sep  7 09:08:27 1992
***************
*** 53,59 ****
  		"Already have selection criteria - add more? (y/n) n%c",
  		BACKSPACE);
  	  criteria[0] = ReadCh();
! 	  if (tolower(criteria[0]) == 'y') {
  	    Write_to_screen("Yes.", 0);
  	    PutLine0(LINES-3, COLUMNS-30, "Adding criteria...");
  	  } else {
--- 53,59 ----
  		"Already have selection criteria - add more? (y/n) n%c",
  		BACKSPACE);
  	  criteria[0] = ReadCh();
! 	  if (elm_tolower(criteria[0]) == 'y') {
  	    Write_to_screen("Yes.", 0);
  	    PutLine0(LINES-3, COLUMNS-30, "Adding criteria...");
  	  } else {
*** ./src/mailmsg1.c	Mon Jul  8 17:10:50 1991
--- ../elm/./src/mailmsg1.c	Mon Sep  7 09:18:20 1992
***************
*** 171,177 ****
  	    "No subject - Continue with message? (y/n) n%c", BACKSPACE);
  
  	  ch = ReadCh();
! 	  if (tolower(ch) != 'y') {	/* user says no! */
  	    Write_to_screen("No.", 0);
  	    ClearLine(prompt_line);
  	    error("Mail not sent.");
--- 171,177 ----
  	    "No subject - Continue with message? (y/n) n%c", BACKSPACE);
  
  	  ch = ReadCh();
! 	  if (elm_tolower(ch) != 'y') {	/* user says no! */
  	    Write_to_screen("No.", 0);
  	    ClearLine(prompt_line);
  	    error("Mail not sent.");
*** ./src/mailmsg2.c	Mon Jul  8 18:25:58 1991
--- ../elm/./src/mailmsg2.c	Mon Sep  7 16:21:07 1992
***************
*** 266,271 ****
--- 266,272 ----
  
  	/** write all header information into whole_msg_file **/
  
+         temp_dir[strlen(temp_dir) - 1] = '\0';
  	if((whole_msg_file=tempnam(temp_dir, "snd.")) == NULL) {
  	  dprint(1, (debugfile, "couldn't make temp file nam! (mail)\n"));
  	  if(batch_only)
***************
*** 276,281 ****
--- 277,283 ----
  	    set_error("Sorry - couldn't make temp file name.");
  	  return(need_redraw);
  	}
+         temp_dir[strlen(temp_dir)] = '/';
  
  	/** try to write headers to new temp file **/
  
***************
*** 297,303 ****
  	  if (cc[0] != '\0')  		/* copies! */
  	    sprintf(expanded_to,"%s %s", expanded_to, expanded_cc);
  
! 	  sprintf(very_long_buffer, "( (%s -s \"%s\" %s ; %s %s) & ) < %s",
                    mailx, subject, strip_parens(strip_commas(expanded_to)), 
  		  remove_cmd, filename, filename);
  
--- 299,305 ----
  	  if (cc[0] != '\0')  		/* copies! */
  	    sprintf(expanded_to,"%s %s", expanded_to, expanded_cc);
  
! 	  sprintf(very_long_buffer, "( (%s -s \"%s\" %s ; %s %s) < %s ) &",
                    mailx, subject, strip_parens(strip_commas(expanded_to)), 
  		  remove_cmd, filename, filename);
  
***************
*** 383,389 ****
  	  else
  	     mailerflags[0] ='\0';
  
! 	  sprintf(very_long_buffer,"( (%s %s %s ; %s %s) & ) < %s", 
  		mailer, mailerflags, strip_parens(strip_commas(expanded_to)), 
  		remove_cmd, whole_msg_file, whole_msg_file);
  	}
--- 385,391 ----
  	  else
  	     mailerflags[0] ='\0';
  
! 	  sprintf(very_long_buffer,"((%s %s %s ; %s %s) < %s)&", 
  		mailer, mailerflags, strip_parens(strip_commas(expanded_to)), 
  		remove_cmd, whole_msg_file, whole_msg_file);
  	}
***************
*** 456,462 ****
  		     BACKSPACE);
  	  fflush(stdout);
  	  ch = ReadCh();
! 	  if (tolower(ch) != 'n') {
  	    Write_to_screen("Yes.",0);	
              retransmit++;
  	    *already_has_text = TRUE;
--- 458,464 ----
  		     BACKSPACE);
  	  fflush(stdout);
  	  ch = ReadCh();
! 	  if (elm_tolower(ch) != 'n') {
  	    Write_to_screen("Yes.",0);	
              retransmit++;
  	    *already_has_text = TRUE;
***************
*** 525,531 ****
  	  Raw(ON);	/* double check... testing only... */
  	  MoveCursor(x_coord, y_coord);
  	  ch = ReadCh();
! 	  ch = tolower(ch);
  
  	  /* process answer */
  	  switch (ch) {
--- 527,533 ----
  	  Raw(ON);	/* double check... testing only... */
  	  MoveCursor(x_coord, y_coord);
  	  ch = ReadCh();
! 	  ch = elm_tolower(ch);
  
  	  /* process answer */
  	  switch (ch) {
***************
*** 640,646 ****
  	else
  	    strcpy(opentype, "w");
  
! 	save_file_stats(filename);
  	if ((filedesc = fopen(filename, opentype)) == NULL) {
  	  dprint(1, (debugfile,
  	    "Attempt to open file %s for writing failed! (write_header_info)\n",
--- 642,648 ----
  	else
  	    strcpy(opentype, "w");
  
! /*	save_file_stats(filename); */
  	if ((filedesc = fopen(filename, opentype)) == NULL) {
  	  dprint(1, (debugfile,
  	    "Attempt to open file %s for writing failed! (write_header_info)\n",
***************
*** 653,659 ****
  	  return(NULL);		/* couldn't open it!! */
  	}
  
! 	restore_file_stats(filename);
  
  	if(copy) {	/* Add top line that mailer would add */
  	  thetime = time((long *) 0);
--- 655,661 ----
  	  return(NULL);		/* couldn't open it!! */
  	}
  
! /*	restore_file_stats(filename); */
  
  	if(copy) {	/* Add top line that mailer would add */
  	  thetime = time((long *) 0);
***************
*** 687,693 ****
  	    of headers is irrelevant).  Gahhhhh....
  	**/
  
! 	fprintf(filedesc, "Subject: %s\n", subject);
  
  	  fprintf(filedesc, "To: %s\n", format_long(long_to, strlen("To:")));
  
--- 689,697 ----
  	    of headers is irrelevant).  Gahhhhh....
  	**/
  
! 	if (fprintf(filedesc, "Subject: %s\n", subject) == -1) {
!             dprint(1, (debugfile, "can't write subject line! %s\n", strerror(errno)));
!         }
  
  	  fprintf(filedesc, "To: %s\n", format_long(long_to, strlen("To:")));
  
***************
*** 746,751 ****
--- 750,756 ----
  
  	fprintf(filedesc, "X-Mailer: ELM [version %s]\n\n", version_buff);
  
+ 	fflush(filedesc);
  	return((FILE *) filedesc);
  }
  
***************
*** 820,826 ****
  	fflush(stdin);	/* wait for answer! */
  	fflush(stdout);
  	ch = ReadCh();
! 	if (tolower(ch) != 'y') { 
  	  Write_to_screen("No.", 0);
  	  fflush(stdout);
  	  return(FALSE);
--- 825,831 ----
  	fflush(stdin);	/* wait for answer! */
  	fflush(stdout);
  	ch = ReadCh();
! 	if (elm_tolower(ch) != 'y') { 
  	  Write_to_screen("No.", 0);
  	  fflush(stdout);
  	  return(FALSE);
*** ./src/mailtime.c	Mon Jul  8 17:10:53 1991
--- ../elm/./src/mailtime.c	Mon Sep  7 09:18:48 1992
***************
*** 46,55 ****
  	/** Entry has the data for computing the time and date the 
  	    message was received.  Fix it and return **/
  
! 	switch (tolower(entry->month[0])) {
! 	  case 'j' : if (tolower(entry->month[1]) == 'a')
  		       entry->received.month = JANUARY;
! 		     else if (tolower(entry->month[2]) == 'n')
  	               entry->received.month = JUNE;
  		     else
  	               entry->received.month = JULY;
--- 46,55 ----
  	/** Entry has the data for computing the time and date the 
  	    message was received.  Fix it and return **/
  
! 	switch (elm_tolower(entry->month[0])) {
! 	  case 'j' : if (elm_tolower(entry->month[1]) == 'a')
  		       entry->received.month = JANUARY;
! 		     else if (elm_tolower(entry->month[2]) == 'n')
  	               entry->received.month = JUNE;
  		     else
  	               entry->received.month = JULY;
***************
*** 56,67 ****
  	             break;
  	  case 'f' : entry->received.month = FEBRUARY;
  	 	     break;
! 	  case 'm' : if (tolower(entry->month[2]) == 'r')
  	               entry->received.month = MARCH;
  		     else
  		       entry->received.month = MAY;
  	             break;
! 	  case 'a' : if (tolower(entry->month[1]) == 'p')
  	               entry->received.month = APRIL;
  	             else
  	               entry->received.month = AUGUST;
--- 56,67 ----
  	             break;
  	  case 'f' : entry->received.month = FEBRUARY;
  	 	     break;
! 	  case 'm' : if (elm_tolower(entry->month[2]) == 'r')
  	               entry->received.month = MARCH;
  		     else
  		       entry->received.month = MAY;
  	             break;
! 	  case 'a' : if (elm_tolower(entry->month[1]) == 'p')
  	               entry->received.month = APRIL;
  	             else
  	               entry->received.month = AUGUST;
*** ./src/opt_utils.c	Mon Jul  8 17:14:29 1991
--- ../elm/./src/opt_utils.c	Mon Sep  7 09:09:09 1992
***************
*** 196,202 ****
  /** some supplementary string functions for Berkeley Unix systems **/
  
  int
! tolower(ch)
  char ch;
  {
  	/** This should be a macro call, but if you use this as a macro
--- 196,202 ----
  /** some supplementary string functions for Berkeley Unix systems **/
  
  int
! elm_tolower(ch)
  char ch;
  {
  	/** This should be a macro call, but if you use this as a macro
***************
*** 211,217 ****
  }
  
  int
! toupper(ch)
  char ch;
  {
  	/** see comment for above routine - tolower() **/
--- 211,217 ----
  }
  
  int
! elm_toupper(ch)
  char ch;
  {
  	/** see comment for above routine - tolower() **/
***************
*** 219,224 ****
--- 219,226 ----
  	return ( islower(ch) ? ch - 'a' + 'A' : ch );
  }
  
+ #if defined (NOT_386_BSD)
+ 
  strspn(source, keys)
  char *source, *keys;
  {
***************
*** 263,268 ****
--- 265,272 ----
  
  	return(loc);
  }
+ 
+ #endif /* defined (NOT_386_BSD) */
  
  char *strtok(source, keys)
  char *source, *keys;
*** ./src/options.c	Mon Jul  8 17:15:26 1991
--- ../elm/./src/options.c	Mon Sep  7 09:09:29 1992
***************
*** 90,96 ****
  	  PutLine0(LINES-2, 0, "Command: ");
  
  	  ch = ReadCh();
! 	  ch = tolower(ch);
  
  	  clear_error();	/* remove possible "sorting" message etc... */ 
  
--- 90,96 ----
  	  PutLine0(LINES-2, 0, "Command: ");
  
  	  ch = ReadCh();
! 	  ch = elm_tolower(ch);
  
  	  clear_error();	/* remove possible "sorting" message etc... */ 
  
***************
*** 237,243 ****
  
  	do {
  	  ch = ReadCh();
! 	  ch = tolower(ch);
  	  switch (ch) {
  	    case SPACE : if (sortby < 0) { 
  	    		   sign = -1; 
--- 237,243 ----
  
  	do {
  	  ch = ReadCh();
! 	  ch = elm_tolower(ch);
  	  switch (ch) {
  	    case SPACE : if (sortby < 0) { 
  	    		   sign = -1; 
***************
*** 382,388 ****
  	lower_prompt("Key : ");
  
  	while ((c = ReadCh()) != '.') {
! 	  c = tolower(c);
  	  if (c == '?') {
  	     display_helpfile(OPTIONS_HELP);
  	     display_options();
--- 382,388 ----
  	lower_prompt("Key : ");
  
  	while ((c = ReadCh()) != '.') {
! 	  c = elm_tolower(c);
  	  if (c == '?') {
  	     display_helpfile(OPTIONS_HELP);
  	     display_options();
*** ./src/pattern.c	Mon Jul  8 17:11:01 1991
--- ../elm/./src/pattern.c	Mon Sep  7 09:18:57 1992
***************
*** 67,73 ****
  	    Write_to_screen("Remove tag%s? y%c", 2, plural(tagged),BACKSPACE);
  
  	    ch = ReadCh();
! 	    if (tolower(ch) != 'n') {	/* remove tags... */
  	      Write_to_screen("Yes.", 0);
  	      for (i=0; i < message_count; i++) {
  	        clearit(headers[i]->status,TAGGED);
--- 67,73 ----
  	    Write_to_screen("Remove tag%s? y%c", 2, plural(tagged),BACKSPACE);
  
  	    ch = ReadCh();
! 	    if (elm_tolower(ch) != 'n') {	/* remove tags... */
  	      Write_to_screen("Yes.", 0);
  	      for (i=0; i < message_count; i++) {
  	        clearit(headers[i]->status,TAGGED);
*** ./src/read_rc.c	Mon Jul  8 17:15:11 1991
--- ../elm/./src/read_rc.c	Mon Sep  7 09:19:20 1992
***************
*** 732,738 ****
  	  if (buffer[i] == '_')
  	    word1[i] = '-';
  	  else if (isupper(buffer[i]))
! 	    word1[i] = tolower(buffer[i]);
  	  else
  	    word1[i] = buffer[i];
  
--- 732,738 ----
  	  if (buffer[i] == '_')
  	    word1[i] = '-';
  	  else if (isupper(buffer[i]))
! 	    word1[i] = elm_tolower(buffer[i]);
  	  else
  	    word1[i] = buffer[i];
  
***************
*** 893,899 ****
  	register int i, j;
  
  	for (i=0, j=0; word[i] != '\0'; i++)
! 	  mybuffer[j++] = isupper(word[i]) ? tolower(word[i]) : word[i];
  	mybuffer[j] = '\0';
  
  	return(  (strncmp(mybuffer, "on",   2) == 0) ||
--- 893,899 ----
  	register int i, j;
  
  	for (i=0, j=0; word[i] != '\0'; i++)
! 	  mybuffer[j++] = isupper(word[i]) ? elm_tolower(word[i]) : word[i];
  	mybuffer[j] = '\0';
  
  	return(  (strncmp(mybuffer, "on",   2) == 0) ||
*** ./src/remail.c	Mon Jul  8 17:11:06 1991
--- ../elm/./src/remail.c	Mon Sep  7 09:19:29 1992
***************
*** 90,96 ****
  	fflush(stdin);
  	fflush(stdout);
  	ch = ReadCh();
! 	if (tolower(ch) == 'n') { /* another day, another No... */
  	  Write_to_screen("No.", 0);
  	  set_error("Bounce of message cancelled.");
            return(1);
--- 90,96 ----
  	fflush(stdin);
  	fflush(stdout);
  	ch = ReadCh();
! 	if (elm_tolower(ch) == 'n') { /* another day, another No... */
  	  Write_to_screen("No.", 0);
  	  set_error("Bounce of message cancelled.");
            return(1);
*** ./src/reply.c	Mon Jul  8 17:14:31 1991
--- ../elm/./src/reply.c	Mon Sep  7 09:19:41 1992
***************
*** 424,430 ****
  
  	  for (iindex = 0; iindex < loc - i + 1; iindex++)
  	    if (trans_to_lowercase)
! 	      name[iindex] = tolower(single_address[iindex+i]);
  	    else
  	      name[iindex] = single_address[iindex+i];
  	  name[iindex] = '\0';
--- 424,430 ----
  
  	  for (iindex = 0; iindex < loc - i + 1; iindex++)
  	    if (trans_to_lowercase)
! 	      name[iindex] = elm_tolower(single_address[iindex+i]);
  	    else
  	      name[iindex] = single_address[iindex+i];
  	  name[iindex] = '\0';
***************
*** 440,446 ****
  	  for (i = loc; single_address[i] != '!' && single_address[i] != '.' 
  	       && i > -1; i--)
  	     if (trans_to_lowercase)
! 	       name[iindex++] = tolower(single_address[i]);
  	     else
  	       name[iindex++] = single_address[i];
  	  name[iindex] = '\0';
--- 440,446 ----
  	  for (i = loc; single_address[i] != '!' && single_address[i] != '.' 
  	       && i > -1; i--)
  	     if (trans_to_lowercase)
! 	       name[iindex++] = elm_tolower(single_address[i]);
  	     else
  	       name[iindex++] = single_address[i];
  	  name[iindex] = '\0';
*** ./src/string2.c	Mon Jul  8 17:15:18 1991
--- ../elm/./src/string2.c	Mon Sep  7 09:10:21 1992
***************
*** 60,66 ****
  
  	for (i=0; i < strlen(string); i++)
  	  if (isupper(string[i]))
! 	    buffer[i] = tolower(string[i]);
  	  else
  	    buffer[i] = string[i];
  	
--- 60,66 ----
  
  	for (i=0; i < strlen(string); i++)
  	  if (isupper(string[i]))
! 	    buffer[i] = elm_tolower(string[i]);
  	  else
  	    buffer[i] = string[i];
  	
*** ./src/strings.c	Mon Jul  8 17:14:35 1991
--- ../elm/./src/strings.c	Mon Sep  7 09:10:52 1992
***************
*** 312,318 ****
  	/** now copy into 'first' until we hit white space or EOLN **/
  
  	for (j=0; i < strlen(buffer) && ! whitespace(buffer[i]); ++i)
! 	  first[j++] = tolower(buffer[i]);
  
  	first[j] = '\0';
  	
--- 312,318 ----
  	/** now copy into 'first' until we hit white space or EOLN **/
  
  	for (j=0; i < strlen(buffer) && ! whitespace(buffer[i]); ++i)
! 	  first[j++] = elm_tolower(buffer[i]);
  
  	first[j] = '\0';
  	
***************
*** 319,325 ****
  	while (whitespace(buffer[i])) i++;
  
  	for (j=0; i < strlen(buffer); i++)
! 	  rest[j++] = tolower(buffer[i]);
  
  	rest[j] = '\0';
  
--- 319,325 ----
  	while (whitespace(buffer[i])) i++;
  
  	for (j=0; i < strlen(buffer); i++)
! 	  rest[j++] = elm_tolower(buffer[i]);
  
  	rest[j] = '\0';
  
*** ./hdrs/sysdefs.h	Sun Dec 29 12:19:12 1991
--- ../elm/./hdrs/sysdefs.h	Wed Sep  9 14:50:09 1992
***************
*** 31,37 ****
  
  #define DEFAULT_BATCH_SUBJECT  "no subject (file transmission)"
  
! #define DEFAULT_DOMAIN  ".Alt.ZA"  /* if mydomain file is missing */
  
  /** If you want to implement 'site hiding' in the mail, then you'll need to
      uncomment the following lines and set them to reasonable values.  See 
--- 31,37 ----
  
  #define DEFAULT_BATCH_SUBJECT  "no subject (file transmission)"
  
! #define DEFAULT_DOMAIN  ".csir.co.za"  /* if mydomain file is missing */
  
  /** If you want to implement 'site hiding' in the mail, then you'll need to
      uncomment the following lines and set them to reasonable values.  See 
***************
*** 56,62 ****
  #define ALIAS_HASH		".elm/aliases.hash"
  #define ALIAS_DATA		".elm/aliases.data"
  
! #define pathfile		"/usr/local/lib/smail/paths"
  #define domains			"/usr/lib/domains"
  #define hostdomfile             "/usr/local/lib/domain"
  
--- 56,62 ----
  #define ALIAS_HASH		".elm/aliases.hash"
  #define ALIAS_DATA		".elm/aliases.data"
  
! #define pathfile		"/usr/lib/nmail.paths"
  #define domains			"/usr/lib/domains"
  #define hostdomfile             "/usr/local/lib/domain"
  
***************
*** 77,95 ****
  
  #define emacs_editor	"emacs"
  
! #define default_editor	"/usr/local/bin/j"
! #define mailhome	"/usr/mail/"
  
! #define default_shell	"/bin/ksh"
  #define default_pager	"builtin+"
! #define default_printout	"/bin/cat %s | /usr/bin/lp"
  
! #define sendmail	"/usr/lib/sendmail"
  #define smflags		"-oi -oem"	/* ignore dots and mail back errors */
  #define smflagsv      "-oi -oem -v"   /* Verbose voyuer mode */
! #define mailer		"/usr/lib/sendmail"
  
! #define mailx		"/usr/bin/mailx"
  
  #define helphome	"/usr/local/lib"
  #define helpfile	"elm-help"
--- 77,95 ----
  
  #define emacs_editor	"emacs"
  
! #define default_editor	"/usr/bin/vi"
! #define mailhome	"/var/mail/"
  
! #define default_shell	"/bin/sh"
  #define default_pager	"builtin+"
! #define default_printout	"cat %s | /usr/bin/lpr"
  
! #define sendmail	"/usr/local/bin/sendmail"
  #define smflags		"-oi -oem"	/* ignore dots and mail back errors */
  #define smflagsv      "-oi -oem -v"   /* Verbose voyuer mode */
! #define mailer		"/usr/local/bin/smail"
  
! #define mailx		"mailx"
  
  #define helphome	"/usr/local/lib"
  #define helpfile	"elm-help"
***************
*** 106,113 ****
  #define newalias	"newalias 1>&2 > /dev/null"
  #define readmsg		"readmsg"
  
! #define remove_cmd	"/bin/rm -f"	/* how to remove a file */
! #define cat		"/bin/cat"		/* how to display files */
! #define sed_cmd		"/bin/sed"		/* how to access sed */
! #define move_cmd	"/bin/mv"		/* how to access sed */
  #define uuname		"/usr/bin/uuname"	/* how to get a uuname  */
--- 106,113 ----
  #define newalias	"newalias 1>&2 > /dev/null"
  #define readmsg		"readmsg"
  
! #define remove_cmd	"rm -f"	/* how to remove a file */
! #define cat		"cat"		/* how to display files */
! #define sed_cmd		"sed"		/* how to access sed */
! #define move_cmd	"mv"		/* how to access sed */
  #define uuname		"/usr/bin/uuname"	/* how to get a uuname  */
--
 ---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---
 Paul Nash                                   (voice) +27-12-8413050
 Network Services, CSIR Infotek                (fax) +27-12-8414109

        "OS/2 will remain the operating system of the future"