2000-06-07    <ingvar@sniffer1.telenordia.se>

	* Makefile: Added a "testsys" target.

	* wf-net.c (action_make): Bah. Never save pointers to data that is
	about to be freed.

	* wfshell.c (repl): Added refresh support
	(next_token): Added refresh support

2000-05-31    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (process): Boosted error checking.

	* wf-client.c (start_item): Bug, not calling refresh_* with name,
	calling with item.
	(servererror): Bug in the last trace adding.
	(cs_quote): Not '\0'-terminating the result string.

2000-05-28    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (find_action): Aigh! Here too. Much bad code
	found. I now KNOW why I like proper memory management.

	* wf-engine.c (find_item): Aigh! Bug spotted. Do Not Free Linked
	Data!
	(find_action): Almost same stupidity found here.

2000-05-23    <ingvar@sniffer1.telenordia.se>

	* wf-client.c: Eh. Bug spotted!
	(list_action): Signature changed, to faciliate trace-compiling.
	(read_action): Added string quoting.
	(read_item): Added string quoting.
	(move): Added string quoting.
	(follow): Added string quoting.
	(start_item): Added string quoting.
	(open_item): Added string quoting.
	(close_item): Added string quoting.

2000-05-22    <ingvar@sniffer1.telenordia.se>

	* Many files: General clean-up, removal of un-used variables.
	* wf-net.c (item_make): (server) Re-factored into separate client
	and server code with different signatures.
	(action_make): (server) See above.
	(action_make): (client) Re-implemented, more-or-less from scratch.
	(item_make): (client) re-implemented from scratch.

	* wf-client.c: Added TRACE functionality (it's pure tracing,
	similar to, but not quite "DEBUG").

	* wf-net.h: Prepared for even more separation between server-side
	and client-side

2000-05-16    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (refresh_action): Added in cleanliness. Will it help?
	(refresh_item): Same.

	* wf-client.c (parse_collection): Must Add Memory Management!
	(parse_collection): Added memory management
	(read_action): Added memory management
	(read_item): Added memory management
	(refresh_action): Added in cleanliness (will it help?).
	(refresh_item): Added in cleanliness (will it help?).

	* wf-engine.c (refresh_item): Added logic (hopefully zapped memory
	leak at the same time).

	* wf-client.c (parse_collection): Added NULL guard.

	* wf-engine.c (refresh_action): Changed logic (hopefully zapped
	memory leak at the same time).

	* wf-net.c (action_make): Added NULL Sexpr guard.
	(item_make): Added NULL Sexpr guard.

2000-05-12    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (handle): Spurious bug #2 found and corrected.

2000-05-11    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (close_item): Eh, forgot a vital partof the network
	protocol here. My bad. Now we actually send the data off, too.

	* wfshell.c (next_token): Added two commands, cut out some old
	code.
	(repl): Added two commands. One fully implemented (cat) one stub
	(edit).

	* wf-net.c (data_decode): Aigh. NULL check inserted in data_decode.

	* wf-client.c (cachemap_item): Added NULL guard.

2000-05-10    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (my_accept): Changed the memcpy call.
	(my_accept): Changed type of peer argument.

	* wfshell.c (repl): Added support for item data display.
	(next_token): Added support for item data display.

	* wf-net.c (data_encode): Aigh! Never forget indexing your
	data-to-encode to the coding table. That leads to *seriously*
	hard-to-find bugs and that is bad (or at least time consuming).

2000-05-09    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (my_accept): Added in logging
	(network_action): Added logging and removed unused variable
	manipulation.

	* ToDo: Two action points moved to "Resolved".

2000-05-07    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (process): Removed one argument in call to write_itemdata

	* wf-net.c (data_decode): spellin error corrected

	* Makefile (PROGRAMS): Added in the serverside...

2000-05-03    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (cachename_item): added

	* wf-server.c (write_error): Eh, possible off-by-one error. Need
	space for the terminating \0, we do.

2000-05-02    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (open_item): added
	(close_item): added

	* wf-client.c (cachemap_item): added
	(cachemap_file): added
	(cachemap): added

	* wf-server.c (process): Implemented item making (from data file).

2000-04-28    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (data_decode): added
	(data_encode): added
	(makerevcoding): added

2000-04-27    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (start_item): Heh! 82 lines shorter now!

	* wfshell.c: Cosmetic change (added a linefeed to last helpline).

	* wf-engine.c: Preparing the groundwork for a better start_item
	(basically, move all action-handling code to move() and have a
	"secret" action that is where we start and then move from).
	(lock_node): No locking of the supersecret action!
	(unlock_node): No unlocking of the supersecret action!
	(move): Added in what should be enough safeguards for our
	supersecret thingie.
	(move): Added in a check for NULL next action.
	(start_item): Rewrote, for the new stuff.

2000-04-15    <ingvar@sniffer1.telenordia.se>
	* Made new release (0.0.4 BETA)
2000-04-15    <ingvar@sniffer1.telenordia.se>

	* wfshell.c (repl): Added some safeguards, to make wf(net)?shell
	more... stable.

	* wf-net.c (cleanup): Implemented.

	* wf-server.c (network_action): Added a call to a cleanup function.

	* wf-net.c (action_make): StupidstupidSTUPID error. Do Not Push
	Data On Wrong List!

2000-04-14    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (foreach): added (whyever did I miss this one?).

2000-04-13    <ingvar@sniffer1.telenordia.se>

	* wf-client.c: Seem to be missing quite a few functions...

	* wf-server.c (process): Heh. Logic bug in setaction (if we get an
	action back, make sure it's set as current action).

2000-04-12    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (move): Aigh! Baad bug. Wonder how long that's been
	there?

2000-04-11    <ingvar@sniffer1.telenordia.se>

	* llist.c (llist_free_spine): Aigh! Very bad bug. We no want bugs
	in our abstract datatypes, do we?

	* wf-client.c (find_action): Bug found. Name not entered in a new
	action. Do we have the same problem with items?

	* wf-net.c (item_make): Fixed almost the same problem as in
	item_make.

2000-04-10    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (action_make): Fixed a sequence thing and some faulty
	checks. Still things to do, possibly.

	* wf-client.c (start_item): Fixed an update bug.

	* wf-engine.c (find_action): ooops. bug! fixed...
	(refresh_item): ooops. bug! fixed?
	(find_item): ooops. bug! fixed...
	(refresh_action): ooops. bug! fixed?

2000-04-09    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (write_item): Error checking added.
	(write_action): Error checking added.

	* wf-engine.c (read_action): Uh-oh!
	(read_action): Heh. One forgotten NULL check. "This'll always
	work" my arse!

	* wf-server.c (process): Fixed some status checking.

2000-04-08    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (process): Heh. Nice infinite loop... Fixed now.

	* wf-net.c (push_activation): Changed this one back to a
	stack. Buggrit, but that's confusing. Now, mental simulation tells
	med that the innerest reader() will be the first to stamp down an
	activation record, with every other being pushed on top of it. On
	reactivation, we'll pop the outermost first, steadily progressing
	inwards. Just Like We Should...
	(reader): Oooops. Reader fscked up. Commence repairs...
	(read_token): Hmm... Changed the algo for read_token a bit... Now
	we only save /[()]/ after non-whitespace.
	(reader): Fudged reader a bit (insert in tail, extend).

	* wf-server.c (my_accept): Aigh! It *really* helps if one reads
	the man pages, I just noticed. Ah, well... Stupid me.

	* wf-net.c: Added in DEBUG ifdefs around the trace prints. Seems
	as if making my sockets non-blocking is harder than I thought...

2000-03-26    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (parse_destination): OK, found possible bug!
	Time to add function comments, I think. I seem to have ignored
	that, while in deep hackery.
	(parse_collection): Created

2000-03-25    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (push_activation): Oooops! Better make sure we populate
	the activation thing the right way around... Or? Hmm...
	Let's see... We Fsck. Change back.

2000-03-20    <ingvar@sniffer1.telenordia.se>

	* testsys/testlocal.c (main): Stripped out unnecessary item
	reading.

	* wf-server.c (process): all-items, all-actions and start request
	finished.

	* wf-net.h: Added length parameter to Token structure.

	* wf-net.c (read_token): Added length parameter to Token
	structure, made sure string length of a token gets saved from
	activation to activation.

2000-03-19    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (process): Added NULL check for incoming commands
	(possible with the new reader() semantics).

	* wf-net.c (sexpr_free): Added.
	(reader): Added re-activation (boy, would continuations help here!)
	(read_token): Changed the resume thing to be local to each FD instead
	of "global". The things one forgets, eh?

2000-03-17    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (my_accept): Non-blocking sockets...
	(handle): Heh. Forgot one thing... We *always* get a list from
	reader, the way the protocol's designed.

2000-03-16    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (main): Added in network action (bind/listen)
	(find_session): Bugfixes.

2000-03-15    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (find_item): changed the position where items are pushed
	onto the global item list.

	* wf-server.c: Changed the EXTEND macro, to simplify error handling
	(or, well, point bughunts in the right direction).
	(write_action): Changed, to keep in touch with EXTEND.

	* wf-engine.c (follow): Error protection (NULL check for parameters)
	(move): Error protection (NULL check for parameters)

	* wf-server.c (process): added "libfollow" processing

2000-03-14    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (refresh_action): new function.
	(refresh_item): new function.
	(wf_basename): Used to be basename(), seems like a name-collision
	with either string.h or libiberty.h, triggered by egcs.

	* llist.c: Added proper function comments...
	(llist_free_spine): New function. Needed for refresh_(item|action).

2000-03-12    <ingvar@sniffer1.telenordia.se>

	* wf-client.c (init_wf): implemented

	* wf-net.h (DEFAULT_PORT): Added define

2000-03-11    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (run): On insistende. broke a line to be 80-column
	compliant.
	(move): On insistende. broke a line to be 80-column compliant

2000-03-10    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (move): Added in code for correct pre/post exec.

2000-03-09    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (start_item): Inserted NULL check for item and action.
	(move[SPLIT]): Found a "nice" bug. When supposedly linking from
	<current>/items/<item> to <next>/exits/<exit>/items/<item>, we
	actually try to place a link from <current>/items/<item> to
	<current>/exits/<exit>/items/<item>. ISTR changing this a while
	back and am now changing it *back*. Ah, well...
	(move): Bah. Another bug spotted. Do Not Push Items Onto A SPLIT
	action.
	(move): Changed a nested if into a switch statement. Looks
	cleaner, that way...
	(move): Fixed a cleanup issue when a JOIN node is activated (item
	is not cleared from node's item-list.

2000-02-27    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (read_item): That llist_remove stuff was actually an
	uninitialised pointer here. Ah, well. Some severe head-scratching
	has been Going On. Tryage with testsys things continue at a
	slightly more harmonious pace.

2000-02-25    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (read_action): We need to read exits from a
	joiner... Otherwise, we have a sheepload of shit to handle
	later. This is *probably* what looked like a locking bug.

	* llist.c (llist_remove): Something fishy here. Try a rewrite.

2000-02-24    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (read_all_actions): Eh. Very real fd leak. Fixed.
	(read_all_items): C'n'P-ed read_all_actions and changed action to
	item. This should, at some point, be tested. Would slow starting
	up down, a bit, but... 

2000-02-23    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (read_all_actions): Eeep. Potential bugsource found.
	Add in error checking here.

2000-02-22    <ingvar@sniffer1.telenordia.se>

	* wf-client.c: Started.

	* wf-server.c (write_item): added a free(buf) towards the end.
	(write_ok): implemented.
	(write_error): implmented.

2000-02-20    <ingvar@sniffer1.telenordia.se>

	* wf-server.c (process): Heh. Seems as I already had *some* of the
	functionality needed for this, over in wf-net.c Ah, well... I'm
	glad I don't have to re-implement it needlessly.

2000-02-19    <ingvar@sniffer1.telenordia.se>

	* wf-server.c: This file has been in creation for a while. Decided
	to go for a double network protocol.

2000-02-17    <ingvar@sniffer1.telenordia.se>

	* wfshell.c (main): Ooops! Last time's fix broke things
	completely! If we take care to return error status, we bloddy well
	should check for the *right* thing (<0 .vs. !=0)

2000-02-03    <ingvar@sniffer1.telenordia.se>

	Generally: We're now up to 0.0.1 Alpha. Upload new code tonight?
	* README: Added a new Q&A pair...

	* wfshell.c (main): Added error checking (of /(wf_)?init(_wf)?/

	* wf-engine.c (read_all_actions): Added error checking (specifically,
	*is* there a directory to open? (related to Goh core dump?))

2000-02-01    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (make_item): Added client-side code.
	(make_action): Added server-side code.

2000-01-29    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (make_item): Design question, one source file for
	server-side *and* client-side netlib? ATM, the answer is "yes".

2000-01-28    <ingvar@sniffer1.telenordia.se>

	* wf-net.c (read_token): Implemented
	(reader): Implemented

2000-01-22    <ingvar@sniffer1.telenordia.se>
	* General: Started "Real Comment Blocks", to make sure code is
	readable (note to self, that requires c-comment.el on the toad).
	* llist.c (llist_traverse): Added Yet Another function, for
	side-effect-only list traversal (seems as if I've managed to
	introduce a slight bug, somewhere...)
	[2000-02-01: Didn't note down reason for bug. One pointer dereference
	too few makes for weirdo bugs]

	* wf-engine.c (read_all_actions): Moved insertion of new action into
	action db from read_all_actions() to find_action, where it belongs
	(I mean, what happens if someone hands us a new action during a run?)

2000-01-21    <ingvar@sniffer1.telenordia.se>

	* wf-engine.c (read_item): Added code to extract what items (if any)
	that a specific item lives in.
	(extract_action): Added helper function for above. Glob returns
	"full paths", not just the matched data.
	(read_all_actions): Modified insertion of newly read action, to
	guard against infinite loops.
	(read_action): Modified point where name of action-to-read is
	inserted into permanent record, to avoid infinite loops.

2000-01-16    <ingvar@sniffer1.telenordia.se>

	* wfshell.c: Added show_help, modded repl() to use a macro
	(to simplify further extensions), hard-coded all literals to
	type LITERAL in repl(). Noted bizarre bug when a token match
	one of the pre-defined token strings (he-he).

	* Makefile (mapbuilder.o): Added support for default playground to
	be the same as default for wflib.a...

2000-01-14    <ingvar@sniffer1.telenordia.se>

	* mapbuilder.c: Fixed the reader bug, proceeding with tests. For
	future reference, it *really* helps to actually tack on the next
	element, even after having recursed to read a sublist.
	(process): Helps if one pushes an action onto the global list, eh?

	* wf-engine.c (start_item): Wrote this function. Previously, starting
	an item required internals knowledge...

	* wf-engine.h: Removed read_action() and read_item() from public
	interface. They are strictly internal.

	* wf-engine.c: Added macro support for playground definition from
	Makefile.

	* Makefile: Added targets "all" and "dist-clean". Also started
	preparing for a better handling of default playground and
	installation.

