[comp.bugs.2bsd] V1.17

bostic@OKEEFFE.BERKELEY.EDU.UUCP (11/06/87)

Subject: /etc/getty doesn't initialise local mode word bits properly
Index: etc/getty/main.c 2.10BSD

Description:
	When getty initialises it itself from the /etc/gettytab file,
	it does not set up the local mode word bits properly.
Repeat-By:
	Try logging in without `stty ...' in your .login file -- ie just
	use it as getty set it up. Notice that none of the local mode stuff
	is enabled.
Fix:
	Apply the following patch to main.c, it's the old long vs. int
	problem again.

*** main.c.old	Wed Nov  4 14:51:19 1987
--- main.c	Wed Nov  4 14:51:49 1987
***************
*** 113,118 ****
--- 113,119 ----
  	char *tname;
  	long allflags;
  	int repcnt = 0;
+ 	int someflags;
  
  	signal(SIGINT, SIG_IGN);
  /*
***************
*** 221,227 ****
  				continue;
  			allflags = setflags(2);
  			tmode.sg_flags = allflags & 0xffff;
! 			allflags >>= 16;
  			if (crmod || NL)
  				tmode.sg_flags |= CRMOD;
  			if (upper || UC)
--- 222,228 ----
  				continue;
  			allflags = setflags(2);
  			tmode.sg_flags = allflags & 0xffff;
! 			someflags = allflags >> 16;
  			if (crmod || NL)
  				tmode.sg_flags |= CRMOD;
  			if (upper || UC)
***************
*** 230,236 ****
  				tmode.sg_flags &= ~LCASE;
  			ioctl(0, TIOCSETP, &tmode);
  			ioctl(0, TIOCSLTC, &ltc);
! 			ioctl(0, TIOCLSET, &allflags);
  			signal(SIGINT, SIG_DFL);
  			for (i = 0; environ[i] != (char *)0; i++)
  				env[i] = environ[i];
--- 231,237 ----
  				tmode.sg_flags &= ~LCASE;
  			ioctl(0, TIOCSETP, &tmode);
  			ioctl(0, TIOCSLTC, &ltc);
! 			ioctl(0, TIOCLSET, &someflags);
  			signal(SIGINT, SIG_DFL);
  			for (i = 0; environ[i] != (char *)0; i++)
  				env[i] = environ[i];