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

	Version 1.7

	* NEWS: Update.
	* configure.ac: Update.

2010-06-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow the use of symbolic names in 'uid' and 'gid'. New command
	'newgrp'.

	This also undoes commit ccb22a037, which became superfluous with
	the advent of these changes.

	* src/config.c (parsegid, parseuid): New functions.
	(new_rush_rule): Initialize gid to NO_GID.
	(parse_cmp_op): Handle != (accidentally sunonymous to !)
	(numstrtonum): New function.
	(parse_numtest): Take conversion function as 4th argument.
	All callers updated.
	(uidtonum): New function.
	(_parse_uid): Use uidtonum as a conversion function.
	(gidtonum): New function.
	(_parse_gid): Use gidtonum as a conversion function.
	(_parse_newgroup): New function.
	(_parse_main_group): Remove.
	(toktab): Remove "main-group", add "newgroup" and
	"newgrp".
	* src/rush.c (groupcmp): Remove princ parameter. All
	callers updated.
	(test_request): Remove test_request_main_group.
	(run_rule): Handle `newgrp' request.
	(main): Initialize req.gid to NO_GID.
	* src/rush.h (test_type): Remove test_main_group.
	(rush_rule)<gid>: New member.
	(rush_request)<gid>: New member.
	(NO_GID): New constant.

	* doc/rush.texi: Update.
	* NEWS, configure.ac: Set version 1.6.91

2010-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add new condition: main-group.

	* src/config.c (toktab): New condition main-group.
	* src/rush.c (groupcmp): New argument `princ' specifies
	whether to match only principal group or all the groups
	the user is member of.
	(test_request_group): Call groupcmp with princ=0.
	(test_request_main_group): New test.
	(test_request): Add test_request_main_group.
	* src/rush.h (test_type): New type test_main_group.
	* NEWS, THANKS: Update.

2010-04-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for "include" statements outside of rule context.

	* src/config.c (toktab): Remove TOK_RUL from the flags.

2010-04-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update NEWS.

	Improve rule parsing.

	A configuration file consisting of a single fall-through rule
	caused infinite loop in main.

	* src/rush.c (match_rule): return immediately if
	rule is NULL.
	(run_rule): Run accounting only if req->acct is
	rush_true.
	(main): Break the loop when NULL rule is hit.
	Report "no matching rule" if exited from the
	loop.

	Bugfix

	* src/rush.c (run_transforms)<transform_setcmd>: Add
	GET_TGT_VAL();

2010-04-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.6.90

	* configure.ac: Update version number.
	* NEWS: Update.

	Configurable permissions for accounting database.

	* lib/librush.h (rush_wtmp_mode): Remove.
	(rushdb_umask, rushdb_dir_mode, rushdb_file_mode): New externs.
	* lib/rushdb.c (rushdb_umask, rushdb_dir_mode)
	(rushdb_file_mode): New variables.
	(rushdb_open_internal): New function.
	(rushdb_open): Call rushdb_open_internal after setting
	the rushdb_umask.
	(rushdb_print_header)<FDATA_STRING>: Fix first argument
	to output_string.
	* lib/utmp.c (rush_utmp_open): Use file permissions from
	rushdb_file_mode.
	* lib/wtmp.c (rush_wtmp_mode): Remove.
	(rush_wtmp_open): Use file permissions from
	rushdb_file_mode.
	* src/config.c (parse_file_mode): New function.
	(_parse_umask): Use parse_file_mode.
	(_parse_acct_file_mode,_parse_acct_dir_mode)
	(_parse_acct_umask): New functions.
	(toktab): New keywords: acct-file-mode, acct-dir-mode, acct-umask.
	* src/rush.c (run_rule): Don't set umask before calling
	rushdb_open,
	the function itself takes care of it.

	* doc/rush.texi: Document new configuration statements.
	* NEWS: Update.

	Fix http://puszcza.gnu.org.ua/bugs/?127

	* src/rush.c (make_file_name): Fix typo (misplaced
	`+ 1').

2010-02-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Apply the default regex flags to `transfer' statement.

	* src/rush.h (compile_transform_expr): Change signature.
	* src/transform.c (parse_transform_expr)
	(compile_transform_expr): Pass regcomp flags as argument.
	* src/config.c (_parse_transform_common): Pass re_flags to
	compile_transform_expr.

	Improve configuration machinery.

	* configure.ac: Enable silent rules. Require Automake 1.11.1.
	* Makefile.am (make-ChangeLog): Remove rule.
	(ChangeLog): Rewrite.
	* src/Makefile.am (sbinPROGRAMS_INSTALL): Remove. New Automake
	does
	not support it any more. Instead use:
	(change-suid-mode): New rule.
	(install-exec-hook): New rule.
	(defines.h): Make rule a silent one.
	(.opt.h): Likewise.

2010-01-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

	Happy GNU Year!

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

	Fix doc/Commit

	* doc/Commit (gray_print_section): Output anchors before
	chapter/section/etc. titles, so that the heading menu in
	monolithic document works properly.

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

	Bugfixes.

	* configure.ac: Check for socket.h and sys/socket.h.
	Needed for socklen_t check below.
	* src/getopt.m4: Remove useless test.

	Update docs to match the new webpage format.

	* doc/Makefile.am (manual.tar.bz2, man-tar): New rules.
	(manual): Declare as phony.
	* doc/gendocs_template: Rewrite.
	* doc/rush.texi: Minor changes.

2009-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes

	* src/getopt.m4 (BEGIN): Remove extra quoting.
	(GETOPT): Rename c to optchar
	* src/rlopt.opt: Change the way of handling -[0-9]+
	argument. In particular, it is able to correctly
	handle options like -10.

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

	Bugfixes

	* configure.ac: Check for socklen_t.
	* src/rush.h: Include sys/time.h;
	Provide a backup definition for LOG_AUTHPRIV.

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

	Fix diagnostic message in run_transforms

	Update docs, set version number 1.6

	Update docs

2009-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow references to predefined error messages in `exit'
	statements.

	* NEWS, doc/rush.texi: Update
	* src/cfck.c: Remove inclusion of argmatch.h
	* src/config.c (_parse_usage_error, _parse_nologin_error)
	(_parse_config_error, _parse_system_error): Use set_error_msg.
	(_parse_exit): Special handling of initial @ in the message text.
	* src/rush-po.awk: Special handling of initial @ in the message
	text.
	Capture arguments of usage-error, nologin-error, config-error and
	system-error.
	Fix input line counting.
	* src/rush.c (error_msg): Array of structures.
	(set_error_msg, string_to_error_index): New functions.
	(send_msg): Use error_msg[type].custom to decide what textual
	domain to use
	for translation.
	(run_transforms): Remove temp. The result of rush_expand_string
	is assigned
	to val directly and is never freed.
	(run_rule): Special handling of initial @ in the error message
	text.
	* src/rush.h: Include argmatch.h
	(error_msg): Remove declaration.
	(set_error_msg, string_to_error_index): New prototypes.

	Update docs

2009-02-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs

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

	Minor docs changes

	Allow to use patterns in set rules.

	* lib/argcv.c (quote_transtab): Add \v.
	* src/config.c (_parse_set, _parse_set_ar): Store value in
	node->pattern.
	* src/rush.c (run_transforms): Use patterns in set rules.
	(run_rule): Fix wording of a diagnostic message.
	* src/rush.h (struct transform_node.v): Remove val.

	* NEWS: Update
	* doc/Makefile.am (check-writeme): New goal.
	(all-check-docs): Add dependency on check-writeme.
	* doc/rendition.texi (WRITEME): New macro.
	* doc/rush.texi: Update.

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

	Minor change

	Allow to specify source strings for transformations.

	* NEWS: Update.
	* lib/argcv.c (_ARGCV_WORD_SED_EXPR, _ARGCV_WORD_MASK): New
	defines.
	(argcv_scan): Treat sed expressions as words, if ARGCV_SED_EXPR
	is set.
	(argcv_get_np): Do not unquote word if ARGCV_QUOTE is not set,
	or the
	word is a sed expression.
	(ARGCV_DEFFLAGS): Move to argcv.h
	* lib/argcv.h (ARGCV_DEFFLAGS, ARGCV_SED_EXPR): New defines.
	* src/config.c (_parse_transform_common): New function.
	(_parse_transform,_parse_transform_ar): Call
	_parse_transform_common.
	(TOK_SED): New define.
	(toktab): Mark `transform' with TOK_SED.
	(parse_input_buf): Use argcv_get_np for field splitting. If the
	token is
	marked with TOK_SED, assume ARGCV_SED_EXPR flag.
	* src/map.c (mapdef): New meta-variable: "command".
	(rush_expand_string): New function.
	* src/rush.c (run_transforms): Use node->pattern, if not NULL.
	* src/rush.h (struct transform_node.pattern): New field.
	(rush_expand_string): New proto.

	Allow to modify program name, as opposed to argv[0]

	* configure.ac, NEWS: Version 1.5.90
	* lib/argcv.c, lib/argcv.h: Fix copyright years.
	* src/config.c (new_transform_node): Take addtional argument. All
	uses updated.
	(struct stmt_env.progmode): New field.
	(check_argc): New function.
	(TOK_CRT): New token flag.
	(toktab): New commands "delete" and "set".
	Mark "transform" and "map" with TOK_CRT.
	(parse_input_buf): If TOK_CRT is set, allow ^ as an index,
	indicating
	program name, as opposed to argv[0].
	* src/map.c (mapdef): New meta-variable "program".
	* src/rush.c (ARG_NO): New macro.
	(test_request_arg): Use ARG_NO.
	(get_arg_no,assign_string): New functions.
	(run_transforms): Handle delete and set commands. Set or modify
	program name, if required ([^]).
	(run_rule): Use req->prog, if set.
	* src/rush.h (transform_delarg, transform_setcmd)
	(transform_setarg): New constants.
	(struct transform_node): New fields: progmod, v.val, v.arg_end.
	(struct rush_request): New field: prog.
	(PROGFILE): New macro.

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

	Fix use of index in map[] instruction

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

	Fix word splitting.

	* src/argcv.h, src/argcv.c: Move to lib.
	* lib/argcv.h (ARGCV_WS, ARGCV_QUOTE, ARGCV_RETURN_DELIMS):
	New defines.
	* lib/argcv.c: Implement more flags to control the word splitter
	behavior.
	* lib/Makefile.am (librush_a_SOURCES): Add argcv.[ch]
	* src/config.c (_parse_map_ar): Allocate memory for defval.
	* src/map.c (map_string): Strip off trailing newline before
	parsing the buffer.

	Implement `map' transformations (follow-up).

	* gnulib.modules: Add getline and obstack.
	* src/Makefile.am (rush_SOURCES): Add map.c
	* src/map.c: New file.
	* src/cfck.c (cfck_keyword): Remove 2nd argument.
	* src/config.c (parse_strv): Remove.
	(struct stmt_env): New data type.
	(parse_neg_strv): New function.
	(_parse_map_ar): New function.
	(TOK_ARGN,TOK_DFLN): New defines.
	(struct token.parses): Change proto. All _parse_.* functions
	updated.
	(toktab): Update flags. New command word "map".
	(parse_input_buf): Update use of token.parses. Handle TOK_ARGN.
	* src/rush.c (run_transforms): Handle transform_map case.
	(run_rule): Add typecast.
	* src/rush.h (struct rush_map): New data type.
	(transform_map): New transform type.
	(struct transform_node): Replace "trans" with union.
	(debug6): Fix definition.
	(debug7): New macro.
	(cfck_keyword): Takes 1 argument.
	(map_string): New prototype.

	* src/rushlast.c, src/rushopt.opt, src/rushwho.c: Minor fixes.

	Implement `map' transformations.

	* gnulib.modules: Add getline and obstack.
	* src/Makefile.am (rush_SOURCES): Add map.c
	* src/map.c: New file.
	* src/cfck.c (cfck_keyword): Remove 2nd argument.
	* src/config.c (parse_strv): Remove.
	(struct stmt_env): New data type.
	(parse_neg_strv): New function.
	(_parse_map_ar): New function.
	(TOK_ARGN,TOK_DFLN): New defines.
	(struct token.parses): Change proto. All _parse_.* functions
	updated.
	(toktab): Update flags. New command word "map".
	(parse_input_buf): Update use of token.parses. Handle TOK_ARGN.
	* src/rush.c (run_transforms): Handle transform_map case.
	(run_rule): Add typecast.
	* src/rush.h (struct rush_map): New data type.
	(transform_map): New transform type.
	(struct transform_node): Replace "trans" with union.
	(debug6): Fix definition.
	(debug7): New macro.
	(cfck_keyword): Takes 1 argument.
	(map_string): New prototype.

	* src/rushlast.c, src/rushopt.opt, src/rushwho.c: Minor fixes.

	Initial implementation of "interactive" mode.

	* src/config.c (_parse_interactive): New function.
	(toktab): New token "interactive".
	* src/rush.c (rush_interactive_shell): New variable.
	(main): Use rush_interactive_shell as the command, if -c is
	not given.
	* src/rush.h (rush_interactive_shell): New declaration.

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:
