[comp.bugs.sys5] mailx

gworek@codas.UUCP (11/13/87)

Description:
	Remaining .mailrc commands are ignored if the user
	attempts to "unset" a variable that has not
	been previously set.

Versions Tested:
	/usr/bin/mailx.sl 1.24 3.1 02/02/87 46435 AT&T-SF
	/usr/bin/mailx.sl 1.13 3.0 02/19/86 63855 AT&T-SF

Repeat-by:
	Add an "unset zot" command early in your ~/.mailrc.
	A good location is before a list of aliases, or 
	before a list of "ignore" specifications.

	Go into mail.  At the "?" prompt type "alias" or
	"ignore".  All aliases, ignores, and other commands
	after the "unset zot" command are not available and
	have not been executed.

Discussion:
	The bug was discovered when a .mailrc was moved to
	a new system.  The user's .mailrc contained an
	"unset ignoreeof" command to override a "set ignoreeof"
	command in /usr/lib/mailx/mailx.rc on another system.

	The error is not serious, and the remainder of the
	.mailrc should be read and executed.

Fix:
	Change the "deassign()" function in the vars.c module
	to return success when sourcing .mailrc and the variable
	is not set.

*** vars.old	Thu Nov 12 16:33:32 1987
--- vars.c	Thu Nov 12 16:34:03 1987
***************
**** 56,61 ****
	if ((vp2 = lookup(s)) == NOVAR) {
		if (!sourcing) {
			printf("\"%s\": undefined variable\n", s);
		}
!		return(1);
	}
---- 56,62 ----
	if ((vp2 = lookup(s)) == NOVAR) {
		if (!sourcing) {
			printf("\"%s\": undefined variable\n", s);
+			return(1);
		}
!		return(0);
	}

--
Don Gworek
gworek@codas.att.com
AT&T: 305/869-2752