Sat Nov  9 14:57:30 1991  Simon J. Gerraty  (sjg at zen)

	* Release version 4.1 as a new base line.

Thu Nov  7 23:11:25 1991  Simon J. Gerraty  (sjg at zen)

	* John R MacMillan suppied a fix for a bug in yylex() that was the
	cause of several odd problems such as:
		$ foo=echo
		$ $foo bar
		bar: not found
		$ pwd
		$ /local/src/pdksh
		$ $foo bar
		bar
		$

Sun Sep 15 23:19:27 1991  Simon J. Gerraty  (sjg at zen)

	* emacs.c:
	Added function x_lastcp() which returns a pointer to that char in
	the edit buffer that will be the last displayed on the screen.
	Thus:

          cp = x_lastcp();
	  while (cp > xcp)
            x_bs(*--cp);
	
	Will correctly position the cursor on the screen (regardless of
	TABs etc in the buffer).  The previous method got out of sync if
	there were any TABs to display.

Wed Aug  7 11:26:55 1991  Simon J. Gerraty  (sjg at sun0)

	* jobs.c:
	The Sun SPARCstation 2 was proving extremely unreliable using ksh.
	After puting traces in jobs.c, it turns out the problem was
	multiple SIGCHLD events happening too quickly causing the handler
	to be interupted and thus not recognise the job that it had just
	reaped was one of its own.  Having done the waitpid(), but not
	adjusted the job table entry, j_waitj() would loop forever waiting
	for a job to finnish (that had already done so!)
	Solution was to have the SIGCHLD handler simply record the events
	by inrcrementing sigchld_caught.  The actual reaping is now done
	in a new funtion j_reapchld(), which does what the old signal
	handler did but blocks SIGCHLD while scanning the job table.
	j_waitj() calls j_reapchld() when sigchld_caught is non-zero.
	The SS2 is now much more reliable...

	* trace.c:
	Added my simple _TRACE facility (used to track the j_waitj
	problem).  Simply -DUSE_TRACE for it to have effect.  If USE_TRACE
	is undefined, calls to _TRACE() expand to while(0) which an
	optimizer will usually remove.  sh.h now includes trace.h

Mon Jun 10 10:27:14 1991  Simon J. Gerraty  (sjg at zen)

	* emacs.c:
	A couple of assignments (xbp = xbuf) were not migrated from the
	3.2 version.  Caused an anoying bug when retrieving history
	commands. 

Mon May 27 12:50:20 1991  Simon J. Gerraty  (sjg at sun0)

	* added fixes supplied by Mike Jetzer:
	These relate mainly to vi mode.  See Changes.mlj

	* c_sh.c c_exit():
	Modified behavior to not imediately exit if there are stopped
	jobs.  A subsequent exit will kill any jobs left and terminate the
	shell. 

Fri May 24 15:20:10 1991  Simon J. Gerraty  (sjg at sun0)

	* edit.h:
	Cleaned up prototypes.  Built shell on sun3.
	While gcc-1.39 builds the ksh ok on the 386i, on the sun3 jobs
	don't work correctly - any non-builtin command gets stopped and
	put into the background.  Had same problem with 3.2, using
	/usr/bin/cc works fine.

Thu May 23 13:45:20 1991  Simon J. Gerraty  (sjg at sun0)

	* migrated my 3.2 edit.c changes to the new shell.
	Affects edit.c, emacs.c
	Added edit.h which is now included by edit.c,emacs.c and vi.c
	
	* vi.c:
	Fixed handling of '!' in prompt by using pprompt() as in emacs.c

	* std/stdc/vprintf.c:
	Fixed bug in output of left '0' padded unsigned numbers was
	always padding with ' ' which left a space in ksh's temp file
	names.  This prevented fc -l from working.

Here is my 3.2 ChangeLog:
Fri Mar 22 16:50:14 1991  Simon J. Gerraty  (sjg at sun0)

	* edit.c:
	Added x_set_arg() and x_prev_histword().
	x_set_arg() handles 'ESC''0-9' type args which are used by word
	related commands.
	x_prev_histword() recovers the last (default) or sepcified arg
	word from the previous command line.  Bound to ESC. and ESC_ to be
	compatible with real ksh.

Tue Feb 26 14:16:17 1991 Simon J. Gerraty  (sjg at zen)

	* edit.c:
	Changes to handle editing of command lines longer than $COLUMNS in
	a manner compatible with real ksh.

Mon Feb 25 12:20:36 1991 Simon J. Gerraty  (sjg at sun0)

	* var.c,table.h:
	Implemented $RANDOM
	Some scripts use [ "$RANDOM" != "$RANDOM" ] to check for ksh. 

Wed Feb 20 12:20:36 1991 Simon J. Gerraty  (sjg at sun0)

	Changes so that shell will compile on sun386i.

	* exec.c,main.c,io.c:
	Handle the case where FD_CLEXEC isn't defined.

	* jobs.c:
	SunOS has its own ideas about job status etc.

	* tree.c:
	Fixed conflict between varargs and stdarg.




