August 10, 2004

	try to be more consistent about _exit and _exits in libthread

	change plumbing rule for html to send to editor

July 3, 2004
	Add missing parameter to smprint in libdraw/x11-init.c.  From rob.
	Add missing parameter type in samterm/main.c.  Also from rob.
	Teach web about vanilla Mozilla.
	Make 9term more clever about terminal echo. From Axel Belinfante.

June 20, 2004

	x11 geometry fixes, from Peter Canning

June 9, 2004

	#define PLAN9PORT when compiling (sorry)

	handle local files better in web

	rewrite malloc, realloc, calloc, free, strdup to p9*

	various venti library fixes

	update plumbing rules to handle urls better

	add mouse wheel scrolling to acme, libdraw, from rob

	add mouse wheel scrolling to 9term

	add page up, pagedown, etc. work in sam

	better plumbing in sam, from presotto

	fix race in rendez-signal.

	quiet httpd a bit

	fix race in libthread - call _exit not exit

	first try at making delete work in rio for gv, from wkj

	make top windows active more often in rio

May 18, 2004

        merge troff and friends from wkj and Taj Khattra

May 14, 2004

	more small bug fixes

	acme: make arrows work in tags, from rob

	sam: make sam -r machine files work, from presotto

May 11, 2004

	more small bug fixes

May 9, 2004

	don't reference data below stack pointer in sha1, md5


May 5, 2004

	various bug fixes

April 29, 2004

	add -W to specify window size

	minor fixes

April 27, 2004

	add threadspawn

April 25, 2004

	add gview, image viewer, scat

	fix note groups in rc

	fix mc, remove Dotfiles from acme in favor of Getdir

	fix extraneous flush in Bprint

	add block device size for linux

	make astro work on suns

April 23, 2004

	fix B to handle non-existent files properly

	add stats

	various 9term/rio fixes from axel belinfante

	reformat sunos compiler errors to use file:line format

April 21, 2004

	add bc, units, mtime, primes, news

	add registers to acid stack traces

	add acid man page (forgotten before)

	add proper support for long names in archives to mk
	change mksyslib, mklib to use mk's magic archive powers

	add jpg, map, pr, p.

	rename Bwait to E (thanks to rob for the name).

	add -m flag to mkdir

	fix acid's handling of infinite includes

	rename yacc to 9yacc so that we can be sure to find it.

	stop malloc'ing in signal handlers.
	in fact, stop locking anything.

	add rfork(RFNOWAIT) support.  

	add libsunrpc.

	back out funny graphics in 9term menu.

	import assembler routines for libmp and libsec
		on x86 from william josephson's tree

	add truerand which uses /dev/random to seed PRG

	add aescbc, astro, lex, and tcs

	import man9 from william josephson's version of the port

April 20, 2004

	make 9term handle \r kind of.

April 19, 2004

	lots of man page updates.

	fix bug in comm, reported by Taj Khattra.

	add libmach, db, acid

April 18, 2004

	add utf-8 input support from david tolpin.

	pick up rog's acme fixes w.r.t. cut and paste

	small fixes to ps, B, web

	more types in u.h

	man page nits

	make gzip, bzip2 work with gnu tar

	add fmt, tweak

	change misc/ding checkboxes to be smaller


April 17, 2004

	make 9term work a bit better w.r.t. terminal modes

April 14, 2004

	add look.  thanks to Taj Khattra.
	add plot, graph.  thanks to Taj Khattra.
	add gzip, bzip2.  thanks to Taj Khattra.

April 8, 2004

	speed up ls

	import htmlfmt from wkj

April 5, 2004

	Fixes to rio from Axel.

	Add atoll, etc.

April 2, 2004

	Add missing unsharps to dict.  Reported by Robby (plan9@blueyonder)

March 30, 2004

	Change label to use nawk on SunOS.

	Change libdraw to elide mouse motion events when they
		pile up.
	
March 29, 2004

	Add window resizing by dragging borders to rio.
	Code from Axel Belinfante.

	Added code to make 9term fade itself when it loses
	focus running under rio.

March 26, 2004

	Fix 9term chording paste bug reported by Sam.

	Fix libdraw resize bug reported by Axel Belinfante.

	Handle interrupts better in rc - don't kill background procs.
	Reported by Sam.

	9term OpenBSD support from Markus Friedl.

	More appeasement of Sun C compiler.

March 25, 2004

	Change putenv not to free the string after calling real putenv.
	Apparently BSDs copy the string but Linux and others use the
	one you pass in.

	Add Indent command to acme listing.  Reported by Rob Pike.

	Define clock to plumbclock in plumber/fsys.c to avoid
	name clash on SunOS.

	Reported by Axel Belinfante and Markus Friedl.

	Expanded NOTES to discuss CVS some more.

	Change one instance of ulong in rio to unsigned long.

	Tweak SunOS ps from Axel Belinfante.

	Change diff not to mention the dirty word "stdout" anymore.
	Reported by Taj Khattra et al.

	Change 9l to add -lpthread on OpenBSD.
	Reported by Markus Friedl.

	Change 9l to add -Rfoo for each -Lfoo on the command line
	on SunOS.  Avoids need to maintain LD_LIBRARY_PATH.
	Reported by Axel Belinfante.

	#define time to p9time in libc.h for systems where time_t != long (OpenBSD).
	Reported by Markus Friedl.

	Add SHAPE support and bitmapped grey background back to rio.
	Reported by Markus Friedl.

	Add various OpenBSD-specific files from Markus Friedl.

	Change rcmain to use "test" rather than "/bin/test" to accomodate
	systems where test is in /usr/bin.   Reported by Sam.

	Silence "unknown id '' in attach" message from acme.
	There are just more attaches than there were in Plan 9, and not
	all of them are for windows.

	Change 9term to handle "send" a little better.

	Add grep.  Reported by Taj Khattra.

	Split lib9.h into u.h and libc.h, so that programs can
	include u.h, then unix headers, then libc.h.  Then changed
	lib9 to do this.
	Fixes many warnings on SunOS reported by Axel Belinfante.

	Change 9term not to misfree when plumbing empty string.
	Fix reported by Taj Khattra.

	Fix threadexecl to process vararg list with va_list etc. rather 
	than using &f+1.  The &f+1 trick fails on SunOS.  Reported by
	Axel Belinfate.

	Change x11-init to handle SunOS 24-bit colormapped screen
	properly?  Fix reported by Axel Belinfante.  Let's just play along.

	Add awd.  Suggested by Sam.

	9term no longer aborts without plumber.

	Remove _p9translate from guts of various calls.
	Instead, callers who want #9 or #d paths explicitly call unsharp
	to translate them.

	Added ^F completion to 9term.

	Change win to use a real pty, so that things like rubout work.

	Change 9term, win to handle rubout even when output
		is streaming in.

	Start recording changes.

