2012-02-26  Robert Luberda <robert@debian.org>

	* src/data.h, src/grammar.y: drop some unnecessary debugging messages
	produced while parsing configuration file.

	* man/Makefile.am: fix `non-POSIX variable name' warning.

	* release 0.8.2.

2012-02-05  Robert Luberda <robert@debian.org>

	* configure.ac: add support for AM_SILENT_RULES.

	* man/*: update the man pages "FILES" section during
	the install time so that the real files location
	are documented.

	* release 0.8.1.

2011-08-01  Helge Kreutzmann <debian@helgefjell.de>

	* Update German man pages translation (Debian bug#636237).

2011-07-25  Robert Luberda <robert@debian.org>

	* release rlinetd 0.8

2011-07-15  Robert Luberda <robert@debian.org>

	* main.c, rlinetd.8: document long options.

2011-07-09 Robert Luberda <robert@debian.org>

	* data.c, grammar.y, cleanups.c: minor portability fixes.

2011-07-02  Robert Luberda <robert@debian.org>

	* Fix typos in man pages noted by Christian Perrier
	<bubulle@debian.org>. Unfuzzy translations.

	* bytecode.c: Fix -Wformat-security error.

	* inetd2rlinetd.in: Implement --add-from-comment option.

2011-07-02  Helge Kreutzmann <debian@helgefjell.de>

	* German man pages translation.

2010-03-20  Robert Luberda  <robert@debian.org>

	* release rlinetd 0.7

2009-12-07  Robert Luberda  <robert@debian.org>

	* engine.c, main.c: Properly daemonize with daemon() function. Keep descriptions
	0, 1 & 2 opened to /dev/null.

	* bytecode.c: Call setsid() before execv() to prevent to prevent
	daemons like smbd from killing rlinetd with kill(0, SIGTERM)

	* data.h,assemble.c  grammar.y: Copy all settings from default service,
	redesign fixups and the service structure to make it work.

	* grammar.y: Rework interactions between initgroups, user and group directives.

	* grammar.y, rlinetd.conf.5: Support `yes' & `no' arguments for `initgroups'.

	* db.c: enhance bytecode debugging mode.

2009-02-10  Robert Luberda  <robert@debian.org>

	* Man pages fixes.

	* Copy translated man pages in dist target.


2009-02-10  Robert Luberda  <robert@debian.org>

	* connect.c: Disable unused rl_connect() function.

	* signals.c, lex.l: Fix -Wextra warnings.


2009-01-03  Robert Luberda  <robert@debian.org>

	* grammar.y: Add enable keyword to allow easily enabling/disabling services.

	* inetd2rlinetd.in: New options: --force-overwrite and --print-generated-files,
	mostly for supporting Debian's inetd server configuration management.

2009-01-01  Robert Luberda  <robert@debian.org>

	* Move source files to src dir.

2008-12-30  Robert Luberda  <robert@debian.org>

	* Add NLS support for binary program and man pages.

2008-04-13  Robert Luberda  <robert@debian.org>

	* bytecode.c: fix `undefined behaviour' warning which caused rlinetd
	compiled with gcc 4 to abort on internal services.

	* man/rlinetd.8, man/rlinetd.conf.5: minor fixes.

	* release rlinetd 0.6.2

2007-03-21  Robert Luberda  <robert@debian.org>

	* grammar.y: fix another possible stack corruption error, which occurs
	when the default service is configured as a RPC service (very
	unlikely configuration)

	* release rlinetd 0.6.1


2007-03-20  Robert Luberda  <robert@debian.org>

	* grammar.y: fix stack corruption error by NULL-ifing the destination
	rpc number list before passing it to the numlist_copy() function.

2007-01-02  Robert Luberda  <robert@debian.org>

	* grammar.y: fix segmentation fault on RPC services for which getaddrinfo()
	returns more then one addrinfo result.

2006-03-21  Robert Luberda  <robert@debian.org>

	* configure.ac: fix typo to make --with-nsl actually work.

2006-03-19  Robert Luberda  <robert@debian.org>

	* configure.ac: update or remove some autoconf macros.

	* configure.ac: implement --with-nsl option.

	* Makefile.am: remove debian directory from EXTRA_DIST.

	* NEWS, README.inetd, other doc files: update.

	* configure, Makefile.*: update autoconf stuff.

	* rlinetd 0.6.

2006-03-16  Robert Luberda  <robert@debian.org>

	* lex.l, grammar.y, data.h, inetd2rlinetd.in: implement the `wait'
	keyword, which sets instances to 1 and do not call accept() for
	the TCP services. This allows famd program to work correctly with
	rlinetd.

	* rlinetd.conf.5: document the new keyword.

	* examples/rpc: add example configuration file for RPC services.

2006-03-14  Robert Luberda  <robert@debian.org>

	* grammar.y: if a port for RPC services is not specified, made it
	dynamically assigned.

	* rlinetd.conf.5: document the above change.

	* inetd2rlinetd.in: for the RPC services always set rpc name, but never
	output the port to made it dynamic.

	* lex.l, grammar.y: made the T_NUMERIC terminal by default
	unsigned (i.e.  don't treat leading '-' as part of the number)
	and use new signed_numeric, when it's needed (only in the `nice'
	keyword, I think). This fixes error parsing RPC versions range
	like '2-3'.

	* bytecode.h, grammar.y, rlinetd.h:  properly define signed/unsigned
	types to remove the "pointer targets ...differ in signedness"
	warnings.

	* configure.ac: add check for socklen_t type

2006-03-13  Robert Luberda  <robert@debian.org>

	* grammar.y: fix double free problem in services_free().

	* grammar.y: pass proper port to pmap_set() when it's dynamically
	assigned for RPC.
	Thanks to Jakub Bogusz <qboosh+pld-linux.org> for the above patches.

	* signals.c, signals.h, engine.c: handle SIGTERM & SIGHUP by calling
	the services_free() function from the parser library to get the RPC
	services unregistered with pmup_unset().


2004-02-24  Robert Luberda  <robert@debian.org>

	* inetd2rlinetd.in: sub ask_user opens /dev/tty when STDIN is not
	connected to terminal

	* inetd2rlinetd.in: add -l option

	* rlinetd 0.5.19

2004-08-03  Robert Luberda  <robert@debian.org>

	* assemble.c, grammar.y: fix problem with building with gcc 3.4

	* port/*.c: created or updated files needed by autoconf

	* configure.ac: updated, renamed aux dir to auxiliary

	* rlinetd 0.5.16

2004-05-25  Robert Luberda  <robert@debian.org>

	* bytecode.c: in tcp wrappers code, don't call refuse() from libwrap,
	it exits program so the optional tcpd block won't be called

	* bytecode.c: when tcp wrappers denied connection, log suitable
	message (which was previously logged by refuse())

	* libdb.c, grammar.y: add second argument to argvtab_add() to not strip
	spaces in built-in echo command

	* update autoconf stuff

	* rlinetd 0.5.15

2003-01-03  Robert Luberda  <robert@debian.org>

	* data.h: added internal flag to service struct

	* grammar.y: for internal services like chargen, echo, discard append
	OP_CLOSE instead of OP_RET to onexit

	* buffer.c: initialize head and tail fields of *buf in rlbuf_init()

	* grammar.y: fix bison warning

	* many files: check return value of memory allocation functions.

	* Makefile.am: add -avoid-version to libparse_la_LDFLAGS

	* rlinetd 0.5.11

2002-01-29  Robert Luberda  <robert@debian.org>

	* grammar.y: fix internal services which got broken in 0.5.4

	* rlinetd 0.5.8

2001-12-01  Robert Luberda  <robert@debian.org>

	* configure.ac: added AM_MAINTAINER_MODE macro

	* rlinetd 0.5.7

2001-08-19  Robert Luberda  <robert@debian.org>

	* inetd2rlinetd.in: rewritten

	* inetd2rlinetd.8: updated

	* configure.in: renamed to configure.ac. All autofiles updated
	by aclocal & autoreconf

	* rlinetd 0.5.4

2001-08-08  Robert Luberda  <robert@debian.org>

	* grammar.y: not only setuid to uid from `user' directive, but
	also setgid to primary group of this user (unless `group' directive
	is specified).

	* grammar.y: better handling of T_UID, T_GID, T_INITGROUPS, T_NICE --
	all of these may be in the default service.

	* grammar.y: fix core dump when `initgroups' where used without `user'.


2001-07-09  Robert Luberda  <robert@debian.org>

	* error.c: new file. Moved rl_warn and rl_fatal here. Added rl_pwarn
	and rl_pfatal to log name and line number of parsed file.

	* grammar.y: changed to use rl_pwarn instead of warn.

	* error.c: in rl_(p)fatal call exit() instead of abort().

	* grammar.y: fix core dump when specifying unknown username in `log'
	directive.

	* main.c: chdir to "/" on startup.

	* man/rlinetd.8: added FILES section.

2001-07-04  Robert Luberda  <robert@debian.org>

	* aux/config.*, configure.in, */Makefile.in: updated

	* bytecode.c: fix "unknown opcode 19" problem (patch from PLD).

	* bytecode.c: use execvp instead of execv (patch from PLD).

	* man/inetd2rlinetd.1: renamed to inetd2rlinetd.8

	* rlinetd 0.5.2

1999-09-03  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* examples/builtins: example of easiest ways of doing typical
	inetd small services.

	* grammar.y: oops. fix up opcount for discard.

	* rlinetd 0.5.1 released

1999-08-29  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* engine.c: move getdtablesize() calls out of line in for loop.

	* grammar.y: move getdtablesize() calls out of line in for loop.

1999-08-27  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* config.h.top: protect config.h against multiple inclusion

	* libdb.c: fix up includes

	* db.h: fix up includes

	* config.h.bot: add an rlim_t typedef fallback

	* configure.in: test for rlim_t in <sys/resource.h>

1999-08-20  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* buffer.c: don't dereference errno for errors in do_{read,write},
	propagate EPIPE error without screaming. chargen actually works.

	* signals.c: SIG_IGN SIGPIPE

	* buffer.c: wrote buftab_addbuf, completed chargen support.

	* grammar.y: added 'loopback' directive to mean inetd-like echo
	service.

1999-08-14  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y (opcode_element): wrote chargen support

1999-08-13  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: append an OP_RET to onexit unconditionally, since the
	parent should have already closed the socket if necessary.

	* bytecode.c (run_bytecode): added OP_BUFCLONE,
	OP_BUFFREE. Renamed OP_BANNER to OP_BUFCOPY

	* grammar.y: wrote new opstream for banner directive in terms of
	OP_BUFCOPY.

	* libdb.c: renamed maptab* to buftab*

	* buffer.c: wrote rlbuf_copy, rlbuf_init

	* configure.in (libcap): unified the capability checks

1999-08-12  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* man/rlinetd.conf.5 (Example): document extended directory syntax
	and filter directive

	* configure.in (nogai): only look for libinet6 if we don't find
	getaddrinfo in the standard libraries.

	* grammar.y: added an ignore regexp to directory statement.
	(add_directory): check to make sure that we aren't opening a
	directory.

1999-08-07  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: accept a regexp in 'directory' statement to select
	config files out of the specified directory.

	* configure.in (lsf): look for getaddrinfo in libinet6

	* assemble.c: force OP_CHROOT to happen before OP_SUID

	* grammar.y: do strerror(errno) before close(fd).

	* bytecode.c (run_bytecode): make failures in OP_CHROOT fatal

1999-08-05  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* strings.c: wrote LOG_{A,C}TIME for easy implementing of
	{day,}time inetd service equivalents.

	* moved scripts into separate subdirectory

1999-08-02  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): coerce F_SETFD and F_SETFL to
	unsurprising values in OP_EXEC
	(run_bytecode): boggle. accept(2)'d children lose O_NDELAY?

	* grammar.y: oops - lost F_SETFD and F_SETFL on sockets since
	getaddrinfo. minor boo-boo. honest. do it unconditionally.

1999-08-01  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c: fixed up things to use inst->stk instead of ->reg,
	wrote OP_ADD, OP_SUB, OP_BZNEG, OP_DUP, OP_POP. 'echo' and
	'discard' should now theoretically handle errors.

	* rlinetd.h: removed 'reg' element from rl_inst, added a stack

	* bytecode.h: cleaned out irrelevant crap

	* stack.c: wrote basic stack handling functions

1999-07-30  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: wrote SO_ATTACH_FILTER handling, and 'filter'
	directive.

	* configure.in (libcap): removed AC_FUNC_MMAP test

	* libdb.c: removed all of the mmap stuff from maptabs; using
	rl_readfile instead.

	* grammar.y: wrote all the various support bits for filter and
	filterlen elements in c_s

	* util.c (read_file): wrote rl_readfile

	* rlinetd.conf.5 (Example): documented the funky tcpd
	behaviour. Pity I didn't remember it for the 0.4 announcement :P

	* assemble.c: make OP_DOWN precede anything useful

	* grammar.y: put OP_DOWN in main stream, not parent stream.

	* assemble.c: removed opmetalist_dump, dead code

	* grammar.y: add OP_JUMP to c_s->onexit for exit and discard
	streams. damn. instances just work :)

	* bytecode.c (run_bytecode): wrote OP_JUMP

	* grammar.y: remove explicit OP_CLOSE from exit and discard
	opstreams.

1999-07-29  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: rather tragic bug in opmeta_make. The final opcode,
	if without arguments and not the *first* opcode, would be skipped
	(and presumably garbage put in it's place). And another one in
	opmetalist_resolve. My, it's exciting how they all come out of the
	woodwork when you try to do something interesting, isn't it...

	* grammar.y: wrote T_DISCARD rule

	* bytecode.c (run_bytecode): wrote OP_{R,W}{UN,}HOOK wrappers for
	fd hook functions, OP_BZ

	* error.h: moved logging function definitions out to here

	* buffer.h (rlbuf_write): prototypes and structures and the like.

	* buffers.c: wrote buffer reading/writing functions. Moved other
	buffer handling stuff into here also.

1999-07-27  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): hmm. write_unhook being passed a
	completely bogus value in OP_BANNER

	* assemble.c: OP_BRANCH no longer a terminal (*sigh*)

	* lex.l: added 'discard' keyword

	* bytecode.c (run_bytecode): made OP_BRANCH jump within an
	opstream instead of to other opstreams again.

	* grammar.y: use inst_free in pidtab_fixup - fix *huge* memory
	leak.

	* bytecode.c (run_bytecode): wrote OP_BUFINIT

	* engine.c: wrote inst_new, inst_free

	* rlinetd.h: added pointer to an rl_buffer struct to rl_instance,
	for buffered streams.

	* making the entire cross-dependency multi-directory flex/bison
	thing work on freebsd

1999-07-26  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* lots of bsd compilation fixes

1999-07-23  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* 0.4 released

	* rlinetd.8: documented the getopt switches.

	* rlinetd.conf.5: documented banner, echo, fixed minor display
	problems.

1999-07-21  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: add some missing terminals to achildren

	* engine.c: leave stderr open if(rl_debug)

	* grammar.y: free arg to 'server'

	* lex.l: add 'file' as an alias for 'path'.

	* grammar.y: free opmetalist in default case - plug memory leak.

1999-07-20  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: OP_RLIMIT takes two args, not one

1999-07-19  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* engine.c: free sockaddr in inst

	* assemble.c: added id fields to all structs, for leak checks

1999-07-18  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): log errors from execve(), cleaned up
	the entire dup2() thing.

	* grammar.y: default family to AF_UNSPEC if HAVE_GETADDRINFO

1999-07-16  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* engine.c: argh. how wrong can I get a triply linked list? follow
	the *cleanup* link in the cleanup routine.

	* db.c: fill in forward back link

1999-07-15  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* data.c: argh. need ref counting. another crasher in stringlists
	(only shows up with defaults).

1999-07-12  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* db.c: fixed crasher with pidtab handling

1999-07-11  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* db.c: removed pidtab_walk

1999-07-05  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): print executed opcodes conditional on
	rl_debug, rather than compile time ifdef

	* main.c: getopt - original patch from Arkadiusz Mikiewicz

	* grammar.y: stop fruiting around with argc/argv, accept variables
	set up externally.

1999-06-18  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* engine.c: walk cleanup list while holding the lock, removing
	elements from pidtab lists.

	* grammar.y: use OP_L{SET,CLR} in instance limit handling

	* bytecode.c (run_bytecode): wrote OP_L{SET,CLR} to handle
	adding/removing listening sockets.

	* engine.c: removed fdset_{set,clr}, wrote listeners_{set,clear}
	that explicitly work solely on the listening fds with fdsettab.

	* grammar.y: hammered memory leaks closed

	* db.c: reset things to null in *_free (how many times has this
	bitten me?)

	* rlinetd.h: pulled all references to rl_service.

	* grammar.y: moved rl_cleanups into a separate list, trimmed
	finalize_service to only do port binding and return an fdsettab
	entry, renamed to bind_ports. all service handling stuff now
	called from service: method in grammar.

	* db.c: pulled all sockettab stuff - now unused

	* db.h: pull rl_service reference out of struct pidtab

	* db.c: change pidtab_add to accept an index to the opstream to
	run on process exit.

	* engine.c: use the pidtab->onexit field on process exit

	* bytecode.c (run_bytecode): OP_ACCEPT now followed by an
	argument, being the size of the buffer to pass to write the
	peername into.

1999-06-17  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): added OP_FROG - sometimes, you just
	need it, trimmed out all inst->serv->name references (they were
	wrong anyway...)

	* grammar.y: cleaned up onexit setup for services, and using it in
	the rl_service struct.

	* engine.c: pulled surplus initialization of inst, added code to
	process cleanup list.

	* db.c: pidtab_get now returns struct pidtabs, struct pidtab now
	is a doubly linked list with an additional forward link for HUP
	handler's use.

	* signals.c: pulled all references to rls_{hi,}pending, HUP
	handler now just queues struct pidtabs for later processing

1999-06-14  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): diked out the hardwired instance
	counts. would be nice to have something to replace them with...

	* configure.in (libcap): check for mmap

	* libdb.c: fallback to malloc/read if mmap is missing

1999-06-07  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: added an onexit opstream field to struct service,
	fiddle with it in the service rule if there's a 'limit'
	directive.

	* bytecode.c (run_bytecode): made OP_FORK take two args, a parent
	opstream and an on-exit opstream.

1999-06-06  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* libdb.c: wrote fdset functions.

1999-06-05  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* libdb.c: wrote semaphore functions. won't handle concurrent
	accesses.

1999-06-04  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* libdb.c: wrote escape_lookup to handle \n-style things in
	argvtab'd strings. urk - crude hack in argvtab_add to accept
	whitespace specified as \x (ie, \r\n).

	* grammar.y: be consistent about freeing strings passed to
	argvtab_add (ie, don't).

	* bytecode.c (run_bytecode): wrote OP_ECHO

1999-05-31  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: handle 'tcpd { ... }' directive style, free
	intermediate opmetalists and oplists

1999-05-30  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): OP_CLOSE resets inst->sock to -1.

	* assemble.c: added terminals (including OP_EXIT) to various
	lists.

	* grammar.y: wrote OP_EXIT, use it in the OP_WRAP default case.

	* bytecode.c: use the right macro for including tcpd.h

	* configure.in: typo HAVE_TCPWRAPPERS->HAVE_TCP_WRAPPERS

	* grammar.y: generate a default OP_WRAP fail case of OP_CLOSE,
	wrote an opcode_block rule, added a variant for OP_WRAP to use
	it. Added a rule for T_CLOSE.

	* bytecode.c (run_bytecode): OP_WRAP now takes two args

1999-05-24  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* signals.c: test disconnect before running

	* grammar.y: append a closing thing to the opstreams, just in
	case. initialize disconnect opstream to -1

	* bytecode.c (run_bytecode): serv->name is an int not a char*

	* engine.c: abort() on an rl_fatal

	* assemble.c: OP_ACCEPT *before* OP_BANNER :)

	* grammar.y: no visible error if only some of the getaddrinfo()'d
	addresses bind - only error if all fail

	* assemble.c: oops - typo in limit for loop

1999-05-23  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* data.h: more trimming

	* libdb.c: replaced oplist_free and oplist_copy (oops - can you
	tell it's been a long time since I ran any tests?)

	* data.h: trim out unneeded prototypes for oplist_*

1999-05-21  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): recurse, and exit on return for child.

1999-05-19  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: changed opmetalist_resolve to return an oplist

	* data.h: removed oplists in struct service

	* data.c: removed oplist handling functions

1999-05-17  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: hunting memory leaks

	* grammar.y: sanitized and fixed service_element chaining, fixed
	up defaults for current_service

	* assemble.c: reversed sense of vital (and only) logical test in
	opmetalist_join... threw in some added paranoia

	* db.c: purge last traces of initgrtabs

	* grammar.y: the entire initgroups/user/group thing theoretically
	works - but will probably fail with conditional setting

1999-05-14  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: userid and groupid stuff all in place, but not
	consistent wrt config line ordering

	* libdb.c: pulled all the initgrtab functions

	* grammar.y: changed groupid and userid to pass struct pointers
	around.

	* bytecode.c (run_bytecode): made OP_INITGR take two args.

	* assemble.c: wrote opmetalist_resolve to actually dump out a
	bytecode stream. converted opmetalist_add to return a success
	value alone.

	* grammar.y: added complex_opcode_element to allow passing back
	multiple opmetas

	* bytecode.c (run_bytecode): made OP_EXEC take two args for exec
	and argv
	(run_bytecode): changed OP_FORK semantics: now parent jumps to
	indexed oplist, while child continues execcing current oplist.

	* db.h: cleaned up prototypes

	* strings.h: removed exec field from argvtab

1999-05-13  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* data.c: pulled all the wrapinfo stuff - unused and unnecessary.

	* grammar.y (opcode_element): two rules for OP_WRAP, arg-less one
	using a fixup for iname. sweet :)

	* data.h: added iname field for stringtab entry for service name

	* assemble.c: wrote fixups for struct opmeta

	* bytecode.c (run_bytecode): in child, exit(inst->reg) if opcode
	stream returns.

	* grammar.y: setting up opmetalist returns from service_elements

1999-05-12  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: add OP_RET and OP_BRANCH to terminals, added a
	length arg to opmeta_make, fixed crash in array_append

	* data.c: add OP_RET at end of post stream :P

	* bytecode.c (run_bytecode): wrote OP_RET

	* assemble.c: wrote an intersect routine, started an _add,
	discovered that more state needs to be maintained. argh.
	converted everything to use struct array rather than rl_opcode_t
	*. opmetalists written.

1999-05-11  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* assemble.c: wrote opmeta_make, copy, union

	* engine.c: call va_end on varargs'd args

	* bytecode.h: started precedence table for opcodes. ugh.

	* grammar.y: fix endian booboos for the !HAVE_GETADDRINFO case -
	we build and run successfully on DU.

1999-05-10  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): made OP_BRANCH branch unconditionally

	* grammar.y: handle banner directive, don't OP_FORK unless an
	OP_EXEC is forthcoming, allow no exec directive, default to just
	OP_CLOSE to terminate

	* engine.c: fix a heap of boundary conditions for fd hooking
	functions

	* lex.l: dummy invocation of yyunput to silence gcc

	* libdb.c: rewrote maptab_add to just take a path

	* bytecode.c (run_bytecode): wrote OP_ZERO to clear register
	(run_bytecode): wrote OP_BANNER

1999-05-09  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): clear listening fds post fork in child

	* engine.c: added fd clearing funcs

1999-05-07  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* wrote read/write hook functions for fds

	* bytecode.c (run_bytecode): operating on arrays of opcodes
	directly, rather than struct oplists.

	* rlinetd.h: cleaned up prototypes

	* Makefile.am (DISTCLEANFILES): clean out inetd2rlinetd on distclean

1999-05-06  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* strings.c: test for instantiated sockaddr before logging
	information out of it.

	* rlinetd.h: rl_service->backlog unused and unnecessary

	* engine.c: likely bug with instance limits fixed, mallinfo stuff
	conditional on mallinfo detected by autoconf

	* bytecode.c (run_bytecode): moved peer sockaddr allocation to
	OP_ACCEPT (what happens for UDP?)

	* Makefile.am (installpaths.h): generate installpaths on the hop

1999-05-05  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): OP_BRANCH conditional on a value, and
	branching off to an oplisttab entry

	* libdb.c: reuse entries in oplisttab

1999-05-02  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* libdb.c: maptab helper functions written to support OP_BANNER

	* port/port.h: drop in prototypes for missing functions

1999-05-04  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* db.c: free sockaddr in inst on cleanup

	* data.c: use oplisttabs to store oplists

	* libdb.c: wrote oplisttab helper functions

1999-04-30  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y (dirent): use funky autoconf dirent detection macros

	* configure.in (libcap): test for {v,}snprintf, emulate if necessary

	* port/vsnprintf.c (vsnprintf): basic hack using vprintf

	* port/snprintf.c: ditto

	* configure.in: combined tests for tcp_wrappers include files and
	lib, check for mode_t for nextstep

	* grammar.y: error on rlimits missing from DU

1999-04-29  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): wrote OP_CLOSE

1999-04-28  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* data.h: prettied up prototypes

	* data.c: wrapinfo helper functions written

	* bytecode.c (run_bytecode): wrote OP_BRANCH. like, wow :)

	* lex.l: adding keywords for finer control over tcp wrappers

1999-04-27  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* connect.c (rl_connect): wrote rl_connect to do connections for
	relaying

1999-04-25  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* strings.c: more ipv6 conditionals

	* grammar.y: check for gai_strerror with autoconf

1999-04-23  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* Makefile.am: fixed bug in automake - dist target now works

	* data.c: moved various handler functions out of grammar.y

	* grammar.y: fallback through inet_pton to inet_addr if
	getaddrinfo not available.

1999-04-22  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: fixed a memory leak in glibc's getaddrinfo, ripped
	out all of the _r functions - completely unnecessary, don't know
	what I was thinking, forget my head if it wasn't screwed on. moved
	all getaddrinfo(3) specific stuff inside an ifdef.

	* engine.c: use vsyslog where available

	* strings.c: use inet_ntop where possible

	* engine.c: wrote varargs versions of logging functions

1999-04-21  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* data.c: fixed memory leak in stringlist_free

	* grammar.y: don't double free chroot (Mark Cooke)

	* libdb.c: test exec before freeing (Mark Cooke)

1999-04-08  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: found that last pesky memory leak :)

	* libdb.c: extract exec strings from stringtab

	* grammar.y: clean up memory leak with initgroups

1999-04-07  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* libdb.c: add stringtable

	* Makefile.am (rlinetd_LDADD): only add detected libraries to
	rlinetd specific link statement.

	* configure.in (libcap): test for sockaddr_in6 with added paranoia.

1999-03-31  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* inetd2rlinetd.in: substitute in path to perl

	* configure.in: locate perl, check for alloca(3)

1999-03-30  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* rlinetd.conf.5 (Example): documented family and initgroups
	directives.

	* libdb.c: add handling functions for initgroup data

	* main.c (main): kill supplementary groups on startup

	* grammar.y: using alloca instead of malloc/free for *_r wrappers,
	moved user lookups into a single function and structure, addend
	missing end*ent() calls, changed sentinel value for uids and gids
	in parser to -1, use get{pw,gr}nam_r where available

1999-03-29  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: added initgroups directive, read primary group id and
	use it where possible.

	* main.c (main): fixed another missing / in path problem

1999-03-26  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* Makefile.am (CFLAGS): export sysconfdir and pkglibdir separately
	via CFLAGS

	* grammar.y: bugfix for directory loading (James H. Cloos)

	* engine.c: add bounds to all messing with fd_sets.

1999-03-23  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* grammar.y: don't delete caps in cleanup.

	* libdb.c: reset capability storage correctly.

	* bytecode.c: check tcpd.h exists before including it... should
	probably make sure that both library and header files exist before
	using them, for tcpwrappers and libcap.

	* rlinetd.conf.5 (Example): fixed typo in rlimit example and added
	capability documentation.

	* grammar.y: merged various opcode chains together, imposed
	stricter ordering for capabilities.

1999-03-22  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* signals.c: test for null pointer after reload

	* libdb.c: capabilities implemented

1999-03-17  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* bytecode.c (run_bytecode): no need to SETFD on sockets - either
	done in OP_ACCEPT, or not relevant

	* grammar.y: allow fallback to get{serv,rpc}byname if lacking *_r,
	error on 'tcpd' if no libwrap support. don't SETFD on udp sockets.

	* Makefile.am: autoconf/automake/libtool.

	* THANKS: libc5 patch from ianj@chocobo.org

	* lex.l: renamed from parse.l

	* grammar.y: renamed from parse.y

1999-03-13  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* rlinetd.conf.5: documented rpc config syntax

	* bytecode.c (run_bytecode): tcp_wrappers support - OP_WRAP.

	* parse.y (service_element): chroot is a restrictive directive,
	methinks.

1999-03-11  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* version 0.2 released

	* engine.c: fixed SEGV-if-two-reqs

	* parse.y: only do NDELAY on stream sockets

	* Makefile (CFLAGS): pass INSTALLPATH around, and use it for
	default filenames

	* parse.y: allow port to default to service name

	* data.c: wrote stringlists

	* parse.y: moved port lookups into validation stage.

1999-03-10  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* inetd2rlinetd: handle rpc services and uid.gid specs.

	* data.c: extracting various data manipulation routines from
	parse.y (it's just tooooo big).

	* removed README.conf, supplanted by rlinetd.conf(5)

	* cleanups.c (rlp_cleanup): cleanup functions for reloading
	configurations

	* parse.y (numrange): wrote numrangelists for rpc version
	numbers. also wrote rpc directive parsing.

	* rlinetd.conf.5: documented %x modifiers

1999-03-09  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* parse.y: spiff up error reporting, track string protocol for
	later use in getservbyname_r, allow multiple directory directives,
	abstract out validation checking for services.

	* libdb.c: spiff up error reporting

	* engine.c: ditto

	* bytecode.c (rl_fail1): ditto

	* rlinetd.h (rl_fatal): wrote varargs macros for rl_{warn,fatal}

	* inetd2rlinetd: handle argv0 fudging

	* rlinetd.conf.5 (Example): added documentation for directory
	directive.

	* parse.y: recognize and handle directory directive.

	* inetd2rlinetd.1: created.

	* inetd2rlinetd: renamed from inetd2rlinetd.pl

1999-03-08  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* rlinetd.conf.5 (Example): phew. documented all the directives.

	* README.inetd: inetd compatibility notes

	* debian/rules (binary-arch): do dh_install{init,manpages}

	* rlinetd.1: wrote my very first man page. Gosh.

1999-03-05  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* parse.y: use getservbyname_r to avoid memory leaks

	* parse.l: add function to free flex buffers

	* libdb.c: free more things

	* Makefile: removed conditional static loading

	* parse.y (service_element): accept server directive

	* libdb.c: accept exec path separate to argv

	* bytecode.c (run_bytecode): trimmed out error handling before
	exec - we're post fork and pretty well committed at this
	stage. also handle argv[0] != exec cases (tcpd)

	* inetd2rlinetd.pl: write quick'n'dirty converter from inetd.conf
	to rlinetd.conf

	* parse.y: fixed up service support routines to handle the new
	additions to opcodes
	(portlist): allow a service name as a port entry

	* rlinetd.h: added length field to rl_instance for multiproto
	support.

1999-03-04  Mikolaj J. Habryn  <dichro-log@rcpt.to>

	* engine.c: moved bulk of instance startup into bytecodes.

	* bytecode.c (run_bytecode): added OP_ACCEPT and OP_FORK, moved
	std stream manipulation into OP_EXEC

	* parse.y: set close-on-exec for listening sockets

	* engine.c: add new sockets out of rls_pending before calling
	select(2)

	* signals.c: set up a pending fd_set manipulated by signal handler
	keeping sockets which can now accept further connections due to
	previous instances exiting

	* parse.y: copy defaults onto initial service template, use
	protocol setting in service template, track sockets belonging to
	service
