2003-05-01  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (stop.<service>): Ignore the result of the
	user-defined stop code.  Set the `running' slot of the service to
	`#f' in any case.
	(<service>): Adopted semantics of `stop' slot.

	* support.scm (opt-lambda): New macro.
	* self.scm (persistency): Use it.
	* service.scm (make-kill-destructor): Likewise.

2003-04-27  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm (enable-persistency): Renamed to ...
	(persistency): ... this.  New action.
	(disable-persistency): Renamed to ...
	(no-persistency): ... this.  New action.

2003-04-25  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (label): New macro.
	* self.scm (enable-persistency): Use `label' and `case-lambda'
	instead of `lambda*'.
	* dmd.scm: Don't use module `(ice-9 optargs)'.

	* service.scm (doc.<service>): Don't break if given action is not
	provided by the service.
	(first-running): Simplify.

2003-04-24  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm (enable-persistency): New optional argument `file' for
	setting the persistency state file.
	* dmd.scm: Use module `(ice-9 optargs)'.

2003-04-21  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (process-command): Fix handling of `dmd-status'.  Also
	cleaned up the code.
	* service.scm (handle-unknown): New procedure.

	(make-actions): Bugfix: Exchange position of procedure and
	docstring in the created pairs.

	* self.scm (detailed-status): Updated to change of Apr 10.

	* service.scm (<service>): Default init value of `start' slot is
	now a procedure that takes no arguments.  Similar for `stop': It
	accepts only one argument now.

	* examples/_unknown.scm (compose): New procedure.
	(unknown-service): Use it in the `start' action.
	(look-for-service): Cleaned up.

2003-04-20  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (lookup-running): New procedure.
	(depends-resolved?.<service>): Use it.
	(launch-service): Likewise.
	(stop.<symbol>): Likewise.
	(action.<symbol>): Likewise.

	(status.<symbol>): Show status of running service, if any.
	Otherwise, show status of all who provide the symbol.  Also
	display `dmd-status' only if service does not provide a `status'
	action.

	(lookup-running-or-providing): New procedure.
	(action.<symbol>): Use it.
	(status.<symbol>): Likewise.

	(<service>): Field `actions' is a list now instead of a hash.
	(action:name): New procedure.
	(action:proc): New procedure.
	(action:doc): New procedure.
	(lookup-action.<service>): New method.
	(defines-action?.<service>): Adopted to the new structure of the
	`actions' slot.
	(actions-list.<service>): Likewise.
	(action.<service>): Likewise.
	(doc.<service>): Likewise.
	(make-actions): Made the docstring optional.  Also, adopted to new
	structure of `actions' slot of `<service>'.

	(action.<service>): Show `dmd-status' in the default
	implementation of `status'.
	(status.<symbol>): Removed.
	* dmd.scm (process-command): Don't handle `status' action here.

2003-04-18  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (caught-error): Handle `wrong-number-of-args'
	specially.

	* service.scm (action.<service>): Check whether the number of args
	is ok.  Display a useful message if not.
	* support.scm (can-apply?): New procedure.

2003-04-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	(stop.<service>): If the service is respawnable, still set its
	running slot to `#f' before calling the destructor, but do call
	the destructor with the original value of the slot.

	* examples/_unknown.scm (look-for-service): Additional (optional)
	argument: A predicate that a service must satisfy.
	(unknown-service): Look for running or non-running services first,
	whichever makes more sense in the particular case.

2003-04-16  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (<service>): Renamed slot `extra-actions' to
	`actions'.
	(defines-extra-action?.<service>): Renamed to ...
	(defines-action?.<service>): ... this.  All callers changed.
	(extra-action.<service>): Renamed to ...
	(action.<service>): ... this.  All callers changed.
	(extra-action.<symbol>): Renamed to ...
	(action.<symbol>): ... this.  All callers changed.
	(make-extra-actions): Renamed to ...
	(make-actions): ... this.  All callers changed.

	(make-forkexec-constructor): Use the arguments given to us, not
	those given to the created procedure.

2003-04-13  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (status.<symbol>): Implement.

	* Makefile.am (EXTRA_DIST): Add file `QUESTIONS'.

2003-04-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (extra-action.<service>): Handle `status' default
	action, but do nothing in its implementation.
	(status.<symbol>): New method.
	* dmd.scm (process-command): Handle `dmd-status' and `status'.

2003-04-10  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (default-display-status.<service>): Renamed to ...
	(dmd-status.<service>): ... this.  New procedure.
	(extra-action.<service>): Don't provide a default implementation
	of `status' here.

2003-04-09  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (process-args): Make `--file -' and `-f -' work like
	`--file=-' and `-f-', repectively.
	* dmd.scm (main): Use `-' instead of `none' as file name to
	specify for readings commands from stdin (`--socket').

2003-04-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Forked off version -0.6.

2003-04-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (extra-action.<symbol>): Prevent arguments from
	getting lost for the `doc' action.
	(doc.<service>): Make it work at all by using symbols instead of
	strings in the `case' structure.

2003-04-07  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* examples/_unknown.scm (differs-in-case?): Renamed to ...
	(differs-only-in-case?): ... this.  New procedure.  All callers
	changed.

	* service.scm (<service>): Every value in the `extra-actions' hash
	now consists of a pair with the procedure in the CAR and the
	docstring in the CDR.
	(extra-action.<service>): Adopted to new structure of the
	`extra-actions' slot.
	(make-extra-actions): Likewise.
	(doc.<service>): Display docstring on request.

	* support.scm (split-case): Removed.
	* service.scm (doc.<service>): Don't use `split-case' anymore.

2003-03-28  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (make-childexec-constructor): Renamed to ...
	(make-forkexec-constructor): ... this.  New procedure.

	(make-kill-destructor): Default to SIGTERM.
	* dmd.scm: Use module `(srfi srfi-16)'.

2003-03-25  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* comm.scm (terminatimg-string): Moved out of dmd specific code,
	as it is also used by deco.

2003-03-23  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* examples/_unknown.scm (look-for-service): New procedure.
	(unknown-service): New extra-actions `stop' and `extra-action'.
	Let `start' use `look-for-service'.

	* service.scm (register-services): Verfify that canonical names
	are actually canonical.

	(make-childexec-constructor): Accept arguments, but ignore them.
	(make-kill-destructor): Likewise.
	(make-system-constructor): Likewise.
	(make-system-destructor): Likewise.
	(make-init.d-service): Updated to use the new names of the
	procedures.  This should have been done *much* earlier.

	(extra-action.<symbol>): Actually make the ``unknown service''
	feature work.

2003-03-15  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm: Use module `(ice-9 readline)'.
	(main): Enable readline if we read commands from stdin
	and it is a non-dumb terminal.  Exit on `C-d'.

2003-03-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (conflicts-with.<service>): Cleaned up.
	(find-running): Renamed to ...
	(first-running): ... this.  New procedure.  All callers changed.

2003-03-09  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* configure.in: Check for version of Guile being at least 1.5.x.

2003-03-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* examples/_unknown.scm: New file.
	(lacks-char-from?): New procedure.
	(differs-by-missing-char?): New procedure.
	(differs-by-switched-chars?): New procedure.
	(differs-by-one-char?): New procedure.
	(differs-in-case?): New procedure.
	(similar?): New procedure.
	(unknown): New service.
	* examples/Makefile.am (EXTRA_DIST): Add the new file.

2003-03-02  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (without-system-error): Renamed to ...
	(catch-system-error): ... this.  New macro.  All callers changed.
	(local-output): Don't send data to deco.
	(extra-output-sender-enabled): Removed.
	(without-extra-output): Removed (new implementation in comm.scm).
	* comm.scm (without-extra-output): New macro.
	(dmd-output-port): Send data to deco.  Buffer the output for the
	logfile line-wise.
	* deco.scm (main): Don't display additional newlines.

	* support.scm (extra-output-sender): Moved to ...
	* comm.scm (extra-output-sender): ... here.
	* support.scm (open-extra-sender): Moved to ...
	* comm.scm (open-extra-sender): ... here.
	* support.scm (close-extra-sender): Moved to ...
	* comm.scm (close-extra-sender): ... here.
	* support.scm (terminating-string): Moved to ...
	* comm.scm (terminating-string): ... here.

2003-02-25  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (display-version): Display stuff directly.
	* config.scm.in (banner): Removed.

	* support.scm (local-output): Don't do logging here anymore.
	(real-output-port, void-output-port): Removed.
	(log-output-port): Moved to ...
	* comm.scm (log-output-port): ... here.  Conditional for dmd.
	(dmd-output-port): Do logging here now.

	* support.scm (without-extra-output): When catching an error, set
	`extra-output-sender-enabled' to `#t', not to `#f'.

2003-02-23  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (begin-dmd): New macro.
	* comm.scm (dmd-output-port): Define only for dmd, not for deco.
	(original-output-port): Likewise.
	(silent): Likewise.
	(be-silent, be-verbose): Likewise.

	* support.scm (verify-dir): Code cleanup.

	* service.scm (start.<service>): Simplified.  The different cond
	clauses don't need to give a return value anyway, so these got
	removed.

	* self.scm (cd): New extra-action for dmd.

2003-02-22  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (be-silent, be-verbose): Removed.
	* comm.scm (original-output-port): New variable.
	(dmd-output-port): New variable.  Use it as current output port.
	(silent): New variable.
	(be-silent, be-verbose): New procedures.

2003-02-21  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (process-command): Don't handle `list-actions' here.
	* service.scm (extra-action.<service>): Don't handle `doc' here.
	(extra-action.<symbol>): Handle both of them here instead.
	(doc.<service>): New method.
	(display-extra-actions.<symbol>): Removed.
	* support.scm (split-case): New macro.

2003-02-20  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm (dmd-service): Added docstrings for the service and all
	its extra-actions.
	* service.scm (make-extra-actions): Accept docstring argument.  It
	gets ignored for now.  Also, made code more readable by using the
	extended `for-each' from SRFI-1.
	(<service>): New slot `docstring'.
	(extra-action.<service>): Default action takes arguments, new
	handled action `doc'.

2003-02-20  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Forked off version -0.7

2003-02-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): Read commands from stdin if `none' was specified
	as socket file name.

2003-01-25  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (extra-output-sender-enabled?): Renamed to ...
	(extra-output-sender-enabled): ... this.  New variable.  All users
	changed.

2003-01-01  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* config.scm.in (copyright): Updated year.

	* service.scm (defines-extra-action?.<service>): New method.
	(launch-service, stop.<symbol>, extra-action.<symbol>): Only use
	the unknown service as fallback if it provides the relevant
	extra-action.

	(<service>): Require slot `extra-actions' to never contain #f, but
	always contain a hash table.
	(extra-action.<service>): Simplify.

	(depends-resolved?.<service>): Don't apply `find-running' on the
	service symbol directly.

	(stop.<service>, extra-action.<service>): If dmd does quit, use
	the correct quit value.

	(extra-action-list.<service>): New method.
	(display-extra-actions.<symbol>): New method.
	* dmd.scm (process-command): Handle action `list-actions'.

	(main): Fail more gracefully if the persistency state file cannot
	be opened.  Also cleaned up variable names.
	(persistency?): Renamed to ...
	(persistency): ... this.  New variable.  All users changed.
	* runlevel.scm (start-in-order): Implement.

	(register-runlevels): Take into account that `append!' is a
	linear-update procedure since the empty list cannot be modified.

2002-12-28  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (define-simple-syntax): Renamed to ...
	(define-syntax-rule): ... this.  New macro.  All callers changed.

	* service.scm (launch-service): Display a clear useful message if
	no service provides what was requested.
	(start.<service>): If the problem is a dependency, tell the user
	about this fact.

2002-12-27  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): Adopted options to recent changes in args.scm.
	* deco.scm (main): Likewise.  Also fixed typo in option
	`--result-socket'.

	* support.scm (local-output): Don't pass `format' to `l10n', and
	don't try to pass the result of this to `apply'.  This construct
	only ever worked because `l10n' is not yet implemented.

	* args.scm (arg-name.<option>): Removed.  Now a getter for the
	slot `arg-name' of class `<option>'.

2002-12-26  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (launch-service): Fix handling of unknown services.
	(extra-action.<service>): Simplify.

	(procedure-with-n-args?): Removed.

2002-12-20  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (<service>): Fix what I messed up yesterday: Slot
	`start' must be callable without argument, `stop' must be callable
	with one argument.
	(list-of-symbols?): Fix typo.
	(launch-service): Fixed unknown service feature.
	(stop.<symbol>, extra-action.<symbol>): Likewise.

	* dmd.scm (process-args): Use `apply' instead of passing the
	argument list as single argument to `start', `enforce' and `stop'.

	* examples/wolfgangj.scm: Various minor fixes.

2002-12-19  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* comm.scm (receive-data.<receiver>): Fixed handling of invalid
	data.  Should not happen, but better do it right anyway.

	* service.scm (<service>): The procedures stored in the start and
	stop slots must take an arbitrary amount of arguments now.
	(start.<service>, enforce.<service>, stop.<service>): Updated.
	(start.<symbol>, enforce.<symbol>, stop.<symbol>): Likewise.
	(launch-service): Updated, and fixed a bug that occured when the
	service is unknown and there is a `unknown' service that is
	supposed to handle this case.

	(procedure-with-n-args?): Don't yield a procedure anymore.  There
	is no point in it since we use GOOPS now instead of our own
	system.

	(list-of-symbols?): Simplified.

	* dmd.scm: Don't use `(srfi srfi-8)' anymore.
	(process-command): Replaced `receive' with a `let',
	which is much simpler.

	* args.scm (<option>): Removed slot `takes-arg'.  Added slots
	`takes-arg?', `optional-arg?' and `arg-name'.  Removed unnecessary
	getter `description'.
	(takes-arg?.<option>): Removed (now a getter).
	(optional-arg?.<option>, long-option-string.<option>): Updated.
	(display-doc.<option>): Updated and fixed local procedure
	`fill-to' to not pass a string instead of a character to local
	procedure `output'.

	* self.scm (daemonize): Quit, not kill.
	* dmd.scm (extra-action.<service>): Allow all actions of `dmd' to
	quit.  Now all actions need to take care that they don't invoke
	user-defined code without quit-protection.

2002-11-27  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* utils/dmd-gettext.scm (i18n-keywords): Renamed to ...
	(l10n-keywords): ... this.  New variable.

	* utils/sysvconfig.scm: Clarified output header text.

	* args.scm (process-args): Minor cleanup of error output code.
	* comm.scm (receive-data.<receiver>): Likewise.

2002-11-26  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm: Use module `(srfi srfi-8)'.
	(process-command): Replace call-with-values with receive.

2002-11-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (process-arg): Display long options for --usage.
	Fix display of short options.
	Display syntax of non-option arguments.
	Cleanup: Removed all usages of slot-ref.

2002-10-27  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (make-childexec-constructor): Simplify.
	(procedure-with-n-args?): Use `=' instead of `equal?'.

2002-10-21  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (extra-action.<symbol>): Invoke the service
	`unknown' if the service is not known.
	(stop.<symbol>): Likewise.
	(launch-service): Likewise.

	(make-init.d-service): Allow for passing arguments down to
	`make', so that e.g. dependencies can be specified.

2002-10-18  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* runlevel.scm (start-in-order): New procedure.
	* service.scm (depends-resolved?.<service>): New method.

	(running?.<service>): Beautify and optimize.

2002-10-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm (enable-persistency, disable-persistency): New
	extra-actions.
	* dmd.scm (main): Read list of services from file.

	* args.scm (long-option-string.<option>): Fix display.  It is
	`opt-arg?' now, not `optional-arg?'.
	(process-args): Handle short options with optional argument
	correct if no argument was given.

2002-10-16  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (process-args): Display short options for --usage.

	* dmd.scm (persistency?): New variable.
	(persistency-state-file): New variable.
	(main): New option: --persistency 
	* self.scm (stop): Write state into the above when requested.

	* dmd.scm (main): New options: --silent and --quiet.

2002-10-14  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (optional-arg?.<option>): New method.
	(long-option-string.<option>): Use it.
	(process-args): Handle `--usage'.

	* utils/sysvconfig.scm: New file.
	(services-dir): New variable.
	(make-config, init.d-services): New procedures.
	* utils/Makefile.am (EXTRA_DIST): Add sysvconfig.scm.

2002-10-13  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (procedure-with-n-args?): Don't assume that `arity'
	is always the first field.

2002-10-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* utils: New directory.
	* Makefile.sm (SUBDIRS): Add it.
	* configure.in (AC_OUTPUT): Likewise.
	* utils/Makefile.am: New file.
	* utils/dmd-gettext.scm: New file.
	(puts, found-string, extract-strings): New procedures.
	(i18n-keywords): New variable.
	* support.scm (l10n, local-output): Write it with lambda.

2002-10-10  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* examples/README: New file.
	* examples/Makefile.am (EXTRA_DIST): Add it.

	* service.scm (make-service-group): New macro.  Suggested by
	Alfred M. Szmidt <ams@gnu.org>.

	* support.scm (define-simple-syntax): New macro.  All callers of
	define-syntax changed to use this instead.

2002-10-09  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* runlevel.scm (enter.<runlevel>): Fixes, cleanups and
	extensions.  Still far from being finished.

2002-10-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): New option: `--logfile' (`-l').
	* self.scm (daemonize): Undo last change.

	* config.scm.in (bug-address): New variable.
	* args.scm (process-args): Use it.

	* deco.scm (main): Use letrec instead of named let.
	* dmd.scm (main): Likewise.
	* service.scm (list-of-symbols?): Likewise.

2002-10-07  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (respawn-service): Ignore system errors.

	(<service>): New slots: `waiting-for-termination?' and
	`stop-delay?'.
	(stop.<service>): Mark service as waiting for termination if the
	corresponding option is set.
	(respawn-service): Do not respawn it if stop is supposed to
	prevent respawning and it has been stopped.  Instead, mark it as
	stopped.

	* Makefile.am (%.in->%): Also depend on Makefile.

	* support.scm (log-output-port): New variables.
	(start-logging, stop-logging, l10n): New procedure.
	(local-output): Write to the logfile, including date.
	(user-homedir, default-logfile): New variables.
	* dmd.scm, deco.scm: Use module (ice-9 rdelim).
	* self.scm (daemonize): Activate the logging.

2002-10-06  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (respawn-service): If the service is disabled, don't
	try to restart it again, but enable it.

2002-10-05  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* deco.scm (main): Pass working directory to dmd.
	* dmd.scm (main): Take working directory from deco and cd to it.

	* support.scm (without-extra-output): New macro.
	(extra-output-sender-enabled?): New variable.
	(local-output): Send text to socket only when desired.
	* service.scm (respawn-service): Use `without-extra-output'.

2002-10-04  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm (daemonize): New extra-action.

2002-10-04  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Forked off version -0.8

2002-10-02  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (make-childexec-constructor): New procedure.
	(make-kill-destructor): New procedure.
	(stop.<service>): Set the `running' slot to #f before executing
	the destructor for respawnable services.

2002-09-30  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dirs.scm.in: Renamed to ...
	* config.scm.in: ... this.  New file.
	* Makefile.am (templates): Updated.
	(dmd_DATA): Updated.
	* deco.scm: Updated.
	(program-name): New variable.
	* dmd.scm: Updated.
	(program-name): New variable.
	(banner, copyright): Moved to ...
	* config.scm.in (banner, copyright): ... here.  New variables.

	* args.scm (display-doc.<option>): New method.
	(long-option-string.<option>): New method.
	(process-args): Display options on `--help'.
	Take argument syntax, description and default handler as
	arguments.
	* dmd.scm (main): Updated.
	* deco.scm (main): Updated.

2002-09-29  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (service-destructor-system): Renamed to ...
	(make-system-destructor): ... this.  New procedure.
	(service-constructor-system): Renamed to ...
	(make-system-constructor): ... this.  New procedure.

	(make-system-destructor): Return `#f' on success, as is expected
	from a destructor.

	(conflicts-with-running.<service>): New method.  Code taken from
	start.<service>.
	(start.<service>): Updated.
	(enforce.<service>): New method.
	(launch-service): New procedure.  Code taken from start.<symbol>.
	(start.<symbol>): Use the above.
	(enforce.<symbol>): New method.
	* dmd.scm (process-command): Added `enforce' action.

2002-09-27  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (extra-action.<service>): Don't handle `enable' and
	`disable' here at all.
	(extra-action.<symbol>): Handle them here instead.
	(find-running): Return service instead of canonical name.  All
	callers changed.

	* dmd.scm (main): Catch errors in the configuration file, but
	abort when they occur.

2002-09-26  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (respawn-limit): New variable.
	(<service>): Use the above to initialize `last-respawns'.
	(respawn-service): Use `respawn-limit'.

	* support.scm (local-output): Protect against system error when
	using extra-output-sender.
	(open-extra-sender, close-extra-sender): Protect entire procedure
	against system errors.

	* service.scm (extra-action.<service>): Make default actions
	callable even when the service is not running.
	(extra-action.<symbol>): Apply on all if none of the possibilities
	is running.

2002-09-25  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* comm.scm: New file.
	(<sender>): New class.
	(initialize.<sender>): New method.
	(send-data.<sender>): New method.
	(<receiver>): New class.
	(initialize.<receiver>): New method.
	(receive-data.<receiver>): New method.
	* support.scm (default-deco-socket-file): New variable.
	(select+recv!, get-message): Removed.  The functionality is now in
	receive-data.<receiver>.
	(local-output): Also send output to deco.
	(extra-output-sender): New variable.
	(terminating-string): New variable.
	(open-extra-sender, close-extra-sender): New procedures.
	(verify-dir): New procedure.
	* dmd.scm: Load comm.scm.
	(main): Use <sender> and <receiver> to exchange command and
	resulting output.
	(process-args): Take additional file name argument into account.
	* deco.scm: Load comm.scm.
	(main): Like in dmd.scm.
	* Makefile.am (dmd_data): Added comm.scm.

	* service.scm (<service>): New slots: `enabled?' and
	`last-respawns'.
	(start.<service>): Don't start if not enabled.
	(respawn-service): Disable if respawning too fast.
	(extra-action.<service>): New default actions `enable' and
	`disable'.
	(default-display-status.<service>): Display whether the service is
	enabled or not.

2002-09-22  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (<option>): Renamed `takes-arg?' slot to `takes-arg'
	and changed the semantics.  Deleted getter.  All users changed.
	(process-args): Updated.  Also abort in some error cases.
	(takes-arg?.<option>): New method.

	* dmd.scm (select+recv!): Moved to ...
	* support.scm (select+recv!): ... here.  New macro.
	(get-message): New procedure.  Code taken from procedure `main' in
	dmd.scm.

2002-09-21  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Forked off version -0.9

2002-09-21  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (process-command): Don't crash when called with too few
	args.

	* deco.in, dmd.in: Don't use a `--' argument, as Guile stopps
	processing args after the script name was given anyway.

	* Makefile.am (install-hook): Renamed to ...
	(install-data-local): ... this.  New target.

	* deco.scm, dmd.scm: Load dirs.scm.
	* support.scm (default-config-file, default-socket-dir): Use
	Prefix-dir as file/directory name prefix.

	* examples: New directory.
	* Makefile.am (SUBDIRS): New variable.
	* configure.in (AC_OUTPUT): Add new directory.
	* examples/Makefile.am: New file.
	* examples/wolfgangj.scm: New file.

2002-09-20  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): Fail if no argument given to options --config
	and --socket.

	* COPYING.DOC: New file.  The GNU Free Documentation License,
	version 1.1.

	* configure.in: New file.
	* Makefile.am (dmd, deco, dirs.scm): Unite into one target.
	(%.in->%): Use `,' as seperator for directory name replacing.
	(dmd_data): New variable.
	(dmd_DATA): Use the above.
	(templates): New variable.
	(EXTRA_DIST): New variable.
	* testcase.scm: Removed.

	* INSTALL, install-sh, missing, mkinstalldirs, texinfo.tex: New
	files.  Ok, I didn't add those, automake did it for me.
	* aclocal.m4: New file, created with aclocal.

2002-09-19  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): Kill socket on startup if it exists, so that we
	can use it.  It seems strange that we have to do this, though.
	* support.scm (without-system-error): New macro.

	* deco.scm: Actually call main.
	(main): Send correct number of messages as handshake again.

2002-09-18  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): New command line option: `--insecure' (`-I').
	Ensure that the socket directory setup is secure if this option
	was not given.

	* Makefile.am: Generate dirs.scm.
	* dirs.scm.in: New file.
	* support.scm (default-socket-dir): New variable.
	* dmd.scm (main): Create default socket directory on startup, if
	we need it.

	* deco.scm: Load the same modules as dmd does.  Also load
	support.scm and args.scm.
	(main): New procedure.  New option `--socket' (`-s').
	* dmd.scm (display-version): Moved to ...
	* support.scm (display-version): ... here.  New procedure.

	* THANKS: New file.

2002-09-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* Makefile.am, deco.in, dmd.in: New files.  Suggested by Jeff
	Bailey <jbailey@nisa.net>.

2002-09-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Released version -0.9.6

2002-09-17  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (process-args): Handle short options.

	* service.scm (respawn-service): New procedure.  Active it as
	handler for SIGCHLD.
	* dmd.scm (main): Protect `recv!' calls with `select'.
	Suggested by Rob Browning <rlb@defaultvalue.org>.
	(select+recv!): New macro.
	* testcase: Make a service respawnable.

2002-09-16  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (process-command): Actually interpret the command.

	* self.scm (stop): Don't try to stop yourself recursively.  Eeek.
	* service.scm (stop.<service>): Allow user-defined code to call
	`quit' if it is from the dmd-service.
	* dmd.scm (process-command): Removed rescue-exit, because stopping
	dmd now works correct.

	* service.scm (stop.<symbol>): Don't display superfluous
	information.
	(extra-action.<symbol>): Cleaned up a bit.
	(conflicts-with): Turned `let*' into normal let.

	* service.scm (<service>): Initialize extra-actions to `#f'.
	(extra-action.<service>): Take into account that if we have no
	extra-actions, the slot may not contain a hash-table.

	* default.scm (default-config-file): New variable.
	(default-socket-file): New variable.
	* dmd.scm (main): Use those.

	* args.scm (process-args): Recognize unambigous abbreviations for
	long options.  Also make it possible to stop further
	interpretation of arguments (`--').

2002-09-16  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Released version -0.9.7

2002-09-16  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm (main): Read commands from the socket.  Use default
	socket "/var/run/dmd/$USER/default".
	(process-command): New procedure.
	* deco.scm: New file.
	* testcase.scm: Disable testing code for now.

2002-09-15  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm (process-args): Recognize long options.
	* dmd.scm: Load args.scm again.
	New options: -c (--config) and -s (--socket).

	* service.scm (start.<symbol>): Simplified using find-running.
	(stop.<symbol>): Likewise.  Also use local-output.
	(default-display-status.<service>): Display `respawn?' value.
	(display.<service>): Removed.  Obsoleted by the above.

	* support.scm (puts): Removed.  All previous callers now use
	local-output instead (hopefully).

2002-09-14  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (start.<service>): Catch possible errors in
	user-defined action.
	(stop.<service>): Likewise.
	(extra-action.<service>): Likewise.
	* support.scm (caught-error): New procedure.
	* self.scm (load): Do not catch anymore yourself.

	* support.scm (call/ec): Implement efficiently.
	(assert): Throw an exception.

	* dmd.scm: Load module (srfi srfi-13).
	* args.scm (process-args): Started reimplementation for GOOPS.
	(<option>): Removed slot `occured?', added slot `takes-arg?' and
	removed init-value for slot `action'.
	(<option-with-arg>): Removed.  Its functionality is covered by the
	now generalized <option> class.

	* service.scm (conflicts-with.<service>): New method.
	(default-display-status.<service>): Use the above instead of doing
	the same thing yourself.

2002-09-14  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Released version -0.9.8

2002-09-14  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* self.scm: New file.
	(dmd-service): New variable.
	(start, stop, status, load, restart): New extra-actions.
	* dmd.scm: Load self.scm.
	* testcase.scm: Display dmd status.

	* args.scm (<option>): New slot: action.
	Added getter for `occured?'.
	(<option-with-arg>): New slot: action.

	* support.scm (silent): Removed.  It was never used.
	(real-output-port, void-output-port): New variables.
	(be-silent, be-verbose): New procedures.
	* self.scm (silent, verbose): New extra-actions.

	* service.scm (extra-action.<service>): Make passing an arbitrary
	number of arguments to the extra-action possible.
	(extra-action.<symbol>): Likewise.
	* testcase.scm: Pass an additional argument to an extra-action.

	* support.scm (local-output): New procedure.  Most callers of
	`puts' changed to use this instead.

	* self.scm (detailed-status): New extra-action.
	* dmd.scm: Load module (srfi srfi-1).
	* service.scm (default-display-status.<service>): New method.
	(extra-action.<service>): Use the above.

2002-09-13  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (start.<symbol>, stop.<symbol>): Try all
	possibilities.
	(start.<service>): Start dependencies via symbol.

	(make-init.d-service): Updated to GOOPS.
	(init.d-add): Removed.

	* support.scm (call/ec): New procedure.  Updated all to use it
	instead of call/cc.

	* service.scm (extra-action.<service>): New method.
	(extra-action.<symbol>): New method.
	(find-running): New procedure.
	* testcase.scm: Use extra-actions.

2002-09-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* support.scm (ewal, define-struct): Removed.  Obsoleted by
	GOOPS.

	* service.scm (copy-hashq-table): Moved to ...
	* support.scm (copy-hashq-table): ... here.

	* args.scm (<option>, <option-with-arg>): New classes.

2002-09-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS: Released version -0.9.9

2002-09-12  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* runlevel.scm (define-runlevel): Removed.  Obsoleted due to
	GOOPS.
	(services-to-start, dequeue-service, enqueue-service): Likewise.
	(depending-running-services): Likewise.
	* service.scm (do-restart-service, call-method): Likewise.

	* dmd.scm: Don't load args.scm for now.
	(main): New procedure.
	* service.scm (start.<symbol>, stop.<symbol>): New methods.
	(display.<service>): New method.

	* testcase.scm: New file.  Contains testing code.
	(c, d): New procedures.
	* dmd.scm (main): Process configuration file.

2002-09-11  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* runlevel.scm (enter.<service>): Restructured to prepare for a
	working implementation.

2002-09-10  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (for-each-service): New procedure.
	(start.<service>): Updated to use `for-each-service'.
	(stop.<service>): Implement stopping of other services.
	(<service>): Added getter for slot `requires'.

	* runlevel.scm (enter.<runlevel>): Renamed to ...
	(enter-selector.<runlevel>): ... this.  New method.
	(leave.<runlevel>): Renamed to ...
	(leave-selector.<runlevel>): ... this.  New method
	(enter.<runlevel>): New method with different semantics.
	(current-runlevel): New variable.

	* support.scm (silent): New procedure.

2002-09-09  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (start.<service>): Avoid that two conflicting
	services can get started.
	(stop.<service>): New method.
	(<service>): Added getter for slot `provides'.

	(do-start-service, do-stop-service): Removed.  They are obsolete
	due to conversion to GOOPS.
	* warning.scm: Removed file.  Also obsolete now.

2002-09-08  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (make-extra-actions): New macro.

	(register-service): Renamed to ...
	(register-services): ... this.  New procedure.
	(services-max-cnt, services-cnt): New variables.
	(register-services): Dynamically resize the hash table on demand.
	(copy-hashq-table): New procedure.

2002-09-07  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (running?.<service>): New method.
	(start.<service>): Resolve dependencies.
	(lookup-service): Renamed to ...
	(lookup-services): ... this.  New procedure.

	(<service>): New slot: extra-actions.

2002-09-06  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (canonical-name.<service>, start.<service>): New
	methods.

2002-08-31  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* service.scm (services): Now a hash-table instead of a list.
	(find-service): Renamed to ...
	(lookup-service): ... this.  New procedure.  All callers changed.
	Also adopted to use the hash table.
	(find-service-from): Removed.
	(register-service): Adopted to use the hash table.

2002-08-30  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.texi, configure, Makefile: New files.

2002-08-29  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* dmd.scm: Load the GOOPS module.
	* service.scm (<service>): New class.
	* runlevel.scm (<runlevel>, <runlevel-exact>, <runlevel-changes>):
	New classes.
	(enter.<runlevel>, leave.<runlevel>): New methods for <runlevel>
	and all subclasses.

2002-08-28  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* NEWS, README: New files.

2002-08-28  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* args.scm, runlevel.scm, service.scm, support.scm, warning.scm:
	New files.

2002-08-28  Wolfgang Jhrling  <wolfgang@pro-linux.de>

	* AUTHORS, ChangeLog, COPYING, dmd.scm: New files.
