2009-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.15
	* NEWS: Version 1.15
	* configure.ac: Likewise.
	* bootstrap.conf: Remove SKIP_PO setting. The TP URL is
	operational now.
	* doc/gendocs_template: Mark as a GNU project.
	* doc/rush.texi: Change bug-reporting email.

	* gnulib.modules: Remove progname.
	* lib/progname.c: Provide own version of the progname module.
	* lib/Makefile.am (librush_a_SOURCES): Add progname.c
	* lib/librush.h (program_name): New global decl.
	(rush_set_program_name): New proto.
	* src/rush.h: Remove progname.h
	* src/rush.c (main): Use rush_set_program_name.
	* src/rushlast.c: Likewise.
	* src/rushwho.c: Likewise.

	Minor fixes.
	* README, doc/rush.texi: Update.
	* configure.ac: Allow relative file name as an
	argument to --with-default-config.
	* confpaths.h.in: Remove.
	* gnulib.modules: Add progname
	* lib/librush.h: Include unistd.h
	* src/Makefile.am (LDADD): Add @LTLIBINTL@
	* src/defconf.sed: Bugfix.
	* src/rush.c (main): Use set_program_name
	* src/rushwho.c: Likewise.
	* src/rushlast.c: Likewise.
	* src/socket.c: Move network-related includes to rush.h

2009-01-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rush is dubbed GNU software

	Change documentation license to GFDLv1.3+

	Finish 1.4.90
	* NEWS: Update.
	* README: Update.
	* configure.ac: New option --with-default-config
	* doc/rush.texi: Update.
	* src/.gitignore: Add rlopt.h, rushopt.h and rwopt.h
	* src/Makefile.am (EXTRA_DIST): Add defconf.sed
	(BUILT_SOURCES): Add rwopt.h and rlopt.h
	(defines.h): Define RUSH_DEFAULT_CONFIG, if requested by
	--with-default-config.
	* src/config.c (init_input_buf): Do not abort on unexisting
	file, if RUSH_DEFAULT_CONFIG is defined.
	(include-safety): Rename include-security.
	(parse_config): Add debug diagnostics.
	* src/rushopt.opt: Rename --safety-check to --security-check.
	New option --show-default.

	Add missing files

2009-01-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Redo option parsing.
	* src/getopt.m4: New file.
	* src/rlopt.opt: New file.
	* src/rushopt.opt: New file.
	* src/rwopt.opt: New file.
	* src/Makefile.am (EXTRA_DIST): Add getopt.m4, *.opt
	(rush_SOURCES): Add rushopt.h
	(rushwho_SOURCES): Add rwopt.h
	(rushlast_SOURCES): Add rlopt.h
	(MAINTAINER_CLEANFILES): Add rushopt.h, rwopt.h, rlopt.h
	(.opt.h): New rule.
	* src/config.c (check_dir): Fix diagnostic messages.
	(toktab): Rename config-safety to include-safety
	* src/rush.c, src/rushlast.c, src/rushwho.c: Redo option parsing.

	* NEWS: Update.

2009-01-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement configuration file safety checks.
	* gnulib.modules (argmatch,dirname): New modules.
	* src/cfck.c: New file.
	* src/Makefile.am (rush_SOURCES): Add cfck.c
	* src/config.c (init_input_buf): Call check_config_permissions
	(_parse_include): Store NULL into ret_buf, if the file does
	not exist.
	(_parse_config_safety): New function.
	(toktab): New statement "config-safety"
	(parse_input_buf): Do not reset the input buf, if ret_buf is NULL.
	* src/rush.c: New option --safety-check (-C)
	* src/rush.h (RUSH_CHK_.*): New defines.
	(check_config_permissions,cfck_keyword): New prototypes.

	Update docs

2009-01-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.
	* src/rush-po.awk: New file.
	* src/Makefile.am (pkgdata_DATA): Add rush-po.awk
	* NEWS, doc/rush.texi: Update docs.
	* src/config.c (toktab): Fix flags of several statements.
	* lib/librush.h, src/Makefile.am, src/rush.c, src/rush.h
	src/rushlast.c, src/rushwho.c: Update copyright years.

	Minor fixes.
	* src/config.c (free_input_buf): Avoid freeing ibuf->file,
	which remains
	used by node structures.
	(_parse_locale): Allow for empty locale value.
	* src/rush.c: Minor fixes.
	(run_rule): Form environment before eventually printing error_msg.
	* src/rushlast.c, src/rushwho.c: Fix typos.

2009-01-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite support for file inlcusion.
	* src/config.c: Rewrite support for file inlcusion.
	Files can be included at any point.

2009-01-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement I18n.
	* lib/i18n.c: New file.
	* Makefile.am: Add po.
	* po: New directory
	* po/POTFILES.in: New file.
	* bootstrap.conf: Add i18n.
	* configure.ac: Check for gettext.
	* gnulib.modules: Add gettext-h
	* lib/Makefile.am (librush_a_SOURCES): Add i18n.c
	* librush.h: Include gettext.h
	(_,N_): New macros.
	(RUSH_ARG_UNUSED, RUSH_PRINTFLIKE): New macros.
	(rush_i18n_init, user_gettext): New prototypes.
	* lib/readfmt.c: Include librush.h
	Add nls markers.
	* lib/rushdb.c, lib/version.c, src/config.c, src/limits.c,
	src/rushlast.c, src/rushwho.c, src/socket.c, src/transform.c:
	Add nls markers
	* src/rush.c: Add nls markers
	(rush_pw): New global.
	(die): Take an extra argument. Use user_gettext to
	translate user message.
	(make_file_name): New function.
	(run_rule): Copy i18n to the request.
	(main): Save struct passwd in rush_pw.
	* src/rush.h (struct rush_i18n): New structure.
	(struct rush_rule, rush_request): New member i18n.
	(rush_pw): New global.
	(die): Change prototype.
	(make_file_name, expand_tilde): New prototypes.

2008-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.4.90
	* NEWS, configure.ac: Version 1.4.90
	* doc/rush.texi: Document notification
	* src/rush.c (run_rule): Non-empty post-sockaddr implies
	`fork on'.

	Socket notification: switch to TCPMUX protocol.
	* src/config.c (_parse_post_socket): Use tcpmux service by
	default.
	* src/socket.c: Use TCPMUX protocol.

2008-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Initial implementation of socket notification interface.
	* src/socket.c: New file.
	* src/Makefile.am: Add socket.c
	* src/config.c: New statement `post-socket'.
	* src/rush.c (struct rush_request): Move to rush.h
	(fork_process): Run post_socket_send, if post_sockaddr is given.
	(run_rule): Propagate post_sockaddr.
	(main): Minor fix.
	* src/rush.h (struct rush_request): Moved from rush.c; New member
	post_sockaddr.
	(struct rush_sockaddr): New structure.
	(struct rush_rule): New member post_sockaddr.
	(post_socket_send): New proto.

2008-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.4

2008-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.
	* src/rushlast.c: Format preferences: command line option,
	RUSHLAST_FORMAT env. variable, default format.
	* src/rushwho.c: Format preferences: command line option,
	RUSHWHO_FORMAT env. variable, default format.
	* doc/rush.texi: Mention RUSHLAST_FORMAT and RUSHWHO_FORMAT vars.

	Bugfix

	Fix direntry references

2008-10-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update

	Version 1.3
	* Makefile.am (DISTCLEANFILES, EXTRA_DIST): Remove.
	* NEWS: Version 1.3
	* configure.ac: Version 1.3
	* doc/rush.texi (direntry): Fixed.
	Add missing opindexes.	Arrange option tables in a
	traditional manner (short options first).
	* lib/rushdb.c (output_duration): Fix indentation.
	(format_pid): Fix size of buf.
	* src/Makefile.am (INCLUDES): Fix.
	* src/rush.c: Remove isatty restriction.

	Minor improvement
	* doc/rush.texi: Document --user option.
	* src/rush.c: Support all options only if invoked from a tty,
	otherwise
	support only -c.

	Minor fix.
	* doc/rush.texi: Various fixes.
	* src/rush.c: Implement --user (-u) option.

	Rearrange the docs

2008-10-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.
	* lib/rushdb.c (output_duration): Minor fix in width calculation.
	* doc/rush.texi: Added missing sections.  Spell checked.

2008-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various improvements.
	* gnulib.modules: Add error.

	* lib/readfmt.c: New file.
	* lib/Makefile.am (librush_a_SOURCES): Add readfmt.c
	* lib/librush.h (rush_read_format): New prototype.
	* lib/rushdb.c: Fix indentation.
	Allow to use quoted strings and escapes inside forms.
	Ignore explicit newlines.
	* lib/wtmp.c (rush_wtmp_copy): Copy pid.
	* src/rushlast.c: Use error instead of fprintf to stderr.
	Accept --format=@file.
	Fix default output format.
	* src/rushwho.c: Likewise.

	* doc/rush.texi: Document rushlast and rushwho
	* doc/strftime.texi: New file.
	* doc/Makefile.am (rush_TEXINFOS): Add strftime.texi

	Bugfixes
	* doc/rush.texi: Document forked mode.
	* lib/rushdb.c (output_duration): Honor width.
	(rushdb_compile_format): Use xzalloc to create new form.
	* src/rushwho.c: Change default format.

	Implement acct db locking.
	* gnulib.modules: Add vasprintf
	* lib/librush.h (rush_utmp_lock_all)
	(rush_utmp_unlock_all,rushdb_lock,rushdb_unlock): New functions.
	* lib/rushdb.c (rushdb_lock,rushdb_unlock): New functions.
	(rushdb_start): Lock utmp for writing.
	* lib/utmp.c (rush_utmp_write): Lock affected record for writing.
	(rush_utmp_lock_all,rush_utmp_unlock_all): New functions.
	* lib/wtmp.c (rush_wtmp_append): Lock affected record for writing.

	Minor fix

	Finish rushlast and rushwho.
	* lib/librush.h (RUSH_UTMP_NAME, RUSH_WTMP_NAME): New defines,
	instead of _SUF counterparts.
	(enum rushdb_result, enum rush_wtmp_dir): new constants.
	(rush_wtmp_set_dir, rush_wtmp_rewind): New functions.
	(rush_wtmp_read, rush_utmp_read): Return enum rushdb_result.
	(rushdb_backward_direction): New function.
	* lib/rushdb.c (format_error): New function
	(rushdb_open): Return enum rushdb_result.
	(rushdb_backward_direction): New function.
	(format_stop): Correctly handle empty stop date.
	(rushdb_compile_format): Make sure time formats have correct
	widths.
	* lib/utmp.c (rush_utmp_read0, rush_utmp_read): Change return
	value.
	* lib/wtmp.c (rush_wtmp_dir): New variable.
	(rush_wtmp_rewind): New function.
	(rush_wtmp_read): Rewrite to be able to scan the file in both
	directions.
	(rush_wtmp_update,rush_wtmp_update): Likewise.
	* src/limits.c: Use RUSH_DB_FILE, handle new return type from
	rushdb_open.
	* src/rush.c: Likewise.
	* src/rush.h (RUSH_DB_FILE): Rename to RUSH_DB.

	* src/rushlast.c: Implement new options. Show records in reverse
	chronological
	order by default.
	* src/rushwho.c: Implement new options.

2008-10-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement accounting (in forked mode only).
	* paths, acinclude.m4, lib/logwtmp.c,
	lib/utmp_init.c, lib/utmp_logout.c: Delete
	* src/slist.c: Move to lib/slist.c
	* configure.ac: Remove utmp stuff
	* gnulib.modules (readutmp): Remove
	(fprintftime): Add
	* lib/Makefile.am: Add new files.
	* src/.gitignore: Add rushlast, rushwho and .gdbinit
	* src/Makefile.am (bin_PROGRAMS): New var. Add rushlast and
	rushwho.
	(rush_SOURCES): Remove slist.c
	(defines.h): Define LOCALSTATEDIR
	* src/config.c (new_rush_rule): Init acct and mask members.
	(_parse_acct): New function.
	* src/limits.c (check_logins): Use rushdb, instead of the system
	utmp/wtmp.
	* src/rush.c (struct rush_request): new members: umask, home_dir,
	acct.
	(acct_on, acct_off): New functions.
	(fork_process): Run accounting, if requested.
	(run_rule): Save chroot_dir, umask and acct in the struct
	rush_request.
	Always do chroot only once.
	(version): Remove. Implemented in lib/version.c
	(main): Initialize new members in req.
	* src/rush.h: Add new includes.
	(RUSH_DB_FILE): New define.
	(slist_t, slist_append, slist_create)
	(slist_reduce, slist_free): Remove.
	(struct rush_rule): New member `acct'.
	(NO_UMASK): New define.

2008-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add framework for updating wtmp/utmp

	Implement 'forked mode'
	* gnulib.modules: Add inttostr.
	* src/config.c (new_rush_rule): Initialize p->fork
	(get_bool, _parse_fork): New functions.
	(toktab): New statement "fork".
	(parse_input_buf): If a rule is not tagged set
	its tag to #NUM, where NUM is its number.
	* src/rush.c (struct rush_request): New member: fork.
	(fork_process): New function.
	(run_rule): Call fork_process if fork is true.
	(all functions): Use rule->tag freely, it can't be NULL.
	* src/rush.h: include <inttostr.h>
	(enum rush_three_state): New type.
	(struct rush_rule): Remove const from tag;
	New members: fork, prologue, epilogue.

2008-10-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix

2008-09-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Release 1.2
	* NEWS, configure.ac: Version 1.2
	* doc/rush.texi: Proof-read.

2008-09-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement a test mode.
	* NEWS: Document test mode.
	* doc/rush.texi: Document test mode.
	* src/config.c (_parse_debug): Command line settings override
	the configuration
	file.
	* src/rush.c (debug_option): New global.
	(run_rule): Exit instead of executing the command, if lint_option
	is set.
	(longopts): New option --test, an alias for -t.
	(help): Improve help output.
	(usage): New function.
	(main): Implement full-fledged test mode.

	Implement command line options for testing configuration files.
	* NEWS, configure.ac: version 1.1.90.
	* gnulib.modules: Add getopt.
	* src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Remove.
	* src/config.c (init_input_buf): Report ENOENT as error if
	lint_option is set.
	(parse_config): Use rush_config_file.
	(all funcs): Replace calls to syslog with logmsg.
	* src/limits.c: Replace calls to syslog with logmsg.
	* src/rush.h: Likewise.
	* src/rush.c: Include getopt.h
	(rush_config_file, lint_option): New globals.
	(vlogmsg, logmsg): New functions.
	(die): Rewrite using vlogmsg. Do not print error_msg if
	lint_option is set.
	(main): Handle new command line options.

2008-08-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish release 1.1
	* NEWS, configure.ac: version 1.1
	* doc/rush.texi: Updated.
	* src/config.c (_parse_command, _parse_match): Use global
	regex flags.
	(_parse_re_flags): New function.
	(toktab): New statement `regexp'.

2008-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.
	* doc/rush.texi: Spell check.

	Fix typos

	Update docs and examples

	Update docs and examples

	Update docs

2008-08-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.
	* doc/rush.texi: Write `git' section.

	Minor fixes.
	* src/rush.c (send_msg): First try to send message to stderr
	and fall back to stdout if this fails.
	* doc/rush.texi: Guidelines for further improvements.

	Introduce exit rules.
	* src/config.c (copy_string): Force terminating newline.
	(_parse_exit): New function.
	(toktab): New keyword "exit".
	* src/rush.c (expand_tilde): Shut GCC warnings.
	(run_rule): Support `exit' rules.
	* src/rush.h (getmaxfd): New define.
	(struct rush_rule): New members error_msg and error_fd.
	(die): Mark with ATTRIBUTE_NORETURN.

	* NEWS: Version number 1.0.90. Document new features.
	* configure.ac: Check for sysconf and getdtablesize.
	Raise version number to 1.0.90.
	* doc/rush.texi: Document new features.
	* etc/rush.rc: Improve.

	Introduce negated conditions.
	* src/config.c (_parse_negation): New function.
	(_parse_command, _parse_match, _parse_argc, _parse_uid,
	_parse_gid)
	(_parse_user, _parse_group): Handle negation operator.
	* src/rush.c (run_tests): Handle negation.
	* src/rush.h (struct test_arg_node): New member `negate'.

	* doc/rush.texi (Conditions): Document condition negation.
	* NEWS: Update

2008-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs

	Run command line transformations sequentially.
	* src/config.c (_parse_transform, _parse_transform_ar): Use
	new transform
	node structure.
	* src/rush.c (run_transforms, rebuild_cmdline, reparse_cmdline):
	New functions.
	(run_rule): Run all transformations sequentially, in the order
	of their
	appearance in the configuration file.
	* src/rush.h (struct transform_node, enum transform_node_type):
	New data types.
	(struct rush_rule): Remove trans, arg_head, arg_tail.
	(transform_head, transform_tail): New members.

2008-08-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Release 1.0

	Update docs

	Add doc/.gitignore

	Change bug-reporting email.
	* NEWS:
	* README:
	* README-alpha:
	* configure.ac:
	* doc/rush.texi:

	Improve configuration syntax.
	* src/argcv.c (argcv_string): Remove const specifier from the
	2nd arg.
	* src/argcv.h: Likewise.
	* src/config.c: Improve the syntax. Introduce fall-through
	statement.
	Remove the default_entry, it can be provided using
	RUSH_DEFAULT_CONFIG
	define and an external file.
	* src/limits.c: Renumber debug levels.
	* src/rush.c: Support fall-through rules.
	* src/rush.h (struct command_config): Rename to rush_rule. All
	uses updated.
	(config_list, config_tail): Rename to rule_head, rule_tail,
	correspondingly.

	* etc/rush.rc: Use new syntax.

	* doc/rush.texi: Update.

	Code cleanup.
	* src/config.c: Rewrite using table-driven parser.

	Rewrite look ups in config file in a more logical manner.
	* src/rush.h (struct match_arg): Remove.
	(enum test_type, struct test_numeric_node, struct test_arg_node)
	(struct test_node): New data types.
	(struct command_config): Remove regex, match_head, match_tail,
	argc,
	cmp_op, users, groups, min_uid.
	New members: test_head, test_tail

	* src/config.c (parse_input_buf): Reflect changes to struct
	command_config.
	* src/rush.c (run_tests, test_request_cmdline, test_request_arg)
	(test_request_argc, test_request_uid, test_request_gid,
	test_request_group)
	(test_request_user): New functions.
	(run_tests): New function.
	(match_config): Rewrite using run_tests.

	Minor fix.
	* run_config: Set umask as late as possible.  Provide a reasonable
	default in case it is not set in the config.

2008-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Discern config entries based on user/group name.
	* src/config.c: New keywords: users and groups.
	* src/rush.c (match_config): Take an additional argument (all uses
	updated).  Compare username and groups.
	* src/rush.h: Include grp.h
	(struct command_config): New members: users and groups.

	Bugfixes.
	* Makefile.am: Add distuninstallcheck_listfiles.
	* etc/rush.rc: Update.
	* src/config.c (read_line): Fix keeping track of input line
	number.
	(check_dir): Avoid checks for existency of ~-directories.
	(parse_input_buf): Don't check for home dir presence, if
	chroot was
	requested.
	* src/rush.c (run_config): Remove implicit / home.

	Improve docs

	Provide a documentation framework.
	* doc/Makefile.am: New file.
	* doc/fdl.texi: New file.
	* doc/gendocs_template: New file.
	* doc/rendition.texi: New file.
	* doc/rush.info: New file.
	* doc/rush.texi: New file.

	* Makefile.am (SUBDIRS): Add doc.
	* configure.ac: Add doc.

	Provide a way for modifying program environment.
	* src/config.c (new_command_config): Set default env.
	(parse_input_buf): New keyword env.
	* src/rush.c (run_config): Tailor environment before running
	the command.
	* src/rush.h (struct command_config): New member env.

	Add default configuration file.
	* etc/Makefile.am: New file.
	* etc/rush.rc: New file.
	* Makefile.am (SUBDIRS): Add etc
	* configure.ac: Add etc.

	Update .gitignore's

	Add rules for generating ChangeLog

	Add .gitignore's

	Initial import

Local Variables:
mode: change-log
version-control: never
buffer-read-only: t
End:
