2013-02-09 (r7361) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c, filter_expr.y, super-serve.c, super_html.c, ej-import-contest.c, new_server_html_2.c, new_server_html_3.c, super-serve.h, new_server_html_4.c, super_html.h, new_server_html_5.c, teamdb.c, clntutil.c, new-server-cmd.c, users.c, teamdb.h, serve-control.c, new_server_html.c, clntutil.h, filter_tree.c, new-client.c, protocol.h, filter_tree.h, team_extra_xml.c, xml_utils.h, serve_state.h, team_extra.c, filter_eval.c, team_extra.h, new-server.h, contests.c, super_html_2.c, super_html_3.c, super_html_4.c, serve_2.c:
	IPv6 suport is implemented.

2013-02-09 (r7358) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c, new_server_html_4.c, new_server_html_5.c, teamdb.c, userlist-server.c, userlist_clnt.h, super-serve.c, users.c, serve-control.c, userlist_proto.h:
	IPv6 support implementation is in progress...

2013-02-09 (r7356) Alexander Chernov  <cher@ejudge.ru>

	* contests_2.c, uldb_plugin_xml.c, xml_utils.h, new_server_html_3.c, new_server_html_4.c, new_server_html_5.c, super_html.h, userlist_xml.c, edit-userlist.c, users.c, contests.c, new_server_html.c, super_html_2.c, super_html_4.c, super_html_6.c, contests.h, uldb_plugin.h, contest_tmpl.c, userlist-server.c, userlist.h, super_html.c:
	support for IPv6 is in progress...

2013-02-08 (r7355) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c, runlog.c, runlog.h:
	support for IPv6 is implemented (partially).

2013-02-08 (r7352) Alexander Chernov  <cher@ejudge.ru>

	* xml_utils.h:
	(xml_parse_ipv6_2) new function prototype;
	(xml_make_ipv6) new function prototype;
	(xml_make_ipv4) new function prototype.

	* clarlog.h:
	IPv6 support is implemented for clars.

	* clarlog.c, new_server_html.c, new_server_html_2.c:
	IPv6 support is implemented for clars.

2013-02-06 (r7343) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_check_user_quota) off by one bug is fixed;
	(serve_check_clar_quota) off by one bug is fixed.

2013-02-05 (r7339) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.c, new-server-cmd.c, clntutil.c, rldb_plugin_file.c, users.c, teamdb.h, serve-control.c, userlist_proto.h, clntutil.h, filter_tree.c, new-client.c, protocol.h, uldb_plugin.h, filter_tree.h, contest_tmpl.c, userlist.h, cldb_plugin_file.c, contests_2.c, xml_utils.h, ej_types.h, team_extra.c, serve_state.h, edit-userlist.c, team_extra.h, userlist_clnt.h, contests.c, new-server.h, super_html_2.c, super_html_3.c, super_html_4.c, serve_2.c, runlog.c, contests.h, contests_meta.c, runlog.h, contests_meta.h, userlist-server.c, super-serve.c, super_html.c, ej-import-contest.c, clarlog.c, new_server_html_2.c, uldb_plugin_xml.c, super-serve.h, super-serve_meta.c, super_html.h, clarlog.h, super-serve_meta.h:
	copyright notice is updated;
	ej_ip_t -> ej_ip4_t;
	transition to IPv6 support is started.

2013-02-02 (r7334) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	more rejudging tasks are implemented as background jobs.

2013-01-29 (r7325) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	background jobs are being implemented.

2013-01-27 (r7321) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_rejudge_by_mask) return type is changed;
	'create_job_flag' parameter is added;
	(serve_rejudge_problem) return type is changed;
	'create_job_flag' parameter is added;
	(serve_judge_suspended) return type is changed;
	'create_job_flag' parameter is added.

	* new_server_html.c:
	calls of 'serve_judge_suspended', 'serve_rejudge_by_mask',
	'serve_rejudge_problem' are updated.

	* new_server_html_4.c:
	calls of 'serve_judge_suspended' are updated.

	* serve_2.c:
	(serve_rejudge_by_mask) return type is changed;
	'create_job_flag' parameter is added;
	(serve_rejudge_problem) return type is changed;
	'create_job_flag' parameter is added;
	(serve_judge_suspended) return type is changed;
	'create_job_flag' parameter is added.

	* serve_state.c:
	call of 'serve_judge_suspended' is updated.

2013-01-27 (r7319) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.h:
	(struct server_framework_job_funcs) 'get_status' method is added.

	* new_server_html.c:
	job status is printed.

	* serve_2.c:
	(rejudge_all_get_status) new function.

2013-01-27 (r7317) Alexander Chernov  <cher@ejudge.ru>

	* curtime.h: copyright notice is updated;
	(get_current_time_ms) new function prototype.

	* run_common.c:
	(invoke_nwrun) better support for nwrun timeouts.

2013-01-26 (r7313) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.h:
	<time.h> is included;
	(struct server_framework_job) fields 'start_time', 'title' are added.

	* new_server_html.c:
	(priv_main_page) the list of background jobs is printed.

	* serve_2.c:
	rejudge_all background functions are updated.

2013-01-26 (r7308) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_add_job) new function prototype;
	(ns_remove_job) new function prototype.

	* serve_state.h:
	(serve_rejudge_all) return type is changed;
	  'create_job_flag' parameter is added.

	* server_framework.h:
	support for background jobs is added.

	* new_server_html.c:
	support for background jobs is added;
	(ns_add_job) new function;
	(ns_remove_job) new function;
	(ns_loop_callback) background jobs are supported;
	(priv_rejudge_all) background rejudge mode is supported;
	(priv_confirmation_page) background rejudge mode is supported.

	* new_server_html_4.c:
	background rejudge mode is supported.

	* serve_2.c:
	"server_framework.h" is included;
	support for background rejudge jobs is partially added.

2013-01-26 (r7306) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_main_page) EOLN type selection dialog fixed.

2013-01-26 (r7304) Alexander Chernov  <cher@ejudge.ru>

	* run_common:
	(run_one_test) added check for strange running time value.

2013-01-25 (r7301) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright notice is updated;
	(ns_loop_callback) return type changed to int.

	* server_framework.h: copyright notice is updated;
	(struct server_framework_params) 'loop_start' returns int.

	* new_server_html.c:
	(ns_loop_callback) only 100 packets are processed at a time.

	* server_framework.c: copyright notice is updated;
	(nsf_main_loop) responsiveness under high load is improved.

2013-01-25 (r7296) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	NULL pointer check is improved.

2013-01-23 (r7293) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.c: copyright notice is updated;
	'is_dos' configuration option is added.

2013-01-23 (r7290) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'is_dos' language configuration variable is supported.

	* serve-control.c, super_html_3.c, super-serve.c, super_proto.c:
	editing of 'is_dos' language configuration variable is supported.

2013-01-23 (r7288) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_add_record) 'eoln_type' parameter is added.

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c:
	selection of desired EOLN type is supported;
	calls of run_add_record are updated.

	* runlog.c:
	(run_add_record) 'eoln_type' parameter is added.

2013-01-23 (r7286) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'enable_eoln_select' global configuration variable
	is supported.

	* prepare.h:
	(struct section_global_data) 'enable_eoln_select' field is added.

	* prepare.c, prepare_out.c:
	global configuration variable 'enable_eoln_select' is added.

	* serve-control.c, super-serve.c, super_html_3.c, super_html_4.c, super_proto.c:
	editing of 'enable_eoln_select' global configuration variable
	is supported.

2013-01-23 (r7284) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	(eoln_type_unparse_html) new function prototype.

	* html.h: copyright notice is updated;
	'RUN_VIEW_EOLN_TYPE' is added.

	* serve_state.h:
	(serve_run_request) 'eoln_type' parameter is added.

	* ej-batch.c: copyright notice is updated;
	call of 'process_compile_packet' is updated.

	* new_server_html.c: copyright notice is updated;
	calls of 'serve_run_request' are updated.

	* new_server_html_2.c: copyright notice is updated;
	(ns_write_priv_all_runs) display of 'eoln_type' column is supported;
	(ns_write_priv_source) display of 'eoln_type' is supported;
	(ns_priv_edit_run_page) display of 'eoln_type' is supported;
	(ns_priv_edit_run_action) editing of 'eoln_type' is supported.

	* new_server_html_4.c: copyright notice is updated;
	calls of 'serve_run_request' are updated.

	* problem_common.c: copyright notice is updated;
	(eoln_type_unparse_html) new function.

	* serve_2.c:
	(serve_run_request) 'eoln_type' parameter is added.

2013-01-23 (r7281) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h: copyright notice is updated;
	'eoln_type' field is added.

	* ej_types.h: copyright notice is updated;
	valid EOLN type enumeration is added.

	* rldb_plugin_file.c: copyright notice is updated;
	'eoln_type' field is added.

	* runlog.c: copyright notice is updated;
	'eoln_type' field is added.

2013-01-22 (r7278) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_language_data) 'is_dos' field is added.

	* serve_state.h: copyright notice is updated;
	(struct compile_run_extra) 'is_dos' field is added.

	* super_run_packet.h: copyright notice is updated;
	(struct super_run_in_global_packet) field 'is_dos' is added.

	* prepare.c, prepare_out.c:
	'is_dos' language configuration variable is added.

	* run_common.c: copyright notice is updated;
	(run_one_test) 'is_dos' global field is handled.

	* serve_2.c: copyright notice is updated;
	language 'is_dos' parameter is passed to run.

	* super_run_packet.c: copyright notice is updated;
	'is_dos' field is handled.

2013-01-20 (r7274) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright notice is updated;
	(struct section_problem_data) 'score_latest_marked' field is added.

	* problem_config.h: copyright notice is updated;
	(struct problem_config_section) 'score_latest_marked' field is added.

	* super_proto.h: copyright notice is updated;
	editing of 'score_latest_marked' problem configuration variable
	is supported.

	* ej-import-contest.c: copyright notice is updated;
	'score_latest_marked' problem parameter is handled.

	* prepare.c, prepare_out.c: copyright notice is updated;
	'score_latest_marked' problem configuration variable is supported.

	* serve-control.c, super-serve.c, super_html_3.c, super_html_4.c, super_proto.c: copyright notice is updated;
	editing of 'score_latest_marked' problem configuration variable
	is supported.

2013-01-18 (r7270) Alexander Chernov  <cher@ejudge.ru>

	* copyright.c: copyright notice is updated.

2013-01-08 (r7268) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c, html.c:
	skipped tests are excluded from verbose reporting

2012-12-20 (r7259) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_compile_request) 'variant' parameter is added.

	* new_server_html.c, new_server_html_4.c, ej-batch.c:
	calls to 'serve_compile_request' are updated.

	* serve_2.c:
	(serve_compile_request) 'variant' parameter is added;
	(serve_rejudge_run) call of 'serve_compile_request' is updated.

2012-12-14 (r7248) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_priv_edit_run_action) variant editing is improved.

2012-12-14 (r7246) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'max_user_run_count' field is added.

	* problem_config.h:
	(struct problem_config_section) 'max_user_run_count' field is added.

	* super_proto.h:
	editing of 'max_user_run_count' problem configuration variable
	is supported.

	* ej-import-contest.c:
	'max_user_run_count' problem configuration variable is supported.

	* prepare.c, prepare_out.c:
	'max_user_run_count' problem configuration variable is supported.

	* serve-control.c, super-serve.c, super_html_3.c, super_proto.c:
	editing of 'max_user_run_count' problem configuration variable
	is supported.

2012-12-12 (r7244) Alexander Chernov  <cher@ejudge.ru>

	* build_support.c:
	(is_makefile_rule_needed) new function;
	(do_generate_makefile) rules only for those files, which are
	  marked by 'is_makefile_rule_needed' are generated.

2012-12-11 (r7241) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	'problem_dir' incoming parameter is passed to the valuer.

	* serve_2.c:
	'problem_dir' parameter is passed to ej-super-run.

2012-12-11 (r7239) Alexander Chernov  <cher@ejudge.ru>

	* super_run_packet.h:
	(struct super_run_in_problem_packet) 'problem_dir' field is added.

2012-12-11 (r7237) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	SKIPPED tests are correctly marked HIDDEN.

2012-12-09 (r7233) Alexander Chernov  <cher@ejudge.ru>

	* cgi.c:
	default content_length is 0, not INT_MAX.

2012-12-09 (r7230) Alexander Chernov  <cher@ejudge.ru>

	* run.h:
	(struct testinfo) 'checker_score' is removed.

	* runlog.h:
	RUN_SKIPPED is added.

	* html.c:
	(write_xml_team_testing_report) comment is not printed.

	* run_common.c:
	improvements to the interactive valuer support.

	* runlog_static.c:
	RUN_SKIPPED is added.

2012-12-09 (r7224) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(ejudge_timed_write) 'log' parameter is added;
	(ejudge_timed_fdgets) 'log' parameter is added.

	* master_html.c:
	(write_xml_testing_report) 'Note' renamed to 'Testing messages'.

	* run_common.c:
	interative valuer improvements.

2012-12-08 (r7220) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	"ej_process.h" is included;
	(parse_valuer_score) new function;
	(read_log_file) new function;
	(run_tests) initial implementation of interactive valuer support.

2012-12-08 (r7218) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(ejudge_timed_write) new function prototype;
	(ejudge_timed_fdgets) new function prototype.

	* run_common.c:
	progress in implementing interactive valuer.

2012-12-05 (r7208) Alexander Chernov  <cher@ejudge.ru>

	* ej-import-contest.c, super_run_packet.c:
	'interactive_valuer', 'disable_pe', 'disable_wtl' configuration
	variables are supported.

	* prepare.c, prepare_out.c, serve_2.c:
	'interactive_valuer', 'disable_pe', 'disable_wtl' problem configuration
	variables are supported.

	* run_common.c:
	'disable_pe', 'disable_wtl' problem configuration variables are handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super_proto.c, super-serve.c:
	editing of 'interactive_valuer', 'disable_pe', 'disable_wtl' problem
	configuration variables is supported.

2012-12-05 (r7206) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields 'interactive_valuer',
	'disable_pe', 'disable_wtl' are added.

	* problem_config.h:
	(struct problem_config_section) new fields 'interactive_valuer',
	'disable_pe', 'disable_wtl' are added.

	* super_proto.h:
	editing of new problem configuration variables 'interactive_valuer',
	'disable_pe', 'disable_wtl' is supported.

	* super_run_packet.h:
	(struct super_run_in_problem_packet) new fields 'interactive_valuer',
	'disable_pe', 'disable_wtl' are added.

2012-12-05 (r7204) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_read_compile_packet) RUN_COMPILED status change is skipped.

2012-12-05 (r7201) Alexander Chernov  <cher@ejudge.ru>

	* fileutl.h:
	"reuse_xalloc.h" is included;
	(get_file_list) new function prototype.

	* new_server_html.c:
	(ns_loop_callback) all compile and run reply packets are processed
	instead of only one.

2012-12-04 (r7198) Alexander Chernov  <cher@ejudge.ru>

	* compile.c, ej-super-run.c, run.c, run_common.c:
	semaphore-based serialization is commented out.

2012-12-04 (r7196) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(invoke_valuer) 'EJUDGE_MARKED' environment variable is set to '1' if
	  'valuer_sets_marked' is set;
	  'EJUDGE' environment variable is set to '1';
	(invoke_interactor) 'EJUDGE' environment variable is set to '1';
	(invoke_checker) 'EJUDGE_SCORING_CHECKER' environment variable is set
	  to '1' if 'scoring_checker' is set;
	  'EJUDGE' environment variable is set to '1'.

2012-12-04 (r7194) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(get_accepting_passed_tests) deleted problems are handled better.

2012-12-04 (r7193) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(dur_to_str) integer overflow is fixed.

2012-11-20 (r7184) Alexander Chernov  <cher@ejudge.ru>

	* contests.c:
	(handle_final_tag) empty elements are allowed.

2012-11-18 (r7180) Alexander Chernov  <cher@ejudge.ru>

	* reuse_exec.h:
	(task_TryProcessGroup) new function prototype;
	(task_KillProcessGroup) new function prototype.

	* run_common.c:
	(run_one_test) new functions from "reuse_exec.h" are used.

2012-11-18 (r7176) Alexander Chernov  <cher@ejudge.ru>

	* build_support.c, ej-import-contest.c, super_html_3.c:
	(do_generate_makefile) 'input_file' and 'output_file' problem
	configuration variables are handled.

2012-11-15 (r7167) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) missing tester section is allowed.

	* serve_2.c:
	(serve_run_request) missing tester section is handled correctly.

	* super_run_packet.c:
	(super_run_in_packet_free_tester) new function.

2012-11-15 (r7166) Alexander Chernov  <cher@ejudge.ru>

	* super_run_packet.h:
	(super_run_in_packet_free_tester) new function prototype.

2012-11-15 (r7164) Alexander Chernov  <cher@ejudge.ru>

	* ej-import-contest.c:
	support for 'enable_process_group' and 'start_env' problem
	configuration variables is added.

	* prepare.c, prepare_out.c:
	'start_env' problem configuration variable is added.

	* run_common.c:
	'start_env' problem configuration variable is handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c, super_proto.c:
	editing of 'start_env' problem configuration variable is supported.

	* serve_2.c:
	(serve_run_request) 'start_env' problem configuration variable is
	passed to the tester.

2012-11-15 (r7163) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'start_env' field is added.

	* problem_config.h:
	(struct problem_config_section) 'start_env' field is added.

	* super_proto.h:
	editing of 'start_env' problem configuration variable is supported.

	* super_run_packet.h:
	(struct super_run_in_problem_packet) 'start_env' field is added.

2012-11-14 (r7161) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, prepare_out.c:
	'enable_process_group' problem configuration variable is added.

	* run_common.c:
	(run_one_test) 'enable_process_group' is handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super_proto.c, super-serve.c:
	editing of 'enable_process_group' problem configuration variable
	is supported.

	* serve_2.c:
	'enable_process_group' is passed to the tester.

	* super_run_packet.c:
	'enable_process_group' is supported.

2012-11-14 (r7160) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'enable_process_group' field is added.

	* problem_config.h:
	(struct problem_config_section) 'enable_process_group' field is added.

	* super_proto.h:
	editing of 'enable_process_group' parameter is supported.

	* super_run_packet.h:
	(struct super_run_in_problem_packet) 'enable_process_group' is added.

2012-11-14 (r7159) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_tests) 0 tests is ok situation for OLYMPIAD contests in
	accepting mode with tests_to_accept == 0.

2012-11-11 (r7157) Alexander Chernov  <cher@ejudge.ru>

	* execute.c:
	some support for --tgzdir-pattern option is implemented.

2012-11-09 (r7154) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	'ignore_prev_ac' works for OLYMPIAD contests.

2012-11-07 (r7150) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) bug in form generation for virtual
	start/stop entry removal is fixed.

2012-11-06 (r7147) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	action 'NEW_SRV_ACTION_PRIV_SET_RUN_STYLE_ERR' renamed to
	  'NEW_SRV_ACTION_PRIV_SET_RUN_REJECTED'.

	* runlog.h:
	'RUN_REJECTED' status is added.

	* filter_scan.lex, html.c, master_html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, reports.c, runlog.c, runlog_static.c, serve_2.c:
	RUN_REJECTED status is handled.

	* new_server_tables.c: copyright notice is updated;
	action 'NEW_SRV_ACTION_PRIV_SET_RUN_STYLE_ERR' renamed to
	  'NEW_SRV_ACTION_PRIV_SET_RUN_REJECTED'.

2012-11-05 (r7145) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	LC_CTYPE is set to C in all testing configurations.

2012-11-04 (r7143) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	mysql linking options are really needed.

2012-11-04 (r7141) Alexander Chernov  <cher@ejudge.ru>

	* super_run_packet.c:
	(super_run_in_problem_packet_set_default) 'min_tests_to_accept'
	  should not be set to 0 by default.

2012-11-04 (r7137) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.h:
	(nwrun_in_packet_print) new function prototype.

	* filter_tree.c:
	missing <regex.h> is handled (based on CONF_HAS_REGEX).

	* nwrun.c: copyright notice is updated;
	bugfixes.

	* nwrun_packet.c:
	(nwrun_in_packet_print) new function.

2012-11-04 (r7130) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(invoke_nwrun) 'check_dir' parameter is added;
	cases for invalid or missing 'tst' pointer are properly handled.

	* testing_report_xml.c:
	"tests-passed" attribute is allowed in ACM mode.

2012-11-04 (r7126) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.win32.in: copyright notice is updated;
	-mno-cygwin is removed.

	* config.h.in:
	CONF_HAS_REGEX is added.

	* configure.ac:
	check for <regex.h> is added.

2012-11-03 (r7123) Alexander Chernov  <cher@ejudge.ru>

	* prepare_dflt.h: copyright notice is updated;
	'DFLT_G_REJUDGE_PRIORITY_ADJUSTMENT' is added with value 10.

	* serve_state.h:
	(serve_rejudge_problem) 'priority_adjustment' parameter is added;
	(serve_judge_suspended) 'priority_adjustment' parameter is added;
	(serve_rejudge_all) 'priority_adjustment' parameter is added;
	(serve_judge_virtual_olympiad) the same.

	* new_server_html.c, new_server_html_4.c:
	"prepare_dflt.h" is included;
	calls to 'serve_judge_suspended', 'serve_rejudge_run',
	'serve_rejudge_problem' are updated.

	* new_server_html_2.c:
	calls to 'serve_judge_suspended', 'serve_rejudge_run',
	'serve_rejudge_problem' are updated.

	* serve_2.c:
	(serve_rejudge_problem) 'priority_adjustment' parameter is added;
	(serve_judge_suspended) 'priority_adjustment' parameter is added;
	(serve_rejudge_all) 'priority_adjustment' parameter is added;
	(serve_judge_virtual_olympiad) the same.

	* serve_state.c:
	(serve_state_destroy) call to 'serve_judge_suspended' is updated.

2012-11-01 (r7117) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_entry) type of 'passed_mode' is changed to signed char.

	* html.c, master_html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, reports.c:
	'passed_mode' field of 'run_entry' is properly handled.

	* rldb_plugin_file.c, runlog_xml.c:
	handling of 'passed_mode' field is improved.

2012-11-01 (r7114) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h: copyright notice is updated;
	(run_change_status) 'new_passed_mode' parameter is added;
	(run_change_status_2) the same;
	(run_change_status_3) the same.

	* runlog.h:
	(run_change_status) 'newpassedmode' parameter is added;
	(run_change_status_2) the same;
	(run_change_status_3) the same.

	* run_packet.h:
	(struct run_reply_packet) field 'tests_passed' is added.

	* run_packet_priv.h:
	(struct run_reply_bin_packet) field 'tests_passed' is added.

	* new_server_html.c:
	(priv_submit_run_comment) call of 'run_change_status_3' is updated.

	* rldb_plugin_file.c:
	(change_status_func) 'new_passed_mode' parameter is added;
	(change_status_2_func) 'new_passed_mode' parameter is added;
	(change_status_3_func) 'new_passed_mode' parameter is added.

	* run_common.c:
	(generate_xml_report) 'tests-passed' attribute is always generated;
	(check_output_only) 'tests_passed' field is filled up;
	(run_tests) 'tests_passed' field is filled up.

	* runlog.c:
	(run_change_status) 'newpassedmode' parameter is added;
	(run_change_status_2) the same;
	(run_change_status_3) the same.

	* run_packet_4.c: copyright notice is updated;
	(run_reply_packet_read) 'tests_passed' field is processed.

	* run_packet_5.c: copyright notice is updated;
	(run_reply_packet_write) 'tests_passed' field is processed;
	(run_reply_packet_dump) the same.

	* serve_2.c:
	calls of 'run_change_status*' are updated.

2012-11-01 (r7111) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin_file.c, runlog.c, runlog_xml.c:
	handling of new field 'passed_mode' is added.

2012-11-01 (r7109) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_entry) 'test' field size reduced to 2;
	  new field 'is_passed' is added.

2012-11-01 (r7107) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(write_html_run_status) test printing is improved.

2012-10-31 (r7105) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	--disable-rpath is supported for mysql options detection.

2012-10-27 (r7098) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	password recovery rules are relaxed.

2012-10-25 (r7090) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h: copyright notice is updated;
	(lang_configure_screen) 'compile_home_dir' parameter is added;
	(lang_configure_batch) 'compile_home_dir' parameter is added;
	(lang_config_menu) 'compile_home_dir' parameter is added.

	* lang_config_vis.c:
	the scheme of assigning language ids is reworked and improved;
	(struct lang_id_info) field 'fixed' is added;
	(append_lang_id_info) new function;
	(add_to_lang_id_set) new function;
	(process_compile_cfg) new function;
	(process_lang_id_file) new function;
	(parse_lang_id_file) reworked to parse the current 'compile.cfg'
	file and extract language ids from it;
	(assign_lang_ids) reworked to minimize conflicts.
	(reconfigure_all_languages) 'compile_home_dir' parameter is added;
	(lang_configure_screen) 'compile_home_dir' parameter is added;
	(lang_configure_batch) 'compile_home_dir' parameter is added;
	(lang_config_menu) 'compile_home_dir' parameter is added.

	* ejudge-configure-compilers.c:
	(visual_setup) calls of 'lang_configure_screen', 'lang_config_menu'
	are updated;
	(main) call of 'lang_configure_batch' is updated.

	* ejudge-setup.c:
	(do_preview_menu) call of 'lang_configure_screen' is updated;
	(preview_install_script) the same;
	(save_install_script) the same;
	(do_main_menu) call of 'lang_config_menu' is updated.

2012-10-24 (r7088) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) 'plain_text' field is added.

	* new_server_html.c:
	(priv_generic_operation) 'plain_text' mode is supported;
	(ns_handle_http_request) 'plain_text' request parameter is handled.

2012-10-24 (r7086) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'test_score_list' type is changed
	  from char[256] to char*.

	* prepare.c, prepare_out.c, run.c, super_html_3.c, super_html_4.c:
	'test_score_list' type is changed from char[256] to char*.

2012-10-23 (r7082) Alexander Chernov  <cher@ejudge.ru>

	* super_html_6.c:
	(super_serve_op_IMPORT_FROM_POLYGON_PAGE) language priority selection
	dialog is added;
	(super_serve_op_IMPORT_FROM_POLYGON_ACTION) language priority selection
	is handled.

2012-10-23 (r7080) Alexander Chernov  <cher@ejudge.ru>

	* ej-polygon.c:
	(process_polygon_zip) 'language_priority' packet parameter is handled.

2012-10-23 (r7079) Alexander Chernov  <cher@ejudge.ru>

	* polygon_packet.h:
	(struct polygon_packet) field 'language_priority' is added.

2012-10-22 (r7077) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'printout_uses_login' global configuration variable
	is supported.

	* prepare.c, prepare_out.c:
	'printout_uses_login' global configuration variable is supported.

	* printing.c:
	(do_print_run) 'printout_uses_login' is honored.

	* run_common.c:
	(is_piped_core_dump) new function;
	(run_tests) warning is issued, if core dumping is setup to use
	a helper program.

	* serve-control.c, super_html_3.c, super_html_4.c, super_proto.c, super-serve.c:
	editing of 'printout_uses_login' global configuration variable
	is supported.

2012-10-22 (r7076) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) field 'printout_uses_login' is added.

2012-10-21 (r7072) Alexander Chernov  <cher@ejudge.ru>

	* printing.c:
	contestant name and location are escaped properly
	before using them as path components.

2012-10-20 (r7070) Alexander Chernov  <cher@ejudge.ru>

	* reuse_exec.h:
	(task_IsRealTimeout) new function prototype.

	* run_common.c:
	(run_one_test) 'RUN_WALL_TIME_LIMIT_ERR' error code is supported.

2012-10-19 (r7067) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	problem configuration variable 'super_run_dir' is supported.

2012-10-19 (r7065) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, prepare_out.c:
	support for 'super_run_dir' problem configuration variable is added.

2012-10-18 (r7062) Alexander Chernov  <cher@ejudge.ru>

	* ej-polygon.c:
	a couple of bugs is fixed.

2012-10-18 (r7061) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'super_run_dir' field is added.

2012-10-18 (r7059) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_load_cs_languages) 'cs_conf_file_buf',
	  'cs_conf_file_len' parameters are added.

	* super_html_3.c:
	(super_html_edit_languages) call to 'super_load_cs_languages'
	  is updated.

	* super_html_4.c:
	(write_languages_page) call to 'super_load_cs_languages' is updated.

	* super_html_8.c:
	(super_html_read_serve) call to 'super_load_cs_languages' is updated;
	  error reporting is improved;
	(super_load_cs_languages) 'cs_conf_file_buf', 'cs_conf_file_len'
	  parameters are added.

2012-10-18 (r7057) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	added support for variable "super-run" prefix in the program's
	working paths;
	added '-a' option to allow specifying alternate location
	of the log file;
	added '-p' option to allow specifying alternate prefix to the
	working paths.

2012-10-17 (r7055) Alexander Chernov  <cher@ejudge.ru>

	* cpu.h: copyright notice is updated;
	(cpu_get_performance_info) function prototype is added.

	* testing_report_xml.h:
	(struct testing_report_xml) fields 'cpu_model', 'cpu_mhz' are added.

	* master_html.c:
	'cpu_model' and 'cpu_mhz' are reported to judges.

	* run_common.c, run_inverse.c:
	"cpu.h" is included;
	'cpu_model' and 'cpu_mhz' are saved to testing report.

	* testing_report_xml.c:
	elements <cpu_model> and <cpu_mhz> are supported.

2012-10-12 (r7049) Alexander Chernov  <cher@ejudge.ru>

	* super_html_2.c: creation of contests with no problems
	is enabled.

2012-10-12 (r7048) Alexander Chernov  <cher@ejudge.ru>

	* super_html_6.c:
	problem id assignment during Polygon import is improved.

2012-09-16 (r7027) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_4.c, filter_eval.c, reports.c, filter_scan.lex, execute.c, new_server_html.c, html.c, filter_tree.c, serve_2.c, runlog.h, run_common.c, runlog_static.c, ej-batch.c, master_html.c, clean-users.c, new_server_html_2.c:
	new run statuses RUN_WALL_TIME_LIMIT_ERR, RUN_PENDING_REVIEW are added.

2012-08-31 (r7016) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(super_html_lang_activate) invalid assingment of compile_id is fixed.

2012-08-31 (r7014) Alexander Chernov  <cher@ejudge.ru>

	* super_html_8.c:
	(super_html_read_serve) picking up a compile_id for a language
	is improved.

2012-08-31 (r7012) Alexander Chernov  <cher@ejudge.ru>

	* super_html_6.c:
	(super_serve_op_USER_CREATE_MANY_ACTION) name template is set
	to login template by default.

2012-08-28 (r7006) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	(serve_read_compile_packet) handling of '.txt' files with compilation
	  warnings is improved.

	* serve_2.c:
	missing headers <sys/time.h>, <sys/resource.h> are included.

2012-08-22 (r7003) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	default user identity is specified.

2012-08-22 (r7001) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	default socket paths are changed.

2012-08-20 (r6990) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h: copyright notice is updated;
	(ej_ip6_t) new structure to hold IPv4/IPv6 address.

	* xml_utils.h:
	(xml_parse_ip6) new function prototype.

2012-08-13 (r6986) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	(main) "-R" option is supported;
	  'start_open_log' is called.

2012-08-13 (r6984) Alexander Chernov  <cher@ejudge.ru>

	* startstop.h:
	(start_open_log) new function prototype.

	* ej-super-run.c:
	(main) "-R" option is supported;
	  'start_open_log' is called.

	* job-server.c: copyright notice is updated;
	(main) "-R" option is supported;
	  'start_open_log' is called.

	* server_framework.c:
	"startstop.h" is included;
	(nsf_prepare) 'start_open_log' is called.

	* super-serve.c:
	(prepare_sockets) 'start_open_log' is called;
	(main) "-R" option is supported.

	* userlist-server.c:
	(main) "-R" option is supported;
	  'start_open_log' is called.

2012-08-13 (r6981) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.h: copyright notice is updated;
	(struct server_framework_params) 'restart_mode_flag' field is added;

	* new-server.c:
	(main) "-R" option is supported for restart.

	* server_framework.c: copyright notice is updated;
	(nsf_prepare) 'restart_mode_flag' is handled.

2012-08-09 (r6976) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_testing_queue_delete) 'user_login' parameter is added;
	(serve_testing_queue_change_priority) 'user_login' parameter is added;
	(serve_testing_queue_delete_all) 'user_login' parameter is added;
	(serve_testing_queue_change_priority_all) 'user_login' parameter added.

	* new_server_html.c:
	(priv_testing_queue_operation) calls of testing queue functions
	  are updated;
	(priv_whole_testing_queue_operation) calls of testing queue functions
	  are updated.

	* serve_2.c:
	(serve_compile_request) global priority adjustment is handled;
	(serve_run_request) global priority adjustment is handled;
	(testing_queue_unlock_entry) 'user_login' parameter is added;
	  the user permissions are checked if the packet's contest_id
	  is different from the current contest_id;
	(serve_testing_queue_delete) 'user_login' parameter is added;
	(serve_testing_queue_change_priority) 'user_login' parameter is added;
	(serve_testing_queue_delete_all) 'user_login' parameter is added;
	(serve_testing_queue_change_priority_all) 'user_login' parameter added.

2012-07-31 (r6969) Alexander Chernov  <cher@ejudge.ru>

	* ej-polygon.c:
	(process_polygon_zip) the files matching the test file and the answer
	file patterns remaining from the previous package are removed from
	the test directory;
	(process_problem_row) modification time parsing is improved.

2012-07-30 (r6964) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_language_data) 'extid' field is added.

	* super_proto.h:
	editing of 'extid' language configuration variable is supported.

	* prepare.c, prepare_out.c:
	'extid' language configuration variable is handled.

	* run_inverse.c:
	(invoke_test_program) 'extra_suffix' parameter is added;
	extra file is copied to the test directory, if extra_suffix is specified;
	(invoke_sample_program) 'extra_suffix' parameter is added;
	(run_inverse_testing) '.jar' additional file is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of 'extid' language configuration variable is supported.

	* super_html_8.c:
	"misctext.h" is included;
	(super_load_cs_languages) trailing whitespace is removed from the version string.

2012-07-29 (r6962) Alexander Chernov  <cher@ejudge.ru>

	* contests.c:
	(contests_clear_cache) 'last_update_time' is cleared as well.

	* new_server_html.c:
	(ns_submit_run) p_run_id is properly used.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) form template for change status is generated.

2012-07-27 (r6959) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(contests_clear_cache) new function prototype.

	* contests.c:
	(contests_clear_cache) new function.

	* super_html_6.c:
	(super_serve_op_CREATE_CONTEST_BATCH_ACTION) contests cache is cleared.

2012-07-23 (r6957) Alexander Chernov  <cher@ejudge.ru>

	* super_html.c:
	null pointer dereference in case of XML parse error is fixed.

2012-07-09 (r6955) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_submit_run) 'enable_user_id', 'enable_status', 'is_hidden' parameters are added.

	* new_server_html.c:
	(ns_submit_run) 'enable_user_id', 'enable_status', 'is_hidden' parameters are added.

2012-07-07 (r6950) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_set_cnts_file_perms) new prototype.

	* super_proto.h:
	'CREATE_CONTEST_BATCH_ACTION' is added.

	* super_html_6.c:
	(super_serve_op_CREATE_CONTEST_BATCH_ACTION) new function.

	* super_html_7.c:
	(super_html_set_cnts_file_perms) renamed from 'set_cnts_file_perms'.

	* super_proto.c:
	'CREATE_CONTEST_BATCH_ACTION' is supported.

2012-07-07 (r6949) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(contests_load_file) new function prototype.

	* contests.c:
	(parse_one_contest_xml) 'number' parameter is removed;
	(contests_load_file) new function.

2012-07-06 (r6947) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new request 'SUBMIT_RUN_BATCH' is added;
	(ns_submit_run) 'enable_uuid' parameter is added.

	* new_server_html.c:
	"ej_uuid.h" is included;
	(priv_submit_run_batch_page) new function;
	(ns_submit_run) 'enable_uuid' parameter is added;
	  uuid is parsed in 'enable_uuid' mode.

2012-07-06 (r6945) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	ej_uuid.[ch] are added.

	* ej_uuid.h: initial revision.

	* new-server.h:
	(ns_submit_run) 'enable_path' parameter is added.

	* ej_uuid.c: initial revision.

	* new_server_html.c:
	(ns_submit_run) 'enable_path' parameter is added;
	  'path' request parameter, which contains the path to the source
	  file is handled in 'enable_path' mode.

	* filter_eval.c, new_server_html_2.c, runlog.c, runlog_xml.c:
	"ej_uuid.h" is used instead of <uuid/uuid.h>.

2012-07-06 (r6943) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	'PING' request is added.

	* new_server_html.c:
	'PING' request is supported.

2012-07-05 (r6941) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	'IMPORT_PROBLEMS_BATCH_ACTION' is added;
	'super_proto_cmd_names' is added.

	* serve-control.c:
	<errno.h> is included;
	(parse_action) new function that supports symbolic
	  names for commands.

	* super_html_4.c:
	(parse_opcode) new function that supports symbolic
	  names for opcodes.

	* super_proto.c:
	array of super-serve commands is added.

2012-07-05 (r6939) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_get_contest_header_and_footer) new function prototype.

	* ej-import-contest.c:
	'contest.xml' is updated with the results of import.

	* super_html_2.c:
	(get_contest_header_and_footer) moved to 'super_html_8.c'.

	* super_html_8.c:
	(super_html_get_contest_header_and_footer) moved here from
	'super_html_2.c'.

2012-07-04 (r6937) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	ej_import_packet.[ch] are added.

	* meta.make:
	rules for ej_import_packet_meta.[ch] are added.

	* ej-import-contest.c:
	config file is used instead of command line args.

	* super_html_6.c:
	'IMPORT_PROBLEMS_BATCH_ACTION" handler is added.

2012-07-04 (r6936) Alexander Chernov  <cher@ejudge.ru>

	* ej_import_packet.c, ej_import_packet.h:
	initial revision

2012-07-04 (r6934) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	new attrubute "ready" is added;
	new elements <update_time>, <problem_count> are added.

	* contests.c, contests_2.c:
	new attrubute "ready" is supported;
	new elements <update_time>, <problem_count> are supported.

2012-07-04 (r6932) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for <ext_id> element is added.

	* contests.c:
	support for <ext_id> element is added.

2012-07-04 (r6930) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h: copyright notice is updated;
	new capability bits 'LOCAL_0' ... 'LOCAL_3' are added.

	* opcaps.c:
	new capability bits 'LOCAL_0' ... 'LOCAL_3' are supported.

2012-07-03 (r6928) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rules for compilation of 'ej-import-contest' are added.

	* files.make:
	build_support.c, super_html_8.c are added;
	ej-import-contest.c is added;
	build_support.h is added.

	* build_support.h: initial revision.

	* super_html.h:
	(super_html_serve_unparse_serve_cfg) prototype is added.

	* build_support.c: initial revision.

	* ej-import-contest.c: initial revision.

	* ej-polygon.c:
	(main) debugging output is removed.

	* prepare_out.c:
	(prepare_unparse_prob) invalid unparsing of 'stand_hide_time'
	  is fixed.

	* super_html_3.c:
	"build_support.h" is included;
	(super_load_cs_languages) moved to 'super_html_8.c';
	(super_html_create_problem) the same;
	(unparse_serve_cfg) the same;
	(super_html_serve_unparse_serve_cfg) the same;
	(super_html_get_serve_header_and_footer) the same;
	(do_load_file) the same;
	(super_html_read_serve) the same;

	* super_html_7.c:
	"build_support.h" is included;
	(prepare_test_file_names) moved to 'build_support.c'
	  as 'build_prepare_test_file_names';
	(merge_lines) moved to 'build_support.c';
	(extract_makefile_header_footer) moved to 'build_support.c';
	(pattern_to_shell_pattern) moved to 'build_support.c';
	(get_source_suffix) moved to 'build_support.c';
	(find_suffix) moved to 'build_support.c';
	(guess_language_by_cmd) the same;
	(collect_suitable_names) the same;
	(remove_src_suffix) the same;
	(make_exe_suitable_names) the same;
	(free_suitable_names) the same;
	(replace_cmd_suffix) the same;
	(guess_language_by_cmd) the same;
	(get_compiler_script) the same;
	(get_compiler_path) the same;
	(get_compiler_flags) the same;
	(generate_checker_compilation_rule) the same;
	(generate_solution_compilation_rule) the same;
	(generate_makefile) the same;
	(super_serve_generate_makefile) the same.

	* super_html_8.c: initial revision.

2012-07-03 (r6927) Alexander Chernov  <cher@ejudge.ru>

	* problem_config.h:
	(struct problem_config_section) 'tests_to_accept' field type
	is changed to 'int'.

2012-06-28 (r6925) Alexander Chernov  <cher@ejudge.ru>

	* reports.c, ej-polygon.c:
	gcc compilation fixes.

2012-06-28 (r6922) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	libuuid is used where needed.

	* html.h:
	'RUN_VIEW_RUN_UUID' is added.

	* runlog.h:
	(run_add_record) 'uuid' parameter is added.

	* filter_eval.c, filter_expr.y, filter_scan.lex:
	'uuid' primary expression is supported.

	* new_server_html.c, new_server_html_4.c:
	calls of 'run_add_record' are updated.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) 'run_uuid' field is supported;
	(ns_write_priv_source) 'run_uuid' field is supported;
	(ns_priv_edit_run_page) 'run_uuid' field is supported;
	(ns_priv_edit_run_action) 'run_uuid' field is supported;
	(do_add_row) call of 'run_add_record' is updated.

	* runlog.c, runlog_xml.c:
	'run_uuid' field is supported.

2012-06-28 (r6918) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in:
	CONF_HAS_LIBUUID is added.

2012-06-28 (r6917) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for libuuid is added.

2012-06-28 (r6916) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_entry) 'is_examinable', 'examiners', 'exam_score'
	fields are removed.

	* filter_eval.c: copyright notice is updated;
	predicates on 'is_examinable', 'examiners', 'exam_score' always
	return 0.

	* new_server_html.c:
	(priv_edit_run) 'is_examinable' change is ignored.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) 'is_examinable' is ignored.

	* rldb_plugin_file.c:
	changes to 'is_examinable', 'examiners', 'exam_score' are ignored;
	reading of those fields returns 0.

	* runlog.c:
	changes to 'is_examinable', 'examiners', 'exam_score' are ignored;
	reading of those fields returns 0.

	* runlog_xml.c:
	'is_examinable' field is ignored on reading and writing.

2012-06-27 (r6913) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	run_packet_1.c, run_packet_2.c, run_packet_3.c, run_packet_7.c
	are removed.

	* run_packet_priv.h:
	(struct run_request_bin_packet) removed.

2012-06-27 (r6911) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h:
	obsolete code is removed.

	* run_packet_1.c, run_packet_2.c, run_packet_3.c:
	obsolete code is removed.

2012-06-21 (r6905) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	linux-shared-32 architecture is supported.

	* prepare_out.c:
	linux-shared-32 architecture is supported.

2012-06-20 (r6902) Alexander Chernov  <cher@ejudge.ru>

	* sformat.c:
	(sformat_message) locale-specific switch changed to 'a' instead of 'L'.

2012-06-18 (r6896) Alexander Chernov  <cher@ejudge.ru>

	* execute.c:
	(run_program) 'task_NewWait' is used instead of 'task_Wait';
	  the memory size, used by process is stored.

	* run_common.c:
	(generate_xml_report) unparsing of 'max_memory_used' is updated;
	(run_one_test) 'task_NewWait' is used;
	  the process max vm size is tracked and stored in 'max_memory_used'
	  field.

2012-06-18 (r6895) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	'xml_utils/attr_ulong.c is added.

	* reuse_exec.h:
	(task_NewWait) new function prototype is added.

	* run.h:
	(struct testinfo) field 'max_memory_used' now has unsigned long type.

	* xml_utils.h: copyright notice is updated;
	(xml_attr_ulong) new function prototype is added.

	* testing_report_xml.h:
	(struct testing_report_test) field 'max_memory_used' now has
	  unsigned long type.

	* master_html.c:
	(write_xml_testing_report) format spec for 'max_memory_used'
	  field is updated.

	* reports.c: copyright notice is updated;
	(write_xml_tex_testing_report) format spec for 'max_memory_used'
	  is updated.

	* testing_report_xml.c:
	(parse_test) "max-memory-used" attribute is parsed to the
	  unsigned long field 'max_memory_used';
	(testing_report_unparse_xml) unparsing of 'max_memory_used'
	  is updated.

2012-06-13 (r6889) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_submit_run) new function prototype.

	* new_server_html.c:
	(ns_submit_run) new function is implemented.

	* new_server_html_4.c:
	(cmd_submit_run) support for internally judged problems is added.

	* run_common.c:
	(run_tests) check for undefined 'check_cmd' and 'standard_checker'
	is added.

2012-06-08 (r6887) Alexander Chernov  <cher@ejudge.ru>

	* ej-polygon.c:
	(curl_iface_login_action_func) 'CURLOPT_POSTFIELDS' is used instead of
	'CURLOPT_COPYPOSTFIELDS'.

2012-06-06 (r6885) Alexander Chernov  <cher@ejudge.ru>

	* prepare_out.c:
	(generate_abstract_tester) the original values of 'start_env'
	configuration is preserved.

2012-06-06 (r6881) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	"update from polygon" functionality is implemented.

	* prepare_out.c:
	'extid' is properly handled.

	* super_html.c, super_html_6.c, super_proto.c:
	"update from polygon" functionality is implemented.

2012-06-06 (r6879) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(ejudge_start_daemon_process) new function prototype.

	* super_html.h:
	(problem_id_to_short_name) new function prototype;
	(super_html_create_problem) new function prototype.

	* super_proto.h:
	"import from Polygon" is implemented.

	* super_html_6.c:
	"import from Polygon" is implemented.

	* ej-polygon.c:
	new state 'ALREADY_EXISTS';
	(struct ProblemInfo) new fields 'ejudge_id', 'ejudge_short_name';
	(process_polygon_zip) 'create_mode' is handled;
	(main) NULL problem_name is handled.

	* parsecfg.c:
	(parse_param) configuration files without "global" section
	are supported.

	* polygon_packet.c:
	(polygon_packet_unparse) new function.

	* super_html_2.c:
	(super_html_commit_contest) "Check contest settings" button is added.

	* super_html_3.c:
	(super_html_edit_problems) "Import from Polygon" link is added;
	(problem_id_to_short_name) new function;
	(super_html_create_problem) new function;
	(super_html_add_problem) 'super_html_create_problem' is used.

	* super_proto.c:
	"import from polygon" is implemented.

	* super-serve.c:
	(update_state_create) new function;
	(update_state_free) new function;
	(sid_state_clear) 'update_state' is freed.

2012-06-04 (r6877) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct update_state) 'contest_id' field is added.

2012-06-04 (r6876) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct update_state) 'create_mode' field is added.

2012-06-04 (r6875) Alexander Chernov  <cher@ejudge.ru>

	* polygon_packet.h:
	(struct polygon_packet) new fields 'create_mode', 'ejudge_id',
	  'ejudge_short_name';
	(polygon_packet_alloc) new function prototype;
	(polygon_packet_unparse) new function prototype.

	* problem_config.h:
	(struct problem_config_section) fields 'id', 'short_name' are added.

	* super-serve.h:
	(struct update_state) new structure;
	(struct sid_state) field 'update_state' is added;
	(update_state_create) new function prototype;
	(update_state_free) new function prototype.

2012-06-02 (r6869) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_one_test) 'start_env' parameter is added;
	(merge_env) new function to merge the environment;
	(run_tests) the 'start_env' environment from the tester section of the
	testing packet is merged to the 'start_env' environment of the tester
	section of the configuration file.

2012-06-02 (r6868) Alexander Chernov  <cher@ejudge.ru>

	* polygon_packet.h:
	(struct polygon_packet) 'ids' field is renamed to 'id'.

	* ej-polygon.c:
	minor improvements according to the documentation.

2012-06-01 (r6867) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	LIBZIP is added to ej-normalize.

	* files.make:
	polygon_packet.[ch] are added.

	* meta.make:
	rules for polygon_packet_meta.[ch] are added.

	* polygon_packet.h: initial revision.

	* problem_config.h:
	(struct problem_config_section) new fields 'long_name_en', 'revision'
	  are added.

	* ej-polygon.c: implemented.

	* meta_generic.c:
	(meta_build_automaton) debug output is commented out;
	(meta_unparse_cfg) boolean output is improved.

	* polygon_packet.c: initial revision.

	* problem_config.c:
	(problem_config_section_unparse_cfg) a bug is fixed.

2012-05-28 (r6865) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	ej-polygon compilation rules are added.

	* files.make:
	ej-polygon.c is added.

	* config.h.in:
	CONF_HAS_LIBCURL is added.

	* ej-polygon.c: initial revision.

2012-05-28 (r6864) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: copyright notice is updated;
	check for libcurl is added.

2012-05-27 (r6862) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c, prepare.c, prepare_out.c, run_common.c:
	'valgrind' arch is supported.

2012-05-26 (r6859) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	memory limit type and secure exec type for valgrind are added.

2012-05-26 (r6857) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	'enable_max_stack_size' packet global parameter is supported.

2012-05-25 (r6855) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h: copyright notice is updated;
	(run_get_max_user_id) new function prototype;
	(run_get_total_users) new function prototype.

	* runlog_state.h: copyright notice is updated;
	(struct runlog_state) new fields 'max_user_id', 'user_count'.

	* html.c, master_html.c, new_server_html_2.c, runlog_xml.c:
	'disable_user_database' mode is supported.

	* new_server_html.c:
	(priv_assign_cyphers_2) no action in 'disable_user_database' mode.

	* prepare_serve.c: copyright notice is updated;
	'disable_user_database' mode is supported.

	* runlog.c: copyright notice is updated;
	'max_user_id', 'user_count' are maintained;
	(run_get_max_user_id) new function;
	(run_get_total_users) new function.

	* serve_2.c:
	'disable_user_database' mode is supported.

	* teamdb_2.c: copyright notice is updated;
	(teamdb_get_user_map) 'disabled' mode is handled.

2012-05-25 (r6853) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h:
	(teamdb_disable) new function prototype.

	* teamdb_priv.h:
	(struct teamdb_state) 'disabled' field is added.

	* serve_state.c:
	'disable_user_database' global configuration variable is handled.

	* teamdb.c:
	(teamdb_disable) new function;
	'disabled' flag is handled.

2012-05-25 (r6851) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'disable_user_database', 'enable_max_stack_size'
	global configuration variables is supported.

	* prepare.c, prepare_out.c:
	'disable_user_database', 'enable_max_stack_size' global configuration
	variables are supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'disable_user_database', 'enable_max_stack_size'
	global configuration variables is supported.

	* super_run_packet.c:
	'enable_max_stack_size' global parameter is supported.

2012-05-25 (r6850) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new fields:
	  'disable_user_database', 'enable_max_stack_size'.

	* super_run_packet.h:
	(struct super_run_in_global_packet) new field 'enable_max_stack_size'.

2012-05-23 (r6846) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.h: copyright notice is updated;
	memory limit fields now have 'size_t' type instead of 'int'.

	* execute.c:
	(parse_size) 'maxval' parameter is removed;
	  64-bit memory limits are supported;
	(handle_options) calls to 'parse_size' are updated.

	* nwrun_packet.c: copyright notice is updated;
	64-bit memory limit fixes.

	* prepare.c:
	64-bit memory limit fixes.

	* run_common.c:
	64-bit memory limit fixes.

2012-05-22 (r6844) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_tests) no tests situation is treated as check failed.

2012-05-22 (r6843) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_priv_edit_run_action) REJUDGE status change is supported.

2012-05-21 (r6841) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(scan_run_queue) all packets are shown, not only the current contests';
	(ns_write_testing_queue) super-run testing mode is supported.

	* serve_2.c:
	(serve_testing_queue_delete) super-run testing mode is supported;
	(serve_testing_queue_change_priority) the same as above.
	(collect_run_packets) the same as above.

2012-05-20 (r6839) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_one_test) insecure mode for java is properly supported.

2012-05-20 (r6837) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_audit_log) new parameters 'command', 'status', 'run_status'
	  are added.

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c, runlog_import.c:
	run audit logging is improved.

	* serve_2.c:
	run audit logging is improved;
	(serve_audit_log) new parameters 'command', 'status', 'run_status'
	  are added.

2012-05-20 (r6835) Alexander Chernov  <cher@ejudge.ru>

	* sformat.c:
	(sformat_message) member serial number is made optional.

2012-05-20 (r6833) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_report_check_failed) new function prototype.

	* master_html.c:
	(write_xml_testing_report) 'errors' field is reported.

	* new_server_html.c:
	(priv_submit_run) if compile request is failed, the condition is reported
	by 'Check failed' status;
	(unpriv_submit_run) the same.

	* new_server_html_4.c:
	(cmd_submit_run) if compile request is failed, the condition is reported
	by 'Check failed' status.

	* serve_2.c:
	"testing_report_xml.h" is included;
	(serve_report_check_failed) new function;
	(serve_rejudge_run) if compile request is failed, the condition is reported
	by 'Check failed' status.

2012-05-19 (r6831) Alexander Chernov  <cher@ejudge.ru>

	* sformat.c: copyright notice is updated;
	(sformat_message) language format conversions are added.

2012-05-18 (r6829) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_refresh_page) 'Redirect:' header is fixed for standard compliance;
	(ns_refresh_page_2) the same.

	* new_server_html_5.c:
	'Redirect:' header is fixed for standard compliance.

	* serve-control.c:
	(client_put_refresh_header) the same.

	* super_html_4.c:
	(refresh_page) the same.

	* super_html_6.c:
	(ss_redirect) the same;
	(ss_redirect_2) the same.
	(super_serve_op_EJUDGE_XML_CANCEL_ACTION) the same.

	* super_html_7.c:
	(ss_redirect_2) the same.

2012-05-17 (r6827) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_remove_status_file) new function prototype.

	* serve_2.c:
	(serve_remove_status_file) new function;
	(serve_reset_contest) status directory is cleared.

2012-05-17 (r6825) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin_file.c:
	(close_func) NULL-pointer dereference is fixed.

2012-05-17 (r6823) Alexander Chernov  <cher@ejudge.ru>

	* cgi.c: copyright notice is updated;
	(do_get_char) content_length is used to store the number of bytes to read;
	(cgi_read) CONTENT_LENGTH environment is parsed.

2012-05-15 (r6821) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(super_html_print_problem) redundant check of 'standard_checker' is removed.

2012-05-15 (r6819) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_tests) scoring_checker bug is fixed.

2012-05-12 (r6817) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	minor visual changes in priv source view page.

2012-05-09 (r6815) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_change_status_dialog) 'cur_value', 'is_disabled' parameters are added.

	* mischtml.h: copyright notice is updated;
	(html_input_text) 'is_disabled' parameter is added;
	(html_checkbox) 'is_disabled' parameter is added.

	* misctext.h: copyright notice is updated;
	(duration_str_2) new function;
	(parse_sha1) new function.

	* new-server.h:
	'PRIV_EDIT_RUN_PAGE', 'PRIV_EDIT_RUN_ACTION' actions are added;
	(ns_priv_edit_run_page) new function prototype;
	(ns_priv_edit_run_action) new function prototype.

	* html_checkbox.c: copyright notice is updated;
	(html_checkbox) 'is_disabled' parameter is added.

	* html_input_text.c: copyright notice is updated;
	(html_input_text) 'is_disabled' parameter is added.

	* master_html.c:
	(write_change_status_dialog) 'cur_value', 'is_disabled' parameters are added.

	* misctext.c:
	(duration_str_2) new function;
	(parse_sha1) new function.

	* new_server_html.c:
	calls to 'html_input_text' are updated;
	(priv_edit_run_page) new function;
	'PRIV_EDIT_RUN_PAGE', 'PRIV_EDIT_RUN_ACTION' requests are handled.

	* new_server_html_2.c:
	calls to 'html_input_text' are updated;
	(ns_write_priv_source) field editing is moved to a separate page;
	(ns_priv_edit_run_page) new function;
	(ns_priv_edit_run_action) new function.

	* new_server_html_5.c, super_html_4.c, super_html_6.c, super_html_7.c:
	calls to 'html_input_text' are updated.

	* runlog_xml.c:
	(parse_sha1) moved to misctext.[ch];
	(process_run_elements) call to 'parse_sha1' is updated.

2012-05-08 (r6812) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) "CLEAR" should now work for virtual start/stop events.

	* prepare_out.c:
	(prepare_unparse_unhandled_global) 'super_run_dir' is added.

2012-05-06 (r6810) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	"xml_utils.h" is included;
	<sys/types.h>, <sys/stat.h> is included;
	(handle_packet) replative paths are supported in 'reply_report_dir', etc;
	(remove_if_upgrade_needed) new function;
	(main) autoupgrade of 'super-run.cfg' is implemented.

	* serve_2.c:
	(serve_run_request) relative paths are passed in 'reply_report_dir', etc
	  parameters.

2012-05-05 (r6808) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_build_run_dirs) 'contest_id' parameter is added.

	* serve.c:
	(main) call of 'serve_build_run_dirs' is updated.

	* serve_2.c:
	(serve_build_run_dirs) 'contest_id' parameter is added;
	  'super_run_dir' global configuration variable is supported.

	* serve_state.c:
	(serve_state_load_contest) call of 'serve_build_run_dirs' is updated.

2012-05-05 (r6804) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	(handle_packet) report directories are created.

	* prepare.c:
	'super_run_dir' global configuration variable is supported.

	* serve_2.c:
	(serve_run_request) improvements;
	'super_run_dir' global config variable is supported.

2012-05-05 (r6803) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) field 'super_run_dir' is added.

2012-05-05 (r6801) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(invoke_init_cmd) new function;
	(invoke_interactor) log file is always opened in APPEND mode;
	(invoke_checker) log file is always opened in APPEND mode;
	(run_one_test) 'init_cmd' command is supported.

2012-05-04 (r6797) Alexander Chernov  <cher@ejudge.ru>

	* super_html_6.c:
	(super_serve_op_USER_SAVE_ACTION) modifying of 'login' and 'email'
	fields is supported.

2012-05-04 (r6793) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	Ticket #53 fixed.

2012-05-03 (r6791) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) 'run_fields' are restored from external storage.

2012-05-03 (r6789) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'init_cmd', 'init_env' is supported.

	* prepare.c:
	'init_env', 'init_cmd' problem configuration parameters
	are supported.

	* prepare_out.c: copyright notice is updated;
	'init_env', 'init_cmd' problem configuration parameters
	are supported.

	* problem_config.c:
	'init_env', 'init_cmd' fields are supported.

	* serve_2.c:
	(serve_run_request) 'init_env', 'init_cmd' are passed to invokers.

	* serve-control.c, super_html_3.c, super_html_4.c, super_html_7.c, super_proto.c, super-serve.c:
	editing of 'init_cmd', 'init_env' is supported.

2012-05-03 (r6788) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) field 'init_env' is added.

	* problem_config.h:
	(struct problem_config_section) field 'init_env' is added.

	* super_proto.h:
	editing of 'init_env' problem configuration variable is supported.

	* super_run_packet.h:
	(struct super_run_in_problem_packet) field 'init_env' is added.

2012-05-03 (r6787) Alexander Chernov  <cher@ejudge.ru>

	* problem_config.h:
	(struct problem_config_section) 'init_cmd' field is added.

	* super_proto.h:
	editing of 'init_cmd' problem configuration parameter is supported.

	* super_run_packet.h:
	(struct super_run_in_problem_packet) 'init_cmd' field is added.

2012-05-03 (r6786) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'init_cmd' field is added.

2012-05-01 (r6782) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h: copyright notice is updated;
	'CLAR_FIELD_*' constants are added;
	(clar_modify_text) new function prototype;
	(clar_modify_record) new function prototype.

	* cldb_plugin.h: copyright notice is updated;
	(struct cldb_plugin_iface) 'modify_text' method is added;
	  'modify_record' method is added.

	* new-server.h:
	new actions NEW_SRV_ACTION_PRIV_EDIT_CLAR_PAGE,
	  NEW_SRV_ACTION_PRIV_EDIT_CLAR_ACTION are added;
	(ns_priv_edit_clar_page) new function prototype;
	(ns_priv_edit_clar_action) new function prototype;
	(ns_cgi_param_int_opt) new function prototype.

	* clarlog.c: copyright notice is updated;
	(clar_modify_text) new function;
	(clar_modify_record) new function.

	* cldb_plugin_file.c: copyright notice is updated;
	(modify_text_func) new function;
	(modify_record_func) new function.

	* new_server_html.c:
	(priv_edit_clar_page) new function.

	* new_server_html_2.c:
	(ns_write_priv_clar) 'Edit' link is added;
	(ns_priv_edit_clar_page) new function;
	(parse_user_field) new static function;
	(ns_priv_edit_clar_action) new function.

	* serve-control.c:
	generated HTML headers and titles are improved.

2012-04-27 (r6779) Alexander Chernov  <cher@ejudge.ru>

	* serve-control.c:
	page title is improved.

2012-04-27 (r6777) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	"Size", "IP", "User ID" run fields are now shown by default.

	* new_server.h:
	new action CHANGE_RUN_FIELDS.

	* new_server_html.c:
	(priv_change_run_fields) new function.

2012-04-26 (r6774) Alexander Chernov  <cher@ejudge.ru>

	* ej-super-run.c:
	(create_configs) mono settings are improved.

	* run_common.c:
	(make_mono_limits) new function;
	(run_one_test) memory limit type and secure exec type "mono" are added.

2012-04-26 (r6772) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	secure exec type "mono" is added;
	memory limit type "mono" is added.

2012-04-26 (r6770) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	(write_xml_testing_report) formatting changed.

	* run_common.c:
	boolean checks are improved: var -> var > 0; !var -> var <= 0.

2012-04-26 (r6768) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(run_tests) check for score_tests_val == NULL is added.

2012-04-26 (r6766) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_html_run_status) 'run_fields' parameter is added;
	run field flags are added.

	* serve_state.h:
	(struct user_filter_info) 'run_fields' field is added.

	* team_extra.h: copyright notice is updated;
	(struct team_extra) field 'run_fields' is added;
	(team_extra_get_run_fields) new function prototype;
	(team_extra_set_run_fields) new function prototype.

	* html.c:
	(write_html_run_status) 'run_fields' parameter is added;
	  fields are printed depending on the 'run_fields' parameter;
	calls to 'write_html_run_status' are updated.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) run_fields field bitmask is handled.

	* team_extra.c: copyright notice is updated;
	(get_entry) 'try_flag' parameter is added;
	(team_extra_get_run_fields) new function;
	(team_extra_set_run_fields) new function.

	* team_extra_xml.c: copyright notice is updated;
	<errno.h> is included;
	<run_fields> element are supported.

2012-04-24 (r6764) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h:
	(struct ejudge_cfg) 'caps_node' field is added;
	(ejudge_cfg_free_subtree) new function;
	(ejudge_cfg_refresh_caps_file) 'force_flag' parameter is added;
	(ejudge_cfg_user_map_find_simple) new function prototype;
	(ejudge_cfg_user_map_add) new function prototype;
	(ejudge_cfg_caps_add) new function prototype.

	* super_proto.h:
	editing of the system user map and the global capabilities
	is supported.

	* ejudge_cfg.c:
	(new_node) new function;
	(parse_capabilities) 'caps_node' is stored;
	(ejudge_cfg_free_subtree) new function;
	(ejudge_cfg_refresh_caps_file) 'force_flag' parameter is added;
	(ejudge_cfg_user_map_find_simple) new function;
	(ejudge_cfg_user_map_add) new function;
	(ejudge_cfg_caps_add) new function.

	* super_html_6.c, super_proto.c:
	editing of the system user map and the global capabilities
	is supported.

2012-04-23 (r6762) Alexander Chernov  <cher@ejudge.ru>

	* opcaps_2.c: copyright notice is updated;
	(opcaps_unparse) 'FULL_SET' is supported.

2012-04-23 (r6761) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h:
	(struct ejudge_cfg) new field 'ejudge_xml_path'.

	* super_proto.h: new actions.

	* ejudge_cfg.c:
	(node_free) new function;
	(parse_capabilities) 'login' field is handled correctly;
	(ejudge_cfg_do_parse) 'ejudge_xml_path' is used to save the file path.

	* opcaps.c: copyright notice is updated;
	(opcaps_parse) 'FULL_SET' capability set is supported.

	* super_proto.c: new actions.

	* super_html.c:
	"System user mapping" and "Global user capabilities" links are added.

	* super_html_6.c:
	new code is added to support "User map" editing and "Global capabilities"
	editing.

	* super-serve.c:
	(do_loop) 'pfds' is correctly freed.

2012-04-21 (r6758) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h:
	<time.h> is included;
	(struct ejudge_cfg_caps_file) new function to store the state of
	the external capabilities file;
	(struct ejudge_cfg) new field 'caps_file';
	  new field 'caps_file_info';
	(ejudge_cfg_create_caps_file) new function prototype;
	(ejudge_cfg_free_caps_file) new function prototype;
	(ejudge_cfg_refresh_caps_file) new function prototype;
	(ejudge_cfg_opcaps_find) new function prototype;
	(ejudge_cfg_user_map_find) new fuction prototype;
	(ejudge_cfg_user_map_find_uid) new function prototype.

	* ejudge_cfg.c:
	<sys/types.h>, <sys/stat.h> are included;
	<caps_file> element is supported;
	(ejudge_cfg_do_parse) new function to just parse the XML file;
	(ejudge_cfg_parse) this function now sets default values;
	(ejudge_cfg_create_caps_file) new function;
	(ejudge_cfg_free_caps_file) new function;
	(ejudge_cfg_refresh_caps_file) new function;
	(ejudge_cfg_opcaps_find) new function;
	(ejudge_cfg_user_map_find) new fuction;
	(ejudge_cfg_user_map_find_uid) new function.

	* new-server.c: copyright notice is updated;
	'ejudge_cfg_user_map_find', 'ejudge_cfg_opcaps_find'
	functions are used.

	* new_server_html.c:
	(privileged_entry_point) 'ejudge_cfg_opcaps_find' is used.

	* new_server_html_4.c:
	'ejudge_cfg_user_map_find' function is used;
	'ejudge_cfg_opcaps_find' function is used.

	* super_html_4.c:
	'ejudge_cfg_opcaps_find' function is used.

	* super_html_6.c: copyright notice is updated;
	'ejudge_cfg_opcaps_find' function is used.

	* super_html_7.:
	'ejudge_cfg_opcaps_find' function is used.

	* userlist-server.c:
	(build_system_uid_map) marked for removal;
	(remove_from_system_uid_map) marked for removal;
	(get_global_uid_caps) new function;
	'ejudge_cfg_opcaps_find', 'ejudge_cfg_user_map_find'
	functions are used.

2012-04-21 (r6756) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_set_stand_filter) old error messages are cleared.

2012-04-20 (r6754) Alexander Chernov  <cher@ejudge.ru>

	* super_html_6.c:
	(is_contest_privileged) NULL-pointer dereference is fixed.

2012-04-18 (r6752) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	libzip library is used in ej-run, ej-nwrun, ej-super-run, ej-contests.

	* archive_paths.h: copyright notice is updated;
	(archive_make_move_path) removed;
	(archive_make_write_path) 'zip_mode' parameter is added.

	* fileutl.h: copyright notice is updated;
	ZIP constant is added.

	* full_archive.h: copyright notice is updated;
	"config.h" is included;
	ZIP archives are supported;
	(full_archive_find_file) 'p_size' parameter is removed;
	  'p_data' is made non-const.

	* archive_paths.c: copyright notice is updated;
	(archive_make_read_path) ZIP files are supported;
	(archive_make_write_path) 'zip_mode' parameter is added;
	  ZIP files are supported;
	(archive_make_move_path) made static;
	  ZIP files are supported;
	(archive_remove) ZIP files are supported.

	* ej-super-run.c:
	(handle_packet) ZIP full archive is default, if libzip is available.

	* new_server_html.c:
	calls of 'archive_make_write_path' are updated.

	* new_server_html_2.c:
	(write_from_archive) ZIP archives are supported;
	  use of 'full_archive_find_file' is updated;
	(ns_write_tests) full archive mode is supported for output-only problems.

	* new_server_html_4.c:
	call of 'archive_make_write_path' is updated.

	* run.c:
	(do_loop) ZIP full archives are default, if libzip is found.

	* run_common.c:
	(run_tests) ZIP full archive is default, if libzip is available.

	* runlog_import.c: copyright notice is updated;
	ZIP files are supported.

	* serve_2.c:
	support for ZIP files in full archive directory is added;
	calls of 'archive_make_write_path' are updated;
	(serve_read_run_packet) ZIP archives are supported.

2012-04-17 (r6749) Alexander Chernov  <cher@ejudge.ru>

	* reuse_exec.h:
	(task_IgnoreSIGPIPE) new function prototype.

	* run_common.c:
	(setup_environment) 'ejudge_prefix_dir_env' param is removed;
	  'force_ejudge_env' param is added;
	  primary ejudge environment vars are set;
	(invoke_valuer) call of 'setup_environment' is updated;
	(invoke_interactor) call of 'setup_environment' is updated;
	  SIGPIPE is ignored for interactor;
	(invoke_checker) call of 'setup_environment' is updated;
	(check_output_only) 'ejudge_prefix_dir_env' param is removed.

2012-04-17 (r6745) Alexander Chernov  <cher@ejudge.ru>

	* run.h:
	(struct testinfo) 'checker_score' field is removed.

	* run_common.c:
	'score' is used instead of 'checker_score' in 'struct testinfo';
	(read_checker_score) 'default_score' parameter is added;
	  if default_score >= 0, score may be missing or invalid;
	(invoke_checker) call of 'read_checker_score' is updated.

2012-04-15 (r6741) Alexander Chernov  <cher@ejudge.ru>

	* run.h:
	(run_inverse_testing) 'run_exe_dir' parameter is added.

	* ej-super-run.c:
	(handle_packet) call of 'run_inverse_testing' is updated.

	* master_html.c:
	(write_xml_tests_report) "Tests" testing report style is improved.

	* run.c:
	(do_loop) call of 'run_inverse_testing' is updated.

	* run_inverse.c:
	(invoke_checker) CF return status is changed to PE;
	(run_inverse_testing) 'run_exe_dir' parameter is added;
	  archive suffix is determined correctly from mime_type.

	* serve_2.c:
	(serve_run_request) "exe suffix" is correct in case of "Tests" problems.

	* super_html_7.c:
	(find_suffix) new function;
	(collect_suitable_names) new function;
	(remove_src_suffix) new function;
	(make_exe_suitable_names) new function;
	(free_suitable_names) new function;
	(generate_solution_compilation_rule) new function;
	(generate_makefile) "Tests" problems are supported.

2012-04-12 (r6739) Alexander Chernov  <cher@ejudge.ru>

	* super_html.c:
	(super_html_main_page) "Edit users" link is displayed to the capable users only.

	* super_html_7.c:
	(super_serve_op_TESTS_TEST_CHECK_ACTION) a bug is fixed.

2012-04-11 (r6737) Alexander Chernov  <cher@ejudge.ru>

	* execute.c: copyright notice is updated;
	--all-tests mode is added.

	* super_html_3.c:
	(super_html_check_tests) 'normalization' variable is handled.

	* super_html_7.c:
	(generate_makefile) --all-tests mode of 'ejudge-execute' is used.

2012-04-10 (r6733) Alexander Chernov  <cher@ejudge.ru>

	* problem_config.h, problem_config.c:
	initial revision

2012-04-10 (r6732) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	META_C_FILES, META_H_FILES, META_O_FILES variables are introduced.

	* files.make:
	problem_config.[ch] is added.

	* meta.make:
	META_C_FILES, META_H_FILES, META_O_FILES are introduced.

	* meta_generic.h:
	(meta_unparse_cfg) 'default_ptr' parameter is added.

	* meta_generic.c:
	(meta_unparse_cfg) 'default_ptr' parameter is added.

	* runlog_xml.c:
	(unparse_runlog_xml) generation of 'board_fog_time', 'board_unfog_time'
	attributes is fixed;
	'score', 'score_adj', 'test' are generated only if have values.

	* super_run_packet.c:
	(super_run_in_packet_unparse_cfg) calls of 'meta_unparse_cfg' are
	updated.

2012-04-09 (r6729) Alexander Chernov  <cher@ejudge.ru>

	* run_common.c:
	(read_valuer_score) 'marked' flag is set correctly.

	* super_html_3.c:
	(super_html_check_tests) more problem variables are updated.

2012-04-04 (r6725) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_create_contest_2) 'ssl_flag' parameter is added;
	(contest_tmpl_new) 'ip', 'ssl_flag' parameters are added.

	* contest_tmpl.c: copyright notice is updated;
	(contest_tmpl_new) 'ip', 'ssl_flag' parameters are added;
	  the IP from which the contest has been created is added to
	  the while list for IP-access rules;
	  the system user is given maximum rights.

	* master_html.c: copyright notice is updated.

	* new_server_html_2.c:
	(ns_write_priv_standings) links are added.

	* prepare.c:
	(prepare_new_global_section) 'advanced_layout' is set to 1.

	* serve_state.c: copyright notice is updated.

	* super_html.c:
	(super_html_create_contest_2) 'ssl_flag' parameter is added;
	  call of 'contest_tmpl_new' is updated.

	* super_html_3.c:
	(super_html_check_tests) links are added to the top page;
	  "Check again" button is added if "Check contests settings" failed.

	* super_html_4.c:
	(cmd_op_create_new_contest) call of 'contest_tmpl_new' is updated.

	* super-serve.c:
	(cmd_create_contest) call of 'super_html_create_contest_2' is updated.

2012-04-04 (r6723) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c:
	exit codes 1 and 2 are considered as WA and PE for test checkers.

	* super_html_3.c, super_html_7.c:
	-DEJUDGE is added to compilation options for all supported languages.

2012-04-03 (r6721) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	support for python solutions, checkers and validators is implemented.

2012-04-03 (r6719) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	(get_compiler_script) new function;
	(generate_checker_compilation_rule) java support is improved;
	(generate_makefile) java support is implemented.

2012-04-03 (r6717) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare) no error is reported in case of missing
	problems, languages, or testers.

2012-04-03 (r6715) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright notice is updated;
	(ns_html_err_cnts_unavailable) 'messages' parameter is added.

	* new_server_html.c:
	(read_file_range) new function;
	(privileged_entry_point) a snipped of the log file is shown
	in case of unavailable contest.

	* new_server_html_3.c: copyright notice is updated;
	"reuse_xalloc.h" is included;
	(ns_html_err_cnts_unavailable) 'messages' parameter is added.

	* super_html_7.c:
	(generate_makefile) support for DCC and FPC is implemented.

2012-04-02 (r6713) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	checkers in java for testlib4j are supported.

2012-04-02 (r6711) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c: fpc and dcc are supported in makefile.

2012-04-01 (r6709) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_all_clars) NULL pointer output is fixed.

	* run_common.c:
	(invoke_checker) exit codes 1, 2 are accepted for WA and PE;
	(run_one_test) exit codes 1, 2 are accepted for WA and PE for
	interactor.

	* serve_2.c:
	(serve_read_compile_packet) compilation error log is saved even if
	compilation succeeded.

2012-03-30 (r6702) Alexander Chernov  <cher@ejudge.ru>

	* sha.c: gcc 4.7 compilation fix.

2012-03-29 (r6698) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(calc_kirov_score) fixed.

	* prepare.c:
	(parse_penalty_expression) fixed.

2012-03-29 (r6696) Alexander Chernov  <cher@ejudge.ru>

	* html.h: copyright notice is updated;
	(calc_kirov_score) 'start_time' parameter is added;
	(write_html_run_status) 'start_time' parameter is added;
	(write_text_run_status) 'start_time' parameter is added.

	* html.c:
	(calc_kirov_score) 'start_time' parameter is added;
	extended support for date_penalty is implemented;
	(write_html_run_status) 'start_time' parameter is added;
	(write_text_run_status) 'start_time' parameter is added;
	calls of 'calc_kirov_score' is added.

	* new_server_html_2.c:
	calls of 'write_html_run_status', 'write_text_run_status',
	'calc_kirov_score' are updated.

	* new_server_html_4.c: copyright notice is updated;
	calls of 'calc_kirov_score' are updated.

	* prepare.c:
	(parse_penalty_expression) new function;
	(parse_deadline_penalties) extended syntax is supported.

2012-03-29 (r6694) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct penalty_info) 'deadline' is renamed to 'date';
	  new fields 'scale', 'decay' are added;
	(struct group_date_info) 'date', 'penalty' are replaced with aggregated
	  'struct penalty_info p';
	(struct pers_dead_info) 'deadline', 'penalty' are replaced with aggregated
	  'struct penalty_info p'.

	* html.c, new_server_html.c, prepare.c, serve_2.c, serve_state.c:
	updated according to the changes in 'prepare.h'.

2012-03-28 (r6686) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h: copyright notice is updated;
	(super_serve_generate_makefile) new function prototype.

	* ej-normalize.c: completed.

	* super_html_3.c:
	(invoke_make) 'check_settings' rule is invoked instead of
	  'ejudge_make_problem';
	(super_html_check_tests) makefiles are generated in
	  advanced_layout contests.

	* super_html_7.c:
	(prepare_test_file_names) 'phr' parameter is removed;
	(get_compiler_flags) 'sstate' parameter is added;
	(generate_makefile) 'php' parameter is removed;
	  'sstate' parameter is added;
	  normalization rule generation is added;
	(super_serve_generate_makefile) new function;
	(super_serve_op_TESTS_MAKEFILE_GENERATE_ACTION) most code
	  is moved to 'super_serve_generate_makefile'.

2012-03-28 (r6684) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: rule for 'ej-normalize' is added.

	* ej-normalize.c: initial revision.

2012-03-28 (r6682) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(ejudge_invoke_process) 'stdin_file' parameter is added.

	* run_inverse.c:
	(invoke_test_checker) test file is passed as redirected
	stdin rather then a command-line parameter.

	* super_html_3.c:
	(invoke_test_checker) test file is passed as redirected
	stdin rather then a command-line parameter.

	* super_html_7.c:
	(get_compiler_path) call of 'ejudge_invoke_process' is updated.

2012-03-27 (r6677) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(ejudge_get_host_names) new function prototype.

	* ejudge_cfg.h:
	(struct ejudge_cfg) field 'hosts_options' is added;
	(ejudge_cfg_get_host_option) new function prototype;
	(ejudge_cfg_get_host_option_int) new function prototype.

	* startstop.h:
	(start_find_all_processes) new function prototype.

	* ejudge_cfg.c:
	support for <hosts_options> is added;
	(get_attr_by_name) new static function;
	(ejudge_cfg_get_host_option) new function;
	(ejudge_cfg_get_host_option_int) new function.

	* ej-super-run.c:
	"ej_process.h" is included;
	"parallelism" host option is supported to limit the number of
	parallel instances of ej-super-run.

	* ej-super-run-control.c:
	all instances of ej-super-run are terminated instead of the first.

	* ejudge-control.c:
	"ej_process.h" is included;
	(command_start) 'super_run_parallelism' parameter is added;
	specified number of 'ej-super-run' processes is started;
	(main) "parallelism" host option is handled.

2012-03-24 (r6674) Alexander Chernov  <cher@ejudge.ru>

	* contests.h: copyright notice is updated;
	(struct contest_desc) 'old_run_managed' field is added.

	* super_proto.h:
	editing of "old_run_managed" attribute is supported.

	* serve_state.h:
	(serve_run_request) 'cnts' parameter is added.

	* contests.c, contests_2.c: copyright notice is updated;
	"old_managed" attribute is supported.

	* ej-batch.c:
	calls of 'serve_run_request' are updated.

	* new_server_html.c:
	calls of 'serve_run_request' are updated.

	* new_server_html_4.c:
	calls of 'serve_run_request' are updated.

	* serve_2.c:
	(serve_run_request) 'cnts' parameter is added;
	super-run is supported;
	(serve_testing_queue_delete) super-run is supported;
	(serve_testing_queue_change_priority) super-run is supported;
	(collect_run_packets) super-run is supported.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super_html_4.c:
	editing of "old_run_managed" attribute is supported.

	* super-serve.c:
	run management mode is renamed as old-run-managed mode.

2012-03-23 (r6670) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	compilation of ej-super-run is added.

	* run.h:
	(run_tests) 'tst' parameter is declared const.

	* startstop.h: copyright notice is updated;
	(start_daemon) new function prototype is added.

	* ejudge-control.c: copyright notice is updated;
	ej-super-run is supported.

	* ej-super-run.c: basically completed.

	* ej-super-run-control.c: initial revision.

	* run_common.c:
	(invoke_nwrun) 'tst' parameter is declared const;
	(run_one_test) 'tst' parameter is declared const.

2012-03-23 (r6668) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h:
	old run_request_packet stuff is put under INCLUDE_RUN_REQUEST.

	* serve_state.h:
	(serve_send_run_quit) function prototype is removed.

	* ej-super-run.c: progress.

	* new_server_html.c:
	(priv_contest_operation) calls of 'serve_send_run_quit' are eliminated.

	* new_server_html_4.c:
	calls of 'serve_send_run_quit' are removed.

	* run_packet_1.c, run_packet_2.c, run_packet_3.c: copyright notice is updated;
	INCLUDE_RUN_REQUEST is defined.

	* serve_2.c:
	(serve_run_request) old run_request_packet stuff is removed;
	(serve_send_run_quit) function is removed;
	(testing_queue_lock_entry) updated to work with new run request packets
	(serve_testing_queue_delete) the same;
	(serve_testing_queue_change_priority) the same.

2012-03-22 (r6667) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.h: copyright notice is updated;
	(struct testing_report_xml) 'compiler_output' field is added.

	* compile.c:
	compiler and style checker output to stdout and stderr is merged.

	* ej-super-run.c: progress.

	* serve_2.c:
	(serve_read_compile_packet) compiler/style checker output is always saved.

	* testing_report_xml.c:
	<compiler_output> element support is added.

2012-03-21 (r6665) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	directory removal bugs fixed.

2012-03-21 (r6663) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h: copyright notice is updated;
	(run_reply_packet_dump) new function prototype.

	* master_html.c:
	(write_xml_testing_report) CPU time reporting is improved.

	* run_common.c: general improvements and regression fixes.

	* run_packet_5.c: copyright notice is updated;
	(run_reply_packet_dump) new function.

	* serve_2.c:
	(serve_read_run_packet) error reporting is improved.

2012-03-19 (r6659) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	run_common.c is added.

	* prepare.h:
	(prepare_parse_testsets) new function prototype;
	(prepare_free_testsets) new function prototype.

	* reuse_exec.h:
	(task_SetEnv) new function prototype;
	(task_FormatEnv) new function prototype.

	* run.h:
	(struct testinfo) moved here from run.c;
	(run_tests) function prototype is added.

	* ej-super-run.c: progress

	* prepare.c:
	(prepare_free_testsets) renamed from 'free_testsets';
	(prepare_parse_testsets) renamed from 'parse_testsets'.

	* run.c:
	most of code is moved to run_common.c.

	* run_common.c:
	initial revision.

2012-02-16 (r6652) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	'inotify_init' is used instead of 'inotify_init1'.

2012-02-15 (r6650) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.c: copyright notice is updated;
	(parse_testing_report) value -1 of "tests-passed" is allowed.

2012-02-08 (r6637) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h:
	(background_process_append_pollfd) function prototype is added.

	* super_html_7.c:
	(super_serve_op_TESTS_MAKE_continuation) NULL output is allowed.

	* super-serve.c:
	(do_loop) 'background_process_append_pollfd' is called.

2012-02-07 (r6634) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c, parsecfg.c, prepare.c, run.c, run_inverse.c, serve_2.c, super_html_3.c, super-serve.c:
	gcc 4.6 warning fix.

	* compile.c, compile-control.c, edit-userlist.c, ej-batch.c, ejudge-configure-compilers.c, filter_scan.lex, filter_tree.c, html.c, lang_config_vis.c, misctext.c, new-server-control.c, new_server_html_2.c, new_server_html_5.c, pathutl.c, rldb_plugin_file.c, runlog_xml.c, super_html_4.c, super_html_7.c, super-serve-control.c, uldb_plugin_xml.c, userlist-server.c, userlist-server-control.c: copyright notice is updated;
	gcc 4.6 warning fix.

2012-01-23 (r6631) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h: copyright notice is updated;
	(serve_state_init) 'contest_id' parameter is added.

	* teamdb.h: copyright notice is updated;
	(teamdb_init) 'contest_id' parameter is added.

	* teamdb_priv.h: copyright notice is updated;
	(struct teamdb_state) 'nref' field is added.

	* fix-db.c: copyright notice is updated;
	(process_contest) call of 'serve_state_init' is updated.

	* serve.c: copyright notice is updated;
	(main) call of 'teamdb_init' is updated.

	* serve_state.c:
	calls of 'teamdb_init' are updated.

	* teamdb.c: copyright notice is updated;
	(teamdb_init) 'contest_id' parameter is added.

2012-01-14 (r6628) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h: copyright notice is updated;
	(struct ejudge_cfg) 'serve_path' field is removed.

	* ejudge_cfg.c: copyright notice is updated;
	<serve_path> element is ignored.

	* super_html_2.c:
	(super_html_commit_contest) some local variables renamed.

	* super-serve.c, ejudge-setup.c:
	'serve_path' element is no longer handled.

2012-01-12 (r6624) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_tester_data) fields 'check_cmd', 'checker_env',
	'standard_checker_used' are removed.

	* prepare.c, run.c, super_html_3.c:
	'check_cmd', 'checker_env', 'standard_checker_used' use is removed.

2012-01-11 (r6621) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	"dll32" secure exec type is added.

	* prepare.c:
	"dll32" secure exec type is added.

	* run.c:
	(run_tests) DLL32 secure exec type is supported.

	* serve_2.c:
	(serve_run_request) memory leaks are fixed.

2012-01-11 (r6619) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_parse_open_tests) new function prototype;
	(prepare_parse_test_score_list) new function prototype.

	* reuse_exec.h: copyright notice is updated;
	(task_SetMaxRealTimeMillis) new function prototype.

	* run.h:
	(run_inverse_testing) 'prob', 'scoring_system' parameters are removed.

	* super_run_packet.h:
	(struct super_run_in_global_packet) 'user_spelling' field is added;
	'score_system_val' field is added;
	(struct super_run_in_problem_packet) 'binary_input', 'binary_output',
	'spelling', 'open_tests', 'type_val' fields are added.

	* prepare.c:
	(prepare_parse_test_score_list) new function.

	* problem_common.c: copyright notice is updated;
	(problem_parse_type) empty string is handled.

	* run.c, run_inverse.c:
	reworked to eliminate use of local problem configuration;
	all problem configuration is received from the server.

	* serve_2.c:
	(serve_run_request) packet generation is improved.

	* super_run_packet.c:
	parsing of 'score_system' and 'type' is added.

2012-01-10 (r6614) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright notice is updated;
	(prepare_parse_score_system) new function prototype is added.

	* run.h: copyright notice is updated;
	(run_inverse_testing) 'srp' parameter replaced 'req_pkt';
	'scoring_system' parameter is added.

	* super_run_packet.h: progress...

	* meta_generic.h:
	memory leak is fixed.

	* prepare.c:
	(prepare_parse_score_system) new function.

	* run.c: copyright notice is updated;
	'struct super_run_in_packet' is used instead of
	'struct run_request_packet'.

	* run_inverse.c: copyright notice is updated;
	"super_run_packet.h" is included;
	'struct super_run_in_packet' is used instead of
	'struct run_request_packet';
	(run_inverse_testing) 'scoring_system' parameter is added.

	* serve_2.c:
	(serve_run_request) packet is written in text format.

	* super_run_packet.c: progress...

2012-01-09 (r6612) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	super_run_packet.[ch] are added.

	* Makefile.unix.in: copyright notice is updated;
	super_run_packet_meta.[ch] is added.

	* meta.make: copyright notice is updated;
	super_run_packet_meta.[ch] are added.

	* meta_generic.h: copyright notice is updated;
	<stdio.h> is included;
	(meta_parse_string) new function prototype;
	(meta_unparse_cfg) new function prototype.

	* parsecfg.h: copyright notice is updated;
	(struct config_section_info) 'mm' field is added;
	(sarray_copy) new function prototype.

	* reuse_xalloc.h: copyright notice is updated;
	(xstrdup2) new function prototype is added.

	* super_run_packet.h: initial revision.

	* meta_generic.c: copyright notice is updated;
	"misctext.h", "xml_utils.h", "charsets.h" are included;
	(meta_destroy_fields) field type support is improved;
	(meta_unparse_cfg) new function;
	(meta_parse_string) new function.

	* parsecfg.c: copyright notice is updated;
	"meta_generic.h" is included;
	(copy_param) metainfo is supported;
	(sarray_copy) new function prototype.

	* prepare.c: copyright notice is updated;
	(prepare_tester_free) new function;
	(prepare_unparse_memory_limit_type) new function;
	(prepare_unparse_secure_exec_type) new function;
	(set_defaults) most of PREPARE_RUN specific settings are now done
	in PREPARE_SERVE mode as well;
	(prepare_tester_refinement) 'memory_limit_type', 'secure_exec_type'
	are copied.

	* serve_2.c: copyright notice is updated;
	"super_run_packet.h" is included;
	"prepare_dflt.h" is included;
	(find_lang_specific_value) new function;
	(serve_run_request) super run packet is created.

	* super_run_packet.c: initial revision.

2012-01-01 (r6609) Alexander Chernov  <cher@ejudge.ru>

	* copyright.c: copyright notice is updated.

2012-01-01 (r6607) Alexander Chernov  <cher@ejudge.ru>

	* files.make: copyright notice is updated;
	pollfds module is added.

	* ej_process.h: copyright notice is updated;
	(background_process_close_fds) new function prototype.

	* pollfds.h: initial revision.

	* super_proto.h: copyright notice is updated;
	unused commands are removed.

	* super-serve.h: copyright notice is updated;
	(struct contest_extra) unused fields are removed.

	* ejudge-setup.c: copyright notice is updated;
	(generate_contest_xml) minor fix.

	* new_server_html.c: copyright notice is updated;
	(unpriv_load_html_style) buffer size is fixed.

	* serve-control.c: copyright notice is updated;
	unused code is removed.

	* super_html.c: copyright notice is updated;
	unused code is removed.

	* super_html_2.c: copyright notice is updated;
	unused code is removed.

	* super_html_3.c: copyright notice is updated;
	(invoke_make) buffer size is fixed.

	* super-serve.c: copyright notice is updated;
	reworked to resove scalability issues;
	inotify is used.

2011-12-28 (r6600) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	(do_loop) 'select' syscall error handling is improved.

2011-12-24 (r6597) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c, serve-control.c, super_html.c, new_server_html.c, super_html_2.c, super_html_3.c, super_html_4.c, super_proto.h:
	Ticket #52 is done.

	* super_proto.h:
	editing of 'open_time', 'close_time' contest fields is supported.

	* new_server_html.c:
	(unpriv_print_status) open_time and close_time is respected
	for virtual contests;
	(unpriv_command) the same as above.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'open_time', 'close_time' contest fields is supported.

2011-12-24 (r6595) Alexander Chernov  <cher@ejudge.ru>

	* new-server-cmd.c, userlist-server.c, new-server.h, userlist_proto.h, new_server_html.c, new_server_html_4.c:
	Ticket #66 is done.

	* new-server.h:
	NEW_SRV_ACTION_RELOAD_SERVER_2 request is added;
	(ns_try_contest_extra) function prototype is added.

	* userlist_proto.h:
	ULS_PRIV_CHECK_PASSWORD is added.

	* new-server-cmd.c:
	(prepare_unload_2) new function.

	* new_server_html.c:
	(ns_try_contest_extra) renamed from 'try_contest_extra'.

	* new_server_html_4.c:
	"ejudge_cfg.h" is included;
	"errlog.h" is included;
	<sys/types.h> is included;
	<pwd.h> is included;
	(cmd_reload_server_2) new function;
	(new_server_cmd_handler) 'cmd_reload_server_2' is called for
	the corresponding request.

	* userlist-server.c:
	(cmd_priv_check_password) new request handled.

2011-12-23 (r6593) Alexander Chernov  <cher@ejudge.ru>

	* html_checkbox.c, contests.c, contests_2.c, new_server_html.c, mischtml.h, new_server_html_5.c:
	Ticket #57 is done.

	* mischtml.h:
	(html_checkbox) 'value' parameter is added.

	* contests.c:
	elements <open_time>, <close_time> are supported;
	attribute "checkbox" is supported.

	* contests_2.c:
	(unparse_field) 'separator', 'checkbox', 'options' attributes
	are unparsed;
	(contests_unparse) 'open_time', 'close_time' elements are unparsed.

	* html_checkbox.c: copyright notice is updated;
	(html_checkbox) parameter 'value' is added.

	* new_server_html.c:
	(priv_upsolving_configuration_1) calls of 'html_checkbox' are updated.

	* new_server_html_5.c:
	(edit_general_form) checkbox fields are supported.

2011-12-23 (r6592) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h: copyright notice is updated;
	OPCAP_UNLOAD_CONTEST capability is added.

	* opcaps.c:
	OPCAP_UNLOAD_CONTEST capability is added.

2011-12-23 (r6591) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_field) 'checkbox' field is added;
	(struct contest_desc) 'open_time', 'close_time' fields are added.

2011-12-23 (r6589) Alexander Chernov  <cher@ejudge.ru>

	* html.h, new_server_html.c, html.c, new_server_html_2.c:
	Ticket #70 is done.

	* html.h:
	(write_html_run_status) 'enable_js_status_menu' parameter is added.

	* html.c:
	(write_html_run_status) 'enable_js_status_menu' parameter is added;
	javascript-based status change href is implemented.

	* new_server_html.c:
	(priv_main_page) some javascript is generated to the page.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) call of 'write_html_run_status' is updated.

2011-12-21 (r6586) Alexander Chernov  <cher@ejudge.ru>

	* testinfo.c, run.c, serve_2.c:
	Ticket #64 is implemented.

	* run.c:
	'disable_stderr' option of testing is supported.

	* serve_2.c:
	(serve_run_request) 'disable_stderr' flag is passed to run.

	* testinfo.c:
	(testinfo_parse) default value of 'disable_stderr' is set to -1.

2011-12-21 (r6585) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h, run_packet_priv.h:
	support for 'disable_stderr' flag is added.

	* run_packet_1.c, run_packet_2.c:
	support for 'disable_stderr' flag is added.

2011-12-21 (r6584) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'disable_stderr' problem configuration parameter
	is supported.

	* testinfo.h:
	'disable_stderr' parameter is added.

	* prepare.c, prepare_out.c:
	'disable_stderr' problem configuration parameter is suppored.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'disable_stderr' problem configuration parameter
	is supported.

	* testinfo.c:
	'disable_stderr' parameter is added.

2011-12-21 (r6583) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'disable_stderr' field is added.

2011-12-20 (r6581) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, super-serve.c, serve-control.c, new_server_html.c, super_html_3.c, prepare_out.c, super_html_4.c, new_server_html_4.c, super_proto.h:
	Ticket #54 is implemented.

	* super_proto.h:
	editing of 'ignore_bom' global configuration variable is supported.

	* new_server_html.c:
	(priv_submit_run) 'ignore_bom' global configuration variable
	  is supported;
	(unpriv_submit_run) the same.

	* new_server_html_4.c:
	(cmd_submit_run) 'ignore_bom' global configuration variable
	  is supported.

	* prepare.c, prepare_out.c:
	'ignore_bom' global configuration variable is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'ignore_bom' global configuration variable is supported.

2011-12-20 (r6580) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) 'ignore_bom' field is added.

2011-12-19 (r6578) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_5.c:
	(edit_general_form) "submit" and "cancel" buttons are swapped;
	(edit_member_form) "submit" and "cancel" buttons are swapped.

2011-12-19 (r6576) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of <register_subject>, <register_subject_en> elements
	of contest.xml file is supported.

	* contests.c, contests_2.c, contest_tmpl.c:
	support for <register_subject>, <register_subject_en>
	elements is added.

	* userlist-server.c:
	(send_registation_email) register_subject, register_subject_en
	elements are supported;
	(cmd_register_new_2) the same.

	* serve-control.c, super_html.c, super_html_2.c, super_html_4.c, super-serve.c:
	editing of <register_subject>, <register_subject_en> elements
	of contest.xml file is supported.

2011-12-19 (r6575) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) fields 'register_subject',
	  'register_subject_en' are added.

2011-12-18 (r6573) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h, new_server_proto.c, new_server_html.c, serve_2.c, new_server_proto.h:
	Ticket #58 is fixed.

	* new_server_proto.h:
	new error codes are added.

	* serve_state.h:
	error codes are added;
	(serve_compile_request) 'warn_unused_result' attribute is added;
	(serve_err_str) new function prototype.

	* new_server_html.c:
	(serve_err_to_new_srv_err) new function;
	(priv_submit_run) return value of 'serve_compile_request' is checked;
	(unpriv_submit_run) return value of 'serve_compile_request' is checked.

	* new_server_proto.c:
	new error codes are added.

	* serve_2.c:
	(serve_compile_request) error code is returned in case of error;
	(serve_rejudge_run) return value of 'serve_compile_request' is checked;
	(serve_err_str) new function.

2011-12-18 (r6571) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h, super-serve.c, new_server_html.c, serve_state.c, serve_2.c, new_server_html_4.c, super_html_7.c:
	Ticket #68 is fixed.
	
	The global ejudge configuration is passed to many
	functions.

2011-12-17 (r6566) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h: copyright notice is updated;
	new functions to handle background processes are added.

	* super_proto.h: in progress...

	* html.c:
	(new_write_user_runs) invalid problems are better handled.

	* super_html_4.c:
	framework for background processes is implemented.

	* super_html_7.c:
	make running is implemented.

	* super_proto.c: progress...

	* super-serve.c:
	a framework for background processes is implemented.

2011-12-17 (r6565) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct super_http_request_info) 'continuation' field is added.

2011-12-17 (r6564) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(super_serve_find_process) function prototype is added.

2011-12-17 (r6563) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct super_http_request_info) output stream fields 'out_f', 'out_t',
	  'out_z', 'log_f', 'log_t', 'log_z' are added.

2011-12-17 (r6562) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct super_http_request_info) field 'suspend_context' is added.

2011-12-17 (r6561) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct super_http_request_info) 'suspend_reply' field is added.

2011-12-17 (r6559) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct super_http_request_info) 'data' field is added.

2011-12-16 (r6558) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(super_serve_register_process) new function prototype is added.

2011-12-14 (r6555) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_download_source) actual file type (.tar.gz, .tar.bz2, etc)
	is guessed for .tar files and reported to the browser.

2011-12-13 (r6552) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	Ticket #55 fixed.

2011-12-09 (r6544) Alexander Chernov  <cher@ejudge.ru>

	* edit-userlist.c:
	Ticket #61 is fixed.

2011-12-09 (r6540) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.c, super_proto.h, super_html_7.c:
	super_proto.h: in progress...
	
	super_html_7.c, super_proto.c: in progress...

2011-12-08 (r6537) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_user_problems_summary) Ticket #49 fixed.

2011-12-08 (r6533) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c: copyright notice is updated;
	(ns_write_priv_all_runs) PR #50 is fixed.

2011-11-24 (r6525) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	some allocas are replaced with callocs.

2011-11-17 (r6523) Alexander Chernov  <cher@ejudge.ru>

	* diff.c:
	"mime_type.h" include is added;
	(compare_runs) output-only problems are supported.

2011-11-16 (r6521) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) run status change control is removed.

2011-11-13 (r6519) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: progress...

	* filter_scan.lex: copyright notice is updated;
	any mix of lowercase and uppercase letter is allowed in run statuses,
	for example, OK, Ok or ok.

	* super_html_7.c, super_proto.c: progress...

2011-11-06 (r6517) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c:
	(do_eval) checks for invalid lang_id and prob_id are strengthened.

2011-11-05 (r6515) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_read_run_packet) 'ignore_prev_ac' problem configuration
	variable is supported.

2011-11-05 (r6513) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, prepare_out.c:
	'ignore_prev_ac' problem configuration variable is supported.

	* serve-control.c, super-serve.c, super_html_3.c, super_html_4.c:
	editing of 'ignore_prev_ac' problem configuration variable is supported.

2011-11-05 (r6512) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'ignore_prev_ac' field is added.

	* super_proto.h:
	editing of 'ignore_prev_ac' problem variable is added.

2011-11-03 (r6508) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	source header/footer and solution editing is implemented.

	* super_proto.c, super_html_7.c:
	source header/footer and solution editing is implemented.

2011-11-02 (r6506) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(csv_armored_memlen) new function prototype is added;
	(csv_armored_strlen) new function prototype is added;
	(csv_armor_needed) new function prototype is added;
	(csv_armor_buf) new function prototype is added.

	* misctext.c:
	(csv_armored_memlen) new function is added;
	(csv_armored_strlen) new function is added;
	(csv_armor_needed) new function is added;
	(csv_armor_string) new function is added;
	(csv_armor_buf) new function is added.

	* userlist-server.c:
	(do_get_database) header row is fixed;
	CSV escaping is implemented.

2011-11-01 (r6504) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(do_write_kirov_standings) RUN_WRONG_ANSWER_ERR is handled correctly.

2011-11-01 (r6502) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(run_tests) scores of scoring checker are not parsed in case of PE.

2011-10-29 (r6500) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.c:
	(xml_parse_text) new function prototype.

	* problem_xml.h:
	(problem_xml_delete_test) new function prototype;
	(problem_xml_parse_text) new function prototype;
	(problem_xml_free_text) new function prototype;
	(problem_xml_create) new function prototype;
	(problem_xml_create_statement) new function prototype;
	(problem_xml_attach_title) new function prototype;
	(problem_xml_attach_description) new function prototype;
	(problem_xml_attach_input_format) new function prototype;
	(problem_xml_attach_output_format) new function prototype;
	(problem_xml_attach_notes) new function prototype;
	(problem_xml_add_example) new function prototype.

	* super_proto.h:
	progress.

	* expat_iface.c:
	(xml_parse_text) new function.

	* problem_xml.c:
	(problem_xml_delete_test) new function;
	(problem_xml_parse_text) new function;
	(problem_xml_free_text) new function;
	(problem_xml_create) new function;
	(problem_xml_create_statement) new function;
	(problem_xml_attach_title) new function;
	(problem_xml_attach_description) new function;
	(problem_xml_attach_input_format) new function;
	(problem_xml_attach_output_format) new function;
	(problem_xml_attach_notes) new function;
	(problem_xml_add_example) new function.

	* super_html_7.c:
	statement editing is implemented.

	* super_proto.c:
	progress.

2011-10-27 (r6498) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	problem_xml_2.c is added.

	* expat_iface.h:
	(xml_unparse_raw_tree_subst) renamed from 'xml_unparse_raw_tree';
	(xml_unparse_raw_tree) new function prototype.

	* problem_xml.h:
	(problem_xml_unparse) new function prototype;
	(problem_xml_get_parse_spec) new function prototype.

	* super_proto.h:
	progress...

	* expat_iface.c:
	(xml_unparse_raw_tree_subst) renamed from 'xml_unparse_raw_tree';
	(xml_unparse_raw_tree) new function (unparsing without substitions).

	* problem_xml.c:
	(problem_xml_get_parse_spec) new function;
	(problem_xml_unparse_elem) 'xml_unparse_raw_tree_subst' is used
	instead of 'xml_unparse_raw_tree';
	(problem_xml_unparse_node) the same as above.

	* problem_xml_2.c: initial revision.

	* super_html_7.c, super_proto.c:
	progress...

2011-10-24 (r6496) Alexander Chernov  <cher@ejudge.ru>

	* prepare_out.c:
	(prepare_unparse_testers) std io/file io special modes are ignored.

2011-10-21 (r6493) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.h: copyright notice is updated;
	(xml_build_tree) 'log_f' parameter is added;
	(xml_build_tree_str) 'log_f' parameter is added;
	(xml_build_tree_file) 'log_f' parameter is added.

	* parsecfg.c:
	(copy_param) call of 'xml_parse_date' is updated.

	* problem_xml.h:
	(problem_xml_parse) 'log_f' parameter is added;
	(problem_xml_parse_safe) 'log_f' parameter is added;
	(problem_xml_parse_string) 'log_f' parameter is added;
	(problem_xml_parse_stream) 'log_f' parameter is added.

	* super_proto.h:
	SSERV_OP_TESTS_STATEMENT_EDIT_ACTION is added.

	* xml_utils.h: copyright notice is updated;
	(xml_parse_ip) 'log_f' parameter is added;
	(xml_parse_date) 'log_f' parameter is added;
	(xml_parse_int) 'log_f' parameter is added;
	(xml_parse_ip_mask) 'log_f' parameter is added;
	(xml_parse_bool) 'log_f' parameter is added;
	'xml_err_file' global variable is added.

	* cldb_plugin_file.c:
	(clar_read_entry) call of 'xml_parse_ip' is updated.

	* contests.c:
	(parse_access) call of 'xml_parse_ip_mask' is updated;
	(parse_contest) call of 'xml_parse_date' is updated;
	(parse_one_contest_xml) call of 'xml_build_tree' is updated.

	* edit-userlist.c:
	(do_display_user) call of 'xml_parse_bool' is updated.

	* ejudge_cfg.c:
	(ejudge_cfg_parse) call of 'xml_build_tree' is updated.

	* expat_iface.c:
	<stdlib.h> is included;
	(struct parser_data) new field 'log_f' is added;
	(parse_err) new function for use instead of 'err';
	(xml_build_tree) 'log_f' parameter is added;
	(xml_build_tree_str) 'log_f' parameter is added;
	(xml_build_tree_file) 'log_f' parameter is added.

	* filter_tree.c:
	(filter_tree_eval_node) call of 'xml_parse_date' is updated.

	* new-client.c:
	(check_access_rules) call of 'xml_parse_ip_mask' is updated.

	* new-server-cmd.c:
	(main) call of 'xml_parse_ip' is updated.

	* new_server_html.c:
	(do_schedule) call of 'xml_parse_date' is updated;
	(do_change_finish_time) call of 'xml_parse_date' is updated;
	(ns_handle_http_request) call of 'xml_parse_ip' is updated.

	* new_server_html_4.c:
	(do_schedule) call of 'xml_parse_date' is updated.

	* prepare.c:
	calls of 'xml_parse_date', 'problem_xml_parse_safe'
	are updated.

	* problem_xml.c:
	(problem_xml_parse) 'log_f' parameter is added;
	(problem_xml_parse_safe) 'log_f' parameter is added;
	(problem_xml_parse_string) 'log_f' parameter is added;
	(problem_xml_parse_stream) 'log_f' parameter is added.

	* rldb_plugin_file.c:
	(run_read_entry_v0) call of 'xml_parse_ip' is updated.

	* runlog_xml.c:
	(process_run_elements) call of 'xml_parse_ip' is updated;
	(parse_runlog_xml) call of 'xml_build_tree_str' is updated.

	* serve-control.c:
	calls of 'xml_build_tree_str', 'xml_build_tree' are updated.

	* serve_state.c:
	(parse_group_dates) call of 'xml_parse_date' is updated.

	* super_html_2.c:
	calls of 'xml_parse_ip_mask', 'xml_parse_date' are updated.

	* super_html_3.c:
	calls of 'xml_parse_date' are updated.

	* super_html_4.c:
	calls of 'xml_parse_ip_mask' are updated.

	* super_html_7.c, super_proto.c:
	progress.

	* t3_packets.c:
	(t3_in_packet_parse_str) call of 'xml_build_tree_str' is updated.

	* team_extra_xml.c:
	calls of 'xml_parse_int', 'xml_parse_ip', 'xml_parse_date',
	'xml_build_tree' are updated.

	* testing_report_xml.c:
	(testing_report_parse_xml) call of 'xml_build_tree_str'
	is updated.

	* userlist.c:
	(userlist_set_member_field_str) call of 'xml_parse_date' is updated;
	(userlist_set_info_field_str) call of 'xml_parse_date' is updated;
	(userlist_is_equal_user_field) call of 'xml_parse_date' is updated;
	(userlist_set_user_field) call of 'xml_parse_date' is updated.

	* userlist_xml.c:
	calls of 'xml_parse_ip', 'xml_parse_date', 'xml_parse_int',
	'xml_build_tree_str', 'xml_build_tree' are updated.

	* users.c:
	(parse_config) calls of 'xml_build_tree', 'xml_build_tree_str',
	'xml_parse_ip_mask' are updated.

2011-10-19 (r6485) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	makefile generation is much improved.

2011-10-14 (r6471) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'lang_compiler_env' problem configuration parameter
	is supported.

	* prepare.c, prepare_out.c:
	'lang_compiler_env' problem configuration variable is supported.

	* serve_2.c:
	(filter_lang_environ) new function is implemented;
	(serve_compile_request) support for 'lang_compiler_env' problem
	configuration parameter is added.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'lang_compiler_env' problem configuration parameter
	is supported.

2011-10-14 (r6470) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'lang_compiler_env' field is added.

2011-10-13 (r6465) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c:
	makefile generation is basically implemented.

2011-10-09 (r6461) Alexander Chernov  <cher@ejudge.ru>

	* problem_xml.h: copyright notice is updated;
	(problem_xml_parse_safe) new function prototype is added.

	* execute.c:
	(run_program) test number guessing is added if both '--test_pattern' and
	'--test_file' are specified.

	* prepare.c:
	(set_defaults) 'problem_xml_parse_safe' is used.

	* problem_xml.c:
	(problem_xml_parse_safe) new function is added.

	* super_html_7.c:
	progress...

2011-10-04 (r6455) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.c, super_proto.h, super_html_7.c:
	test deletion is implemented.

2011-10-04 (r6452) Alexander Chernov  <cher@ejudge.ru>

	* super_html_7.c, super_proto.c:
	test insertion is functional.

2011-10-01 (r6445) Alexander Chernov  <cher@ejudge.ru>

	* testinfo.h:
	(struct testinfo_struct) new fields 'env_u', 'env_v' are added;
	(testinfo_unparse_environ) new function prototype.

	* execute.c:
	"--input", "--output", "--error" options are renamed to
	"--stdin", "--stdout", "--stderr";
	new options: "--use-stdin", "--use-stdout", "--test-file",
	"--corr-file", "--info-file", "--input-file", "--output-file",
	"--mode", "--group".

	* run.c:
	(setup_environment) 'pt' parameter is added;
	custom environment in info files is supported.

	* testinfo.c:
	(unparse_str_array) new function;
	(testinfo_unparse_environ) new function.

2011-09-30 (r6441) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) fields 'tgzdir_sfx', 'tgzdir_pat'
	are added;
	(struct section_problem_data) fields 'tgzdir_sfx', 'tgzdir_pat'
	are added.

	* prepare_dflt.h: copyright notice is updated;
	default tgzdir suffix is added.

	* super_proto.h:
	editing of 'tgz_sfx', 'tgz_pat', 'tgzdir_sfx', 'tgzdir_pat'
	problem configuration variables is supported.

	* prepare.c, prepare_out.c:
	'tgzdir_sfx', 'tgzdir_pat' problem configuration variables are added.

	* run.c:
	(run_tests) 'tgzdir_sfx' problem configuration variable is handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'tgz_sfx', 'tgz_pat', 'tgzdir_sfx', 'tgzdir_pat'
	problem configuration variables is supported.

2011-09-29 (r6439) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	TEST_NORM_DEFAULT is added.

	* super_proto.h: progress...

	* prepare.c, prepare_out.c:
	'normalization' problem configuration variable is supported.

	* problem_common.c:
	(test_normalization_parse) new function;
	(test_normalization_unparse) new function.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of 'normalization' problem configuration variable
	is supported.

	* super_html_7.c: progress...

	* super_proto.c: progress...

2011-09-28 (r6437) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h: test normalization modes are added.

	* super_html_7.c:
	test normalization mode constants are moved to ej_types.h.

2011-09-28 (r6436) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'normalization' field is added;
	'normalization_val' private field is added.

2011-09-27 (r6434) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	'solution_src', 'solution_cmd' problem configuration parameters
	are supported.

	* super_proto.h:
	editing of 'solution_src', 'solution_cmd' program configuration
	parameters is supported.

	* prepare.c, prepare_out.c:
	'solution_src', 'solution_cmd' problem configuration parameters
	are supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'solution_src', 'solution_cmd' program configuration
	parameters is supported.

2011-09-11 (r6420) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	progress.

	* userlist.h: copyright notice is updated;
	(userlist_lookup_csv_field_name) new function prototype;
	(userlist_get_csv_field_name) new function prototype.

	* super_html_6.c:
	<errno.h> is included;
	(super_serve_op_USER_BROWSE_PAGE) link to "import CSV data" is added;
	(super_serve_op_USER_CREATE_FROM_CSV_PAGE) operation code is fixed;
	(super_serve_op_USER_IMPORT_CSV_PAGE) new function;
	(super_serve_op_USER_IMPORT_CSV_ACTION) new function.

	* super_html_7.c:
	progress.

	* super_proto.c:
	progress.

	* userlist.c:
	(userlist_lookup_csv_field_name) new function;
	(userlist_get_csv_field_name) new function.

2011-09-07 (r6419) Alexander Chernov  <cher@ejudge.ru>

	* reuse_osdeps.h:
	(os_MakeDirPath2) new function prototype is added.

	* ejudge-setup.c:
	(generate_serve_cfg) 'compile_max_vm_size' increased to 512M.

2011-07-22 (r6414) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_get_standard_checker_description) new function prototype.

	* super_proto.h:
	new operation codes.

	* prepare.c:
	(set_defaults) more is done in PREPARE_SERVE mode.

	* prepare_out.c:
	(prepare_unparse_actual_prob) new function.

	* serve_state.c:
	(serve_state_load_contest_config) fix.

	* super_html_3.c:
	(super_html_get_standard_checker_description) new function.

	* super_html_7.c: progess...

	* super_proto.c:
	new operation codes.

	* super-serve.c:
	(sid_state_clear) test editing data is destroyed.

2011-07-22 (r6413) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_unparse_actual_prob) prototype is added.

2011-07-17 (r6412) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h: copyright notice is updated;
	(clar_open) 'const' is added to 'config' parameter.

	* common_plugin.h: copyright notice is updated;
	(struct common_plugin_iface) 'const' is added to 'config' parameter
	of 'prepare' method.

	* ejudge_cfg.h: copyright notice is updated;
	(ejudge_cfg_get_plugin_config) 'const' is added to 'cfg' parameter.

	* runlog.h:
	(run_open) 'const' is added to 'config' parameter.

	* serve_state.h:
	(struct serve_state) new fields 'timestamp', 'last_check_time'
	are added;
	(serve_state_load_contest_config) new function prototype.

	* super_proto.h: progress.

	* clarlog.c:
	(clar_open) 'const' is added to 'config' parameter.

	* cldb_plugin_file.c:
	(prepare_func) 'const' is added to 'cfg' parameter.

	* common_plugin.c:
	(plugin_register_builtin) 'const' is added to 'config' parameter;
	(plugin_load_external) 'const' is added to 'config' parameter.

	* ejudge_cfg.c:
	(ejudge_cfg_get_plugin_config) 'const' is added to 'cfg' parameter.

	* rldb_plugin_file.c:
	(prepare_func) 'const' is added to 'cfg' parameter.

	* runlog.c:
	(run_open) 'const' is added to 'config' parameter.

	* serve_state.c:
	(serve_state_load_contest_config) new function.

	* super_html_7.c: progress...

	* uldb_plugin_xml.c:
	(prepare_func) 'const' is added to 'cfg' parameter.

2011-07-15 (r6406) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_state) field 'contest_id' is added.

	* meta_generic.c:
	(meta_destroy_fields) fixed.

	* super_html_7.c, super_proto.c: progress...

	* super-serve.c:
	(sid_state_find) parameter 'remote_addr' is added.

2011-07-15 (r6405) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct sid_state) field 'remote_addr' is added;
	  field 'te_state' is added.

2011-07-13 (r6403) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	'super_html_7.c' is added.

	* super_html.h:
	operation error codes are moved to 'super_proto.h'.

	* super_proto.h:
	operation error codes moved here;
	extern declaration of 'super_proto_op_names', etc are added.

	* super_html.c:
	'Test details' link is added.

	* super_html_4.c:
	'op_names', 'op_redirect', 'error_messages' are moved to super_proto.c.

	* super_html_7.c: initial revision.

	* super_proto.c:
	'super_proto_op_names', 'super_proto_op_redirect',
	'super_proto_op_error_messages' are moved here from super_html_4.c.

2011-07-04 (r6393) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	style checker output to the standard output is stored in a separate file.

	* new_server_html_2.c:
	(ns_write_priv_source) style checker output is shown in all cases.

	* serve_2.c:
	(serve_read_compile_packet) style checker report file is supported.

2011-06-30 (r6387) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.c:
	(lang_config_generate_compile_cfg) support for "binary" configuration parameter
	is added.

2011-06-25 (r6381) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new commands are added:
	NEW_SRV_ACTION_DUMP_LANGUAGES, NEW_SRV_ACTION_GET_CONTEST_STATUS,
	NEW_SRV_ACTION_GET_CONTEST_SCHED, NEW_SRV_ACTION_GET_CONTEST_DURATION,
	NEW_SRV_ACTION_GET_CONTEST_DURATION;
	according to a patch from germanilyin@gmail.com.

	* new_server_html.c, new_server_html_4.c, new-server-cmd.c:
	new commands are added:
	NEW_SRV_ACTION_DUMP_LANGUAGES, NEW_SRV_ACTION_GET_CONTEST_STATUS,
	NEW_SRV_ACTION_GET_CONTEST_SCHED, NEW_SRV_ACTION_GET_CONTEST_DURATION,
	NEW_SRV_ACTION_GET_CONTEST_DURATION;
	according to a patch from germanilyin@gmail.com.

2011-06-19 (r6377) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: progress.

	* userlist_proto.h:
	'ULS_GET_GROUP_INFO' is added.

	* super_html_4.c, super_html_6.c: progress.

	* userlist-server.c:
	'ULS_GET_GROUP_INFO' request is implemented.

2011-06-18 (r6370) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	SSERV_OP_USER_JUMP_CONTEST_ACTION is added.

	* super_html_4.c, super_html_6.c:
	jumping to another contest is implemented.

2011-06-18 (r6368) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_read_compile_packet) check for user name is removed.

	* userlist-server.c:
	userlist updating is improved.

2011-06-12 (r6363) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: progress.

	* userlist_proto.h:
	'ULS_LIST_ALL_USERS_4' is added.

	* super_html_4.c, super_html_6.c: progress.

	* userlist-server.c:
	'ULS_LIST_ALL_USERS_4' is implemented.

2011-06-11 (r6361) Alexander Chernov  <cher@ejudge.ru>

	* super_html_4.c, super_html_6.c: progress.

2011-06-10 (r6359) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	SSERV_OP_USER_SEL_CANCEL_ACTION is added.

	* super-serve.h:
	"bitset.h" is included;
	(struct sid_state) 'marked' field is added.

	* userlist_proto.h:
	ULS_LIST_ALL_USERS_3 command is added.

	* super_html_4.c, super_html_6.c: progress

	* super-serve.c:
	(sid_state_clear) 'marked' field is freed.

	* userlist-server.c:
	"bitset.h" is included;
	(cmd_list_all_users_3) new command is implemented.

2011-06-05 (r6356) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	bitset.[ch] are added.

	* super_proto.h: progress...

	* super_html_4.c, super_html_6.c: progress...

2011-06-05 (r6355) Alexander Chernov  <cher@ejudge.ru>

	* bitset.c, bitset.h:
	initial revision

2011-05-28 (r6353) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_header) 'cnts' parameter is added;
	(ns_separator) new function prototype.

	* new_server_html.c, new_server_html_2.c, new_server_html_5.c:
	calls of 'ns_header' are updated;
	calls of 'ns_separator' are added instead of fprintfs.

	* new_server_html_3.c: copyright notice is updated;
	header and separator templated are changed to use substitutions;
	(process_template) 'logo_url', 'css_url' parameters are added;
	  '%O' (logo) and '%Y' (css) substitutions are supported;
	(ns_header) 'cnts' parameter is added;
	(ns_separator) new function;
	(ns_footer) call of 'process_template' is updated;
	calls of 'ns_header' are updated;
	calls of 'ns_separator' are added.

2011-05-24 (r6351) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of new contest elements <logo_url>, <css_url> is supported.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of new contest elements <logo_url>, <css_url> is supported.

2011-05-24 (r6349) Alexander Chernov  <cher@ejudge.ru>

	* contests.h: copyright notice is updated;
	(struct contest_desc) new fields 'logo_url', 'css_url' are added.

	* contests.c, contest_tmpl.c:
	new elements <logo_url>, <css_url> are handled.

2011-05-23 (r6347) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h: copyright notice is updated;
	(is_valid_email_address) new function prototype.

	* super_html.h:
	new error code 'S_ERR_INV_EMAIL' is added.

	* ejudge-setup.c, job-server.c, new_server_html_5.c, super_html_2.c, super_html_4.c, super_html_6.c:
	email address is validated using 'is_valid_email_address' function.

	* misctext.c:
	(is_valid_email_address) new function.

2011-05-23 (r6345) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) '%' is considered as a special substitution character
	when handling style_checker_cmd.

	* sformat.c:
	(sformat_message) %Gr substitution is supported.

2011-05-22 (r6343) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_team_testing_report) new parameters are added:
	  'sid', 'self_url', 'extra_args', 'action_vec'.

	* mischtml.h:
	(html_hyperref_attr) new function prototype.

	* html.c:
	(html_make_title) new function;
	(write_xml_team_testing_report) new parameters are added:
	  'sid', 'self_url', 'extra_args', 'action_vec';
	full archive storage is supported.

	* html_hyperref.c: copyright notice is updated;
	(html_hyperref_attr) new function.

	* new_server_html.c:
	(unpriv_view_test) test visibility settings are supported;
	(unpriv_view_report) call of 'write_xml_team_testing_report' updated.

	* new_server_html_2.c:
	(ns_write_priv_report) call of 'write_xml_team_testing_report' updated.

2011-05-22 (r6341) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(do_write_kirov_standings) 'user_id' parameter is added.

	* html.c:
	(do_write_kirov_standings) 'user_id' parameter is added;
	  standings freezing in user mode is supported correctly;
	(write_standings) call of 'do_write_kirov_standings' is updated.

	* new_server_html.c, new_server_html_2.c:
	calls of 'do_write_kirov_standings' are updated.

2011-05-14 (r6333) Alexander Chernov  <cher@ejudge.ru>

	* meta.make: progress...

	* super_html_6.h, super_proto.h: progress...

	* super_html_6.c: progress...

	* uldb_plugin_xml.c:
	(set_reg_flags_func) copy command (4) is supported.

	* userlist-server.c:
	(cmd_edit_registration) copy command (4) is supported.

2011-05-09 (r6326) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	'S_ERR_TOO_MANY_MEMBERS' error code is added.

	* Makefile.unix.in:
	generation and installation of default 'ejudge-install.sh' is added.

	* super_html_4.c:
	'S_ERR_TOO_MANY_MEMBERS' error code is added.

	* super_html_6.c:
	(super_serve_op_USER_CREATE_MEMBER_ACTION) new function.

2011-05-09 (r6325) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h: copyright notice is updated;
	(lang_configure_screen) 'batch_mode' parameter is added.

	* ejudge-configure-compilers.c:
	(visual_setup) call of 'lang_configure_screen' is updated.

	* ejudge-setup.c:
	(make_sha1_passwd) new function;
	(do_identity_menu) 'make_sha1_passwd' is called;
	(initialize_setting_var) mysql plugin is not enabled by default;
	workdisk is disabled by default;
	(do_preview_menu) call of 'lang_configure_screen' is updated;
	(generate_install_script) warning is added to the generated script;
	check for user is added to the generated script;
	(preview_install_script) call of 'lang_configure_screen' is updated;
	(save_install_script) 'batch_mode', 'output_name' parameters are added;
	(do_main_menu) call of 'save_install_script' is updated;
	(main) batch mode (-b) option is supported.

	* lang_config_vis.c:
	(lang_configure_screen) 'batch_mode' parameter is added.

2011-05-08 (r6323) Alexander Chernov  <cher@ejudge.ru>

	* mischtml.h: copyright notice is updated;
	(html_input_text_js) new function prototype.

	* compile.c:
	default log file name is changed to 'ej-compile.log'.

	* ejudge-setup.c:
	default log file names are changed to 'ej-users.log'
	and 'ej-super-server.log' for the respective programs.

	* html_input_text.c: copyright notice is updated;
	(html_input_text_js) new function.

	* job-server.c:
	default log file name is changed to 'ej-jobs.log'.

	* new-server.c:
	default log file name is changed to 'ej-contests.log'.

	* super_html.c:
	some obsoleted code is removed;
	default ej-run log file name is changed to 'ej-run-messages.log'.

	* super_html_6.c: progress...

	* super-serve.c:
	default ej-run log file name is changed to 'ej-run-messages.log'.

2011-05-08 (r6316) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	'userlist_clnt/get_prev_user_id.c' is added.

	* userlist_clnt.h:
	(userlist_clnt_get_prev_user_id) new function prototype.

2011-05-08 (r6314) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: progress...

	* uldb_plugin.h:
	(struct uldb_plugin_iface) new member functions: 'get_prev_user_id',
	  'get_next_user_id'.

	* userlist_proto.h:
	new commands added: ULS_PREV_USER, ULS_NEXT_USER;
	(struct userlist_pk_list_users_2) 'user_id' field is added.

	* super_html_4.c, super_html_6.c: progress...

	* uldb_plugin_xml.c:
	(get_prev_user_id_func) new function;
	(get_next_user_id_func) new function.

	* userlist.c:
	more prime numbers are added.

	* userlist-server.c:
	(cmd_next_user) new function;
	ULS_PREV_USER, ULS_NEXT_USER requests are handled.

2011-05-04 (r6302) Alexander Chernov  <cher@ejudge.ru>

	* meta.make:
	metainfo for ss_op_param_USER_CREATE_MANY_ACTION is generated.

	* ej_types.h:
	'ej_int_opt_m1_t' is added.

	* super_html.h:
	new error codes are added.

	* super_html_6.h:
	(struct ss_op_param_USER_CREATE_MANY_ACTION) new structure added.

	* super_html_4.c, super_html_6.c: progress...

2011-05-02 (r6294) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for -m32 and -m64 options is added.

2011-05-01 (r6290) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	userlist_clnt/create_user_2.c is added.

	* super_html.h: new error codes are added.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::new_user) the following new parameters
	are added:
	'passwd_method', 'is_privileged', 'is_invisible', 'is_banned',
	'is_locked', 'show_login', 'show_email', 'read_only',
	'never_clean';
	(struct uldb_plugin_iface::register_contest) new parameter 'flags'
	is added.

	* userlist_clnt.h:
	(userlist_clnt_create_user_2) new function prototype.

	* userlist_proto.h:
	new command 'ULS_CREATE_USER_2' is added;
	(struct userlist_pk_create_user_2) new packet structure.

	* super_html_4.c: new error codes are added.

	* super_html_6.c: progress...

	* uldb_plugin_xml.c:
	(new_user_func) many parameters are added;
	(register_contest_func) parameter 'flags' is added.

	* userlist-server.c:
	(check_pk_create_user_2) new function;
	(send_registration_email) new function;
	use of 'new_user' DB method is changed;
	use of 'register_contest' DB method is changed;
	(cmd_create_user_2) new function.

2011-04-30 (r6286) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	'super_html_6_meta' is added;
	metainfo generation is moved to a separater 'meta.make' file.

	* meta.make: initial revision.

	* ej_types.h:
	new typedef for CGI param parsing generator are added.

	* meta_generic.h: copyright notice is updated;
	(struct meta_methods) new fields 'last_tag', 'size' are added;
	(meta_destroy_fields) new function prototype.

	* super_html.h: error codes are renamed.

	* super_html_6.h: initial revision

	* meta_generic.c:
	(meta_destroy_fields) new function.

	* super_html_4.c, super_html_6.c: progress...

2011-04-30 (r6284) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	'install_ej_super_server' rule is added;
	'-rdynamic' options is added for ej-super-server.

	* super_html.h:
	'super_serve_op_*' function prototypes are removed as they are
	linked dynamically.

	* super_proto.h:
	some operations are renamed.

	* userlist_proto.h:
	new commands are added:
	ULS_PRIV_SET_REG_PASSWD_PLAIN,
	ULS_PRIV_SET_REG_PASSWD_SHA1,
	ULS_PRIV_SET_CNTS_PASSWD_PLAIN,
	ULS_PRIV_SET_CNTS_PASSWD_SHA1.

	* super_html.c:
	some operations are renamed.

	* super_html_4.c:
	(do_http_request) dynamic symbol lookup is implemented instead of
	static function table.

	* super_html_6.c: progress...

	* userlist-server.c:
	(cmd_priv_set_passwd_2) new function to handle the new commands.

2011-04-28 (r6273) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rules for generation of the contest-1 archive file are added.

	* ejudge-setup.c:
	(generate_serve_cfg) 'advanced_layout' is enabled;
	statement file name is 'statement.xml';
	checker file name is 'checker';
	(generate_contest_xml) default access permissions
	are changed to "enable from all";
	the uuencoded contest-1 archive is taken from an external file.

2011-04-27 (r6271) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	style/sprintf.js is added.

	* super_html.h:
	(super_serve_op_user_create_one_page) new function prototype;
	(super_serve_op_user_create_many_page) new function prototype;
	(super_serve_op_user_create_from_csv_page) new function prototype.

	* super_proto.h:
	new operations are added:
	SSERV_OP_USER_CREATE_ONE_ACTION,
	SSERV_OP_USER_CREATE_MANY_ACTION,
	SSERV_OP_USER_CREATE_FROM_CSV_PAGE,
	SSERV_OP_USER_CREATE_FROM_CSV_ACTION.

	* super_html_4.c, super_html_6.c: in progress...

2011-04-25 (r6267) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_serve_op_user_password_page) new function prototype;
	(super_serve_op_user_cnts_password_page) new function prototype;
	(super_serve_op_user_create_reg_page) new function prototype;
	(super_serve_op_user_edit_reg_page) new function prototype;
	(super_serve_op_user_delete_reg_page) new function prototype.

	* super_proto.h:
	new operations are added:
	SSERV_OP_USER_CREATE_ONE_PAGE,
	SSERV_OP_USER_CREATE_MANY_PAGE,
	SSERV_OP_USER_CHANGE_PASSWORD_ACTION,
	SSERV_OP_USER_CNTS_PASSWORD_PAGE,
	SSERV_OP_USER_CHANGE_CNTS_PASSWORD_ACTION,
	SSERV_OP_USER_CREATE_REG_ACTION,
	SSERV_OP_USER_EDIT_REG_ACTION,
	SSERV_OP_USER_DELETE_REG_ACTION.

	* super_html_4.c, super_html_6.c: progress...

2011-04-24 (r6265) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(ss_cgi_param_int_opt) new function prototype;
	(super_serve_op_user_detail_page) new function prototype.

	* super_proto.h: new operations are added.

	* super_html.c, super_html_4.c, super_html_6.c: progress...

2011-04-22 (r6263) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_serve_op_browse_groups) new function prototype;
	(super_serve_op_set_group_filter) new function prototype.

	* super_proto.h:
	new operations are added.

	* super-serve.h:
	(struct sid_state) new fields are added.

	* uldb_plugin.h:
	(get_brief_list_iterator_2) 'group_id' parameter is added;
	(get_user_count) 'group_id' parameter is added;
	(get_group_iterator_2) new method;
	(get_group_count) new method.

	* userlist_clnt.h:
	(userlist_clnt_list_users_2) 'group_id' parameter is added;
	(userlist_clnt_get_count) 'group_id' parameter is added.

	* userlist_proto.h:
	new requests 'ULS_LIST_ALL_GROUPS_2', 'ULS_GET_GROUP_COUNT'
	are added;
	(struct userlist_pk_list_users_2) 'group_id' field is added.

	* super_html.c:
	"Group editor" link is added to the main page.

	* super_html_4.c, super_html_6.c: in progress...

	* uldb_plugin_xml.c:
	(get_brief_list_iterator_2_func) 'group_id' parameter is added;
	(get_user_count_func) 'group_id' parameter is added;
	(get_group_iterator_2_func) new function;
	(get_group_count_func) new function.

	* userlist.c:
	protection against cpu_frequency == 0 is added.

	* userlist-server.c:
	protection against cpu_frequency == 0 is added;
	(cmd_list_all_users_2) 'group_id' field is handled;
	(cmd_get_user_count) 'group_id' field is handled;
	(cmd_list_all_groups_2) new function;
	(cmd_get_group_count) new function.

2011-04-21 (r6256) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(ss_cgi_param_int) function prototype is added.

	* super_html_4.c:
	(ss_cgi_param_int) the function is made non-static.

	* super_html_6.c: in progress...

	* userlist-server.c:
	(cmd_get_user_count) the count is logged.

2011-04-20 (r6255) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	'userlist_clnt/get_count.c' is added.

	* super_html.h:
	(super_serve_op_set_user_filter) new function prototype.

	* uldb_plugin.h:
	(struct uldb_plugin_iface) new member function 'get_user_count'
	is added.

	* userlist_clnt.h:
	(userlist_clnt_get_count) new function prototype.

	* userlist_proto.h:
	'ULS_GET_USER_COUNT' request code is added;
	'ULS_COUNT' reply code is added;
	(struct userlist_pk_count) new reply packet.

	* super_html_4.c: new opcodes are added;
	(do_http_request) 'op_'-prefixed opcodes are handled.

	* super_html_6.c: ...progress...

	* uldb_plugin_xml.c:
	(get_user_count_func) new function.

	* userlist-server.c:
	(cmd_get_user_count) new function;
	'ULS_GET_USER_COUNT' request is handled.

2011-04-19 (r6251) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	userlist_clnt/list_users_2.c is added;
	super_html_6.c is added.

	* super_html.h: copyright notice is updated;
	(super_serve_op_browse_users) new function prototype.

	* super_proto.h: new operations are added:
	SSERV_OP_BROWSE_USERS, SSERV_OP_CHANGE_USER_FILTER,
	SSERV_OP_USER_FILTER_FIRST_PAGE, SSERV_OP_USER_FILTER_PREV_PAGE,
	SSERV_OP_USER_FILTER_NEXT_PAGE, SSERV_OP_USER_FILTER_LAST_PAGE.

	* super-serve.h: copyright notice is updated;
	(struct sid_state) new fields 'user_filter_set', 'user_filter',
	'user_offset', 'user_count' are added;
	(struct http_request_info) field 'userlist_clnt' is added.

	* uldb_plugin.h: copyright notice is updated;
	(struct uldb_plugin_iface) 'get_brief_list_iterator_2' member
	function is added.

	* userlist_clnt.h: copyright notice is added;
	(userlist_clnt_list_users_2) new function prototype.

	* userlist_proto.h: copyright notice is updated;
	'ULS_LIST_ALL_USERS_2' command is added;
	(struct userlist_pk_list_users_2) new struct is added.

	* super_html.c:
	(super_html_main_page) "User editor" link is added.

	* super_html_4.c:
	SSERV_OP_BROWSE_USERS request is handled.

	* super_html_6.c: initial revision.

	* super-serve.c:
	(sid_state_clear) 'user_filter' is freed;
	(cmd_http_request) 'userlist_clnt' is added to the request structure.

	* uldb_plugin_xml.c:
	(get_brief_list_iterator_2_func) new function.

	* userlist-server.c:
	(check_pk_list_users_2) new function;
	(cmd_list_all_users_2) new function.

2011-04-15 (r6247) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(super_html_lang_cmd) 'size_str_to_size_t' is used;
	(num_suffix) function is removed.

2011-04-15 (r6246) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(size_str_to_num) new function prototype;
	(size_str_to_size_t) new function prototype.

	* misctext.c:
	<errno.h> is included;
	(size_str_to_num) new function;
	(size_str_to_size_t) new function.

	* parsecfg.c:
	"misctext.h" is included;
	(num_suffix) function is removed;
	(copy_param) 'size_str_to_num', 'size_str_to_size_t' are used.

	* prepare_out.c:
	(num_to_size) function is removed;
	(size_t_to_size) function is removed;
	'num_to_size_str' is used instead of 'num_to_size';
	'size_t_to_size_str' is used instead of 'size_t_to_size'.

	* super_html_3.c:
	(super_html_global_param) 'size_str_to_size_t' is used;
	(super_html_prob_param) 'size_str_to_size_t' is used;

2011-04-10 (r6242) Alexander Chernov  <cher@ejudge.ru>

	* super_html.c:
	(super_html_main_page) serve status reporting column is removed.

2011-04-09 (r6240) Alexander Chernov  <cher@ejudge.ru>

	* super_html.c, super_html_3.c:
	Help links to the wiki pages are added.

2011-04-08 (r6238) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	x86_64 fixes

2011-04-08 (r6237) Alexander Chernov  <cher@ejudge.ru>

	* misctext.c:
	x86_64 fixes

2011-04-08 (r6236) Alexander Chernov  <cher@ejudge.ru>

	* fix-db.c:
	x86_64 fixes

2011-04-08 (r6235) Alexander Chernov  <cher@ejudge.ru>

	* super_html_4.c:
	x86_64 fixes

2011-04-07 (r6231) Alexander Chernov  <cher@ejudge.ru>

	* misctext.c:
	(html_print_by_line) incorrect UTF8 validity check is fixed.

2011-04-07 (r6229) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults)
	if language-specific 'style_checker_cmd' is not an absolute path
	and does not start with '@', global standard checker directory
	path is prepended to it.

	* serve_2.c:
	(serve_compile_request) language-specified 'style_checker_cmd'
	is properly expanded.

2011-04-04 (r6226) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.win32.in:
	reuse library dependency is removed;
	libcommon.a is linked twice, if necessary.

2011-04-01 (r6214) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new fields 'compile_max_vm_size',
	'compile_max_stack_size', 'compile_max_file_size' are added.

	* super_proto.h:
	editing of the 'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' global configuration variables
	is supported.

	* compile.c:
	(do_loop) global configuration variables
	'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' are handled.

	* html.c:
	(write_xml_team_testing_report) valuer comments are printed.

	* prepare.c:
	 new global configuration variables
	'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' are added.

	* prepare_out.c:
	(prepare_unparse_global) new global configuration variables
	'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' are supported;
	(prob_instr) xml_file path computation is improved.

	* serve_2.c:
	(serve_compile_request) global configuration variables
	'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' are handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the 'compile_max_vm_size', 'compile_max_stack_size',
	'compile_max_file_size' global configuration variables
	is supported.

2011-03-31 (r6211) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h:
	(struct compile_request_packet) 'max_file_size' field is added.

	* compile_packet_priv.h:
	(struct compile_request_bin_packet) 'max_file_size' field is added.

	* prepare.h:
	(struct section_problem_data) new fields 'max_file_size',
	'max_open_file_count', 'max_process_count' are added;
	(struct section_language_data) new field 'max_file_size'
	is added.

	* super_proto.h:
	editing of 'max_file_size' language configuration variable is supported
	editing of 'max_file_size', 'max_open_file_count', 'max_process_count'
	problem configuration variables is supported.

	* compile.c:
	'max_file_size' language configuration variable is supported.

	* compile_packet_1.c:
	(compile_request_packet_read) 'max_file_size' field is handled.

	* compile_packet_2.c:
	(compile_request_packet_write) 'max_file_size' field is handled.

	* prepare.c, prepare_out.c:
	'max_file_size' language configuration variable is supported;
	'max_file_size', 'max_open_file_count', 'max_process_count'
	problem configuration variables are supported.

	* run.c:
	(run_tests) 'max_file_size', 'max_open_file_count',
	'max_process_count' problem configuration variables are handled.

	* serve_2.c:
	(serve_compile_request) 'max_file_size' language configuration
	variable is handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'max_file_size' language configuration variable is supported
	editing of 'max_file_size', 'max_open_file_count', 'max_process_count'
	problem configuration variables is supported.

2011-03-31 (r6209) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'max_core_size' field is added.

	* super_proto.h:
	editing of the 'max_core_size' problem configuration variable
	is supported.

	* prepare.c, prepare_out.c:
	'max_core_size' problem configuration variable is added.

	* run.c:
	(run_tests) 'max_core_size' problem configuration variable is handled.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of the 'max_core_size' problem configuration variable
	is supported.

2011-03-30 (r6207) Alexander Chernov  <cher@ejudge.ru>

	* reuse_exec.h:
	(task_SetMaxProcCount) prototype is removed;
	(task_SetMaxCoreSize) new function prototype;
	(task_SetMaxFileSize) new function prototype;
	(task_SetMaxLockedMemorySize) new function prototype;
	(task_SetMaxMessageQueueSize) new function prototype;
	(task_SetMaxNiceValue) new function prototype;
	(task_SetMaxOpenFileCount) new function prototype;
	(task_SetMaxProcessCount) new function prototype;
	(task_SetMaxPrioValue) new function prototype;
	(task_SetMaxPendingCount) new function prototype.

	* nwrun.c:
	(run_program) 'task_SetMaxProcCount' is renamed
	to 'task_SetMaxProcessCount'.

2011-03-30 (r6204) Alexander Chernov  <cher@ejudge.ru>

	* run_packet_1.c:
	(run_request_packet_read) packet version is not checked for
	the QUIT packet.

2011-03-29 (r6200) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_check_contest_events) 'finish_time' sanity checks are added.

	* serve.c:
	(main) 'finish_time' sanity checks are added.

	* serve_2.c:
	(serve_update_status_file) 'finish_time' sanity checks are added;
	(serve_reset_contest) the same.

	* serve_state.c:
	(serve_state_load_contest) 'finish_time' sanity checks are added.

	* super_html_3.c:
	(super_html_print_problem) "valuer_cmd" editing is improved.

2011-03-27 (r6195) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_compile_request) 'max_vm_size', 'max_stack_size' are passed to
	the compilation server.

2011-03-27 (r6194) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h: copyright notice is updated;
	(struct compile_request_packet) new fields 'max_vm_size',
	'max_stack_size' are added.

	* compile_packet_priv.h:
	(struct compile_request_bin_packet) 'max_vm_size',
	'max_stack_size' fields are added.

	* prepare.h:
	(struct section_language_data) 'max_vm_size', 'max_stack_size'
	fields are added.

	* reuse_exec.h:
	(task_EnableProcessGroup) new function prototype.

	* super_proto.h:
	editing of the new 'max_vm_size', 'max_stack_size' language
	configuration variables is supported.

	* compile.c:
	compilation processes are started in separate process groups;
	'max_vm_size', 'max_stack_size' language configuration variables
	are supported.

	* compile_packet_1.c:
	(compile_request_packet_read) 'max_vm_size', 'max_stack_size'
	are read.

	* compile_packet_2.c:
	(compile_request_packet_write) 'max_vm_size', 'max_stack_size'
	are written.

	* prepare_out.c:
	(prepare_unparse_lang) new language configuration variables
	'max_vm_size', 'max_stack_size' are supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new 'max_vm_size', 'max_stack_size' language
	configuration variables is supported.

2011-03-27 (r6189) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	Reuse checking is removed.

2011-03-27 (r6187) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in:
	reuse-specific feature macros are removed.

	* compile.c, execute.c, run.c:
	conditional compilation depending on the version of
	the reuse library is removed.

2011-03-27 (r6185) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: dependencies from the reuse library are removed.

	* files.make:
	more reuse files are added.

	* filter_eval.c:
	"reuse_mempage.h" is included instead of <reuse/MemPage.h>.

	* filter_tree.c:
	"reuse_mempage.h" is included instead of <reuse/MemPage.h>.

	* serve.c:
	<reuse/number_io.h> is no longer included;
	<reuse/format_io.h> is no longer included.

	* sformat.c:
	<reuse/number_io.h> is no longer included;
	<reuse/format_io.h> is no longer included.
	'snprintf' is used instead of 'os_snprintf'.

	* run.c:
	<reuse/number_io.h> is no longer included;
	<reuse/format_io.h> is no longer included;
	'snprintf' is used instead of 'os_snprintf'.

	* tex_dom_parse.c:
	"reuse_hash.h" is insluded instead of <reuse/hash.h>.

	* userlist-server-control.c: copyright notice is updated;
	"reuse_osdeps.h" is included instead of <reuse/osdeps.h>.

2011-03-27 (r6184) Alexander Chernov  <cher@ejudge.ru>

	* reuse_hash.h, reuse_hash_priv.h, reuse_exec.h, reuse_mempage.h:
	Initial revision. Copied from the reuse library.

2011-03-27 (r6180) Alexander Chernov  <cher@ejudge.ru>

	* printing.c:
	copyright notice is updated;
	"reuse_exec.h" is included instead of <reuse/exec.h>.

2011-03-27 (r6179) Alexander Chernov  <cher@ejudge.ru>

	* serve.c:
	"reuse_exec.h" is included instead of <reuse/exec.h>.

2011-03-27 (r6178) Alexander Chernov  <cher@ejudge.ru>

	* nwrun.c, reports.c, run_inverse.c, ejudge-control.c, execute.c, run.c, serve_2.c, compile.c, diff.c:
	"reuse_exec.h" is included instead of <reuse/exec.h>.

2011-03-27 (r6176) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	more reuse files are added.

2011-03-27 (r6175) Alexander Chernov  <cher@ejudge.ru>

	* reuse_integral.h:
	Initial revision. Copied from the reuse library.

2011-03-27 (r6174) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in, configure.ac:
	reuse features merged in.

2011-03-27 (r6173) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet_priv.h, full_archive.h:
	copyright notice is updated;
	"reuse_integral.h" is included instead of <reuse/integral.h>.

2011-03-27 (r6172) Alexander Chernov  <cher@ejudge.ru>

	* sha.c, run_packet_1.c, run_packet_2.c, run_packet_3.c, run_packet_4.c, run_packet_5.c, run_packet_6.c, sha.h, ej_types.h, compile_packet_1.c, run_packet_priv.h, compile_packet_2.c, compile_packet_3.c, compile_packet_4.c, compile_packet_5.c, compile_packet_6.c, run.c:
	"reuse_integral.h" is included instead of <reuse/integral.h>.

2011-03-27 (r6167) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	more reuse files are added.

2011-03-27 (r6164) Alexander Chernov  <cher@ejudge.ru>

	* reuse_osdeps.h:
	Initial revision. Copied from the reuse library.

2011-03-27 (r6163) Alexander Chernov  <cher@ejudge.ru>

	* super-serve-control.c, mime_type.c:
	copyright notice is updated;
	"reuse_osdeps.h" is included instead of <reuse/osdeps.h>.

2011-03-27 (r6162) Alexander Chernov  <cher@ejudge.ru>

	* nwrun.c, contest_tmpl.c, userlist-server.c, super-serve.c, random.c, clean-users.c, cldb_plugin_file.c, ejudge-control.c, convert-clars.c, clarlog.c, contests_2.c, server_framework.c, uldb_plugin_xml.c, serve.c, new_server_html_2.c, nsdb_plugin_files.c, ej-ncheck.c, compile.c, team_extra.c, new-server.c, reports.c, users.c, serve-control.c, contests.c, new_server_html.c, super_html_2.c, super_html_3.c, convert-runs.c, compile-control.c, super_html_5.c, runlog.c, fix-db.c, new-server-control.c, ej-batch.c, job-server.c, master_html.c, archive_paths.c, pathutl.c, super_html.c, ejudge_cfg.c, serve_state.c, opcaps.c, prepare_out.c, vcs.c, job-server-control.c, teamdb.c, edit-userlist.c, prepare.c, new-server-cmd.c, clntutil.c, run_inverse.c, runlog_import.c, nwrun_packet.c, rldb_plugin_file.c, ejudge-setup.c, ncurses_utils.c, run.c, html.c, serve_2.c, new-client.c:
	"reuse_osdeps.h" is included instead of <reuse/osdeps.h>.

2011-03-26 (r6151) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: copyright notice is updated;
	rule for libplatform.a updated.

	* files.make:
	PLATFORM_CFILES definition is added;
	reuse_logger.c is added.

2011-03-26 (r6148) Alexander Chernov  <cher@ejudge.ru>

	* reuse_logger.h:
	initial revision: copies from the reuse library

2011-03-26 (r6147) Alexander Chernov  <cher@ejudge.ru>

	* filter_expr.y, filter_eval.c, job-server-control.c, files.make, digest_1.c, archive_paths.c, digest_2.c, random.c, digest_3.c, ejudge-control.c, digest_4.c, digest_5.c, base64.c, html_start_form.c, userlist_check.c:
	copyright notice is updated;
	"reuse_logger.h" is used instead of <reuse/logger.h>.

2011-03-26 (r6146) Alexander Chernov  <cher@ejudge.ru>

	* team_extra_xml.c, userlist.c, contest_tmpl.c, run_packet_2.c, run_packet_4.c, run_packet_6.c, super-serve.c, clarlog.c, contests_2.c, uldb_plugin_xml.c, serve.c, new_server_html_2.c, nsdb_plugin_files.c, new_server_html_4.c, team_extra.c, compile_packet_1.c, compile_packet_3.c, serve-control.c, compile_packet_5.c, new_server_html.c, super_html_3.c, t3m_dir_listener.c, charsets.c, ej-batch.c, pathutl.c, super_html.c, meta_generic.c, tex_dom_doc.c, serve_state.c, prepare_out.c, testing_report_xml.c, tex_dom_parse.c, errlog.c, tex_dom_render.c, prepare.c, rldb_plugin_file.c, runlog_import.c, ejudge-setup.c, ncurses_utils.c, serve_2.c, t3m_submits.c, run_packet_1.c, run_packet_3.c, userlist-server.c, run_packet_5.c, cldb_plugin_file.c, server_framework.c, filehash.c, runlog_xml.c, new_server_html_5.c, compile.c, parsecfg.c, tex_dom.c, compile_packet_2.c, misctext.c, users.c, contests.c, compile_packet_4.c, dos2unix_str.c, super_html_2.c, filter_tree.c, compile_packet_6.c, super_html_4.c, runlog.c, compile-control.c, problem_common.c, expat_iface.c, varsubst.c, fix-db.c, job-server.c, master_html.c, ejudge_cfg.c, opcaps.c, lang_config_vis.c, userlist_xml.c, vcs.c, teamdb.c, edit-userlist.c, new-server-cmd.c, clntutil.c, run_inverse.c, protocol.c, run.c, html.c, new-client.c:
	"reuse_logger.h" is used instead of <reuse/logger.h>.

2011-03-26 (r6137) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	"reuse_xalloc.h" is included instead of <reuse/xalloc.h>.

2011-03-26 (r6136) Alexander Chernov  <cher@ejudge.ru>

	* run_packet_1.c, run_packet_2.c, run_packet_4.c, run_packet_5.c, super-serve.c, serve_state.c, new_server_html_2.c, prepare_out.c, new_server_html_4.c, testing_report_xml.c, prepare.c, run_inverse.c, rldb_plugin_file.c, serve-control.c, new_server_html.c, super_html_3.c, html.c, run.c, super_html_4.c, runlog.c, copyright.c:
	"reuse_xalloc.h" is included instead of <reuse/xalloc.h>.

2011-03-26 (r6135) Alexander Chernov  <cher@ejudge.ru>

	* team_extra_xml.c, nwrun.c, userlist.c, send_job_packet.c, contest_tmpl.c, run_packet_6.c, problem_xml.c, clean-users.c, allowed_list.c, clarlog.c, contests_2.c, serve.c, uldb_plugin_xml.c, nsdb_plugin_files.c, team_extra.c, new-server.c, compile_packet_1.c, compile_packet_3.c, execute.c, compile_packet_5.c, convert-runs.c, t3m_dir_listener.c, super_html_5.c, new-server-control.c, charsets.c, ej-batch.c, watched_file.c, super_proto.c, pathutl.c, super_html.c, ncheck_packet.c, zip_utils.c, meta_generic.c, tex_dom_doc.c, tex_dom_parse.c, errlog.c, csv.c, collect-emails.c, tex_dom_render.c, plugin.c, runlog_import.c, ejudge-setup.c, prepare_serve.c, ncurses_utils.c, problem_plugin_impl.h, diff.c, t3m_submits.c, ejudge-configure-compilers.c, run_packet_3.c, userlist-server.c, shellcfg_parse.c, run_packet_7.c, cldb_plugin_file.c, stringset.c, convert-clars.c, filehash.c, server_framework.c, runlog_xml.c, ej-ncheck.c, new_server_html_5.c, compile.c, parsecfg.c, reports.c, tex_dom.c, compile_packet_2.c, misctext.c, t3m_zip_packet_class.c, users.c, contests.c, compile_packet_4.c, cgi.c, super_html_2.c, dos2unix_str.c, compile_packet_6.c, filter_tree.c, compile-control.c, slice-userlist.c, expat_iface.c, varsubst.c, fix-db.c, sformat.c, job-server.c, master_html.c, ejudge_cfg.c, opcaps.c, lang_config_vis.c, userlist_xml.c, vcs.c, teamdb.c, edit-userlist.c, new-server-cmd.c, clntutil.c, t3_packets.c, nwrun_packet.c, protocol.c, new-client.c, common_plugin.c:
	copyright notice is updated;
	"reuse_xalloc.h" is included instead of <reuse/xalloc.h>.

2011-03-26 (r6124) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	some files copied from the reuse library are added.

2011-03-26 (r6123) Alexander Chernov  <cher@ejudge.ru>

	* reuse_xalloc.h:
	initial revision: copied from the reuse library

2011-03-24 (r6119) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) crash in case of removed problems is fixed.

2011-03-17 (r6116) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright notice is updated;
	new actions 'ADMIN_CONTEST_SETTINGS',
	'ADMIN_CHANGE_ONLINE_VIEW_SOURCE',
	'ADMIN_CHANGE_ONLINE_VIEW_REPORT',
	'ADMIN_CHANGE_ONLINE_VIEW_JUDGE_SCORE',
	'ADMIN_CHANGE_ONLINE_FINAL_VISIBILITY'
	are added;
	(ns_write_admin_contest_settings) new function prototype.

	* protocol.h:
	(struct prot_serve_status_v2) new fields 'online_view_source',
	'online_view_report', 'online_view_judge_score',
	'online_final_visibility' are added.

	* serve_state.h:
	(struct serve_state) new fields 'online_view_source',
	'online_view_report', 'online_view_judge_score',
	'online_final_visibility' are added.

	* html.c:
	(write_html_run_status) 'online_view_judge_score' is handled;
	(write_text_run_status) the same as above;
	(new_write_user_runs) 'online_view_report', 'online_view_source',
	'online_view_judge_score' are handled;
	(do_write_kirov_standings) the same as above;
	(do_write_public_log) the same as above;
	(write_xml_team_testing_report) 'online_view_judge_score',
	'online_final_visibility' are supported.

	* new_server_html.c:
	(priv_contest_operation) new commands 'ADMIN_CHANGE_ONLINE_VIEW_SOURCE'
	'ADMIN_CHANGE_ONLINE_VIEW_REPORT',
	'ADMIN_CHANGE_ONLINE_VIEW_JUDGE_SCORE',
	'ADMIN_CHANGE_ONLINE_FINAL_VISIBILITY' are handled;
	(priv_clear_run) 'team_enable_rep_view', 'enable_full_archive'
	global configuration variables are disregarded;
	(priv_admin_contest_settings) new function to display the
	"Contest settings" page;
	(priv_main_page) link to "Contest settings" page is added;
	online option values are shown;
	(unpriv_view_source) 'online_view_source' is supported;
	(unpriv_view_test) 'online_view_report' is supported;
	(unpriv_view_report) 'online_view_report' is supported.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) 'online_view_source',
	'online_view_report' are supported;
	(ns_get_user_problems_summary) 'online_view_judge_score'
	is supported;
	(ns_write_user_problems_summary) the same as above;
	(ns_write_admin_contest_settings) new function to generate
	the "Contest settings" page.

	* new_server_tables.c: copyright notice is updated;
	actions 'ADMIN_CHANGE_ONLINE_VIEW_SOURCE'
	'ADMIN_CHANGE_ONLINE_VIEW_REPORT',
	'ADMIN_CHANGE_ONLINE_VIEW_JUDGE_SCORE',
	'ADMIN_CHANGE_ONLINE_FINAL_VISIBILITY'
	are supported.

	* serve_2.c:
	(serve_update_status_file) new fields 'online_view_source',
	'online_view_report', 'online_view_judge_score',
	'online_final_visibility' are saved;
	(serve_load_status_file) new fields (see above) are restored;
	(serve_move_files_to_insert_run) 'team_enable_rep_view',
	'enable_full_archive' global configuration variables are
	disregarded;
	(serve_squeeze_runs) the same as above;
	(serve_clear_by_mask) the same as above;
	(serve_ignore_by_mask) the same as above.

2011-03-15 (r6115) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'final_open_tests' field is added;
	final_open_tests_count, final_open_tests_val fields are added;
	(cntsprob_get_test_visibility) 'final_mode' parameter is added.

	* super_proto.h:
	editing of 'final_open_tests' is supported.

	* html.c:
	(write_xml_team_testing_report) call of 'cntsprob_get_test_visibility'
	are updated.

	* prepare.c:
	'final_open_tests' problem configuration variable is added;
	(cntsprob_get_test_visibility) 'final_mode' parameter is added.

	* prepare_out.c:
	(prepare_unparse_prob) 'final_open_tests' is handled.

	* run.c:
	(run_tests) call of 'cntsprob_get_test_visibility' updated.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'final_open_tests' is supported.

2011-03-15 (r6113) Alexander Chernov  <cher@ejudge.ru>

	* protocol.h, serve_state.h:
	fields are renamed: 'upsolving_' prefix is added to 'freeze_standings',
	'view_source', 'view_protocol', 'full_protocol', 'disable_clars'.

	* new_server_html.c, serve_2.c, serve_state.c:
	fields are renamed: 'upsolving_' prefix is added to 'freeze_standings',
	'view_source', 'view_protocol', 'full_protocol', 'disable_clars'.

2011-03-14 (r6111) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_team_testing_report) 'is_marked' parameter is added.

	* super_proto.h:
	editing of 'score_latest_or_unmarked' problem configuration variable
	is implemented.

	* html.c:
	(do_write_kirov_standings) 'score_latest_or_unmarked' problem
	configuration variable is handled;
	(do_write_public_log) the same as above;
	(write_xml_team_testing_report) visibility "fullifmarked"
	is supported.

	* new_server_html.c:
	(unpriv_view_report) call of 'write_xml_team_testing_report' updated.

	* prepare_out.c:
	(prepare_unparse_global) 'separate_user_score' is unparsed;
	(prepare_unparse_prob) 'score_latest_or_unmarked' is unparsed;
	(generate_abstract_tester) 'skip_testing' is unparsed.

	* problem_common.c:
	"fullifmarked" visibility is added.

	* run.c:
	(invoke_valuer) visibility is not printed to the valuer input stream;
	(do_loop) 'skip_testing' configuration variable is handled correctly
	for 'any' testers;
	(check_config) 'skip_arch' option is handled;
	(main) '-s ARCH' option is added to specify architectures which are
	to be skipped in this instance of 'ej-run' program.

	* serve_2.c:
	(serve_read_run_packet) 'user_tests_passed' are adjusted for storing
	to the database.

	* super-serve.c:
	editing of 'score_latest_or_unmarked' problem configuration variable
	is implemented.

2011-03-05 (r6109) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.h:
	(struct testing_report_xml) 'user_run_tests' field is added.

	* html.c:
	(write_xml_team_testing_report) separate_user_score mode
	is supported.

	* run.c:
	(generate_xml_report) 'user_max_score', 'user_run_tests'
	parameters are added.
	(run_tests) 'user_run_tests' is supported.

	* serve_2.c:
	(serve_run_request) 'separate_user_score' is passed.

	* testing_report_xml.c:
	"user_run_tests" attribute is handled.

2011-03-04 (r6107) Alexander Chernov  <cher@ejudge.ru>

	* html.h: copyright notice is updated;
	(write_standings) 'user_mode' parameter is added;
	(write_public_log) 'user_mode' parameter is added;
	(do_write_kirov_standings) 'user_mode' parameter is added;
	(calc_kirov_score) 'separate_user_score' parameter is added;
	'user_mode' parameter is added;
	(write_html_run_status) 'user_mode' parameter is added;
	(write_text_run_status) 'user_mode' parameter is added.

	* html.c:
	(calc_kirov_score) 'separate_user_score' mode is supported;
	(write_html_run_status) 'separate_user_score' mode is supported;
	(write_text_run_status) 'separate_user_score' mode is supported;
	(new_write_user_runs) 'separate_user_score' mode is supported;
	(do_write_kirov_standings) 'separate_user_score' mode is supported;
	(write_standings) 'separate_user_score' mode is supported;
	(do_write_public_log) 'separate_user_score' mode is supported;
	(write_public_log) 'separate_user_score' mode is supported.

	* new_server_html.c:
	(unpriv_view_standings) 'separate_user_score' mode is supported.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) call of 'write_html_run_status' updated;
	(ns_write_priv_standings) call of 'do_write_kirov_standings' updated;
	(ns_write_user_run_status) call of 'write_text_run_status' updated;
	(ns_get_user_problems_summary) separate_user_score mode supported.

	* new_server_html_4.c:
	(do_dump_master_runs) 'calc_kirov_score' call is updated.

	* serve_2.c:
	(serve_update_standings_file) 'separate_user_score' mode
	is supported;
	(serve_update_public_log_file) 'separate_user_score' mode
	is supported.

2011-03-04 (r6106) Alexander Chernov  <cher@ejudge.ru>

	* prepare_out.c:
	missed \n is added.

2011-03-01 (r6103) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h:
	(struct rldb_plugin_iface) 'change_status_4' field is added.

	* runlog.h: copyright notice is updated;
	(run_change_status_3) new function prototype;
	(run_change_status_4) new function prototype.

	* run_packet.h:
	(struct run_reply_packet) 'has_user_score' field is added.

	* run_packet_priv.h:
	FLAGS_HAS_USER_SCORE is added.

	* new_server_html.c: copyright notice is updated;
	separate_user_score mode is supported.

	* new_server_html_4.c: copyright notice is updated;
	separate_user_score mode is supported.

	* rldb_plugin_file.c:
	(change_status_4_func) new function.

	* runlog.c:
	(run_change_status_3) new function;
	(run_change_status_4) new function.

	* run_packet_4.c:
	(run_reply_packet_read) 'has_user_score' is supported.

	* run_packet_5.c:
	(run_reply_packet_write) 'has_user_score' is supported.

	* serve_2.c: copyright notice is updated;
	separate_user_score mode is supported.

2011-02-28 (r6100) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h: copyright notice is updated;
	(struct rldb_plugin_iface) new member 'change_status_3' is added.

	* rldb_plugin_file.c: copyright notice is updated;
	(change_status_3_func) new member function is implemented.

	* run.c:
	(read_valuer_score) 'p_user_tests_passed' parameter is added;
	'user_tests_passed' is read from the valuer output;
	(invoke_valuer) 'p_user_tests_passed' parameter is added;
	(run_tests) full_user_score is handled in separate_user_score mode;
	user_tests_passed is received from the valuer output.

2011-02-27 (r6097) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.h:
	"user-failed-test" attribute is removed.

	* run_packet.h:
	(struct run_reply_packet) 'user_failed_test'->'user_tests_passed'.

	* run_packet_priv.h:
	(struct run_reply_bin_packet) 'user_failed_test'->'user_tests_passed'.

	* run.c:
	basic support for separate user scoring is implemented.

	* run_packet_4.c, run_packet_5.c, run_inverse.c:
	'user_failed_test'->'user_tests_passed'.

	* testing_report_xml.c:
	"user-failed-test" attribute is removed.

2011-02-27 (r6093) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	(test_visibility_unparse) new function prototype.

	* problem_common.c:
	(test_visibility_unparse) new function.

	* run.c:
	(struct testinfo) 'visibility' field is added;
	(generate_xml_report) 'visibility' is unparsed;
	(run_tests) 'visibility' is initialized.

2011-02-27 (r6091) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	'full_user_score' problem variable is added.

	* prepare_out.c: copyright notice is updated;
	(prepare_unparse_prob) 'full_user_score' is handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new 'full_user_score' problem variable is supported.

2011-02-27 (r6089) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new field 'full_user_score'.

	* super_proto.h:
	editing of the new 'full_user_score' problem variable is supported.

2011-02-27 (r6086) Alexander Chernov  <cher@ejudge.ru>

	* runlog.c: copyright notice is updated;
	(run_get_attempts) RUN_STYLE_ERR is not counted as an attempt.

2011-02-27 (r6082) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(write_xml_team_testing_report) 'cntsprob_get_test_visibility'
	function is used.

	* prepare.c:
	(cntsprob_get_test_visibility) new function.

2011-02-27 (r6081) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(cntsprob_get_test_visibility) new function prototype.

2011-02-27 (r6079) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	(test_visibility_parse_mem) new function prototype.

	* html.c: copyright notice is updated;
	(write_xml_team_testing_report) new visibility conception is supported.

	* prepare.c: copyright notice is updated;
	'separate_user_score' global variable is added;
	(prepare_parse_open_tests) rewritten to support visibility concept.

	* problem_common.c:
	(test_visibility_parse_mem) new function.

	* run.c: copyright notice is updated;
	(do_loop) user scores in the reply packet are filled up with the
	default values.

	* run_inverse.c: copyright notice is updated;
	(run_inverse_testing) user scores in the reply packet are filled up
	with the default values.

2011-02-27 (r6078) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright notice is updated;
	(struct section_global_data) 'separate_user_score' field is added.

2011-02-24 (r6077) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h: copyright notice is updated;
	(struct run_request_packet) 'separate_user_score' field is added;
	(struct run_reply_packet) 'user_status', 'user_failed_test',
	'user_score' fields are added.

	* run_packet_priv.h: copyright notice is updated;
	FLAGS_SEPARATE_USER_SCORE is added;
	(struct run_reply_bin_packet) new fields 'user_status',
	'user_failed_test', 'user_score' are added.

	* run_packet_1.c, run_packet_2.c: copyright notice is updated;
	'separate_user_score' field is supported.

	* run_packet_4.c, run_packet_5.c: copyright notice is updated;
	'user_status', 'user_failed_test', 'user_score' fields
	are supported.

2011-02-24 (r6076) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: copyright notice is updated;
	editing of 'separate_user_score' global configuration variable is
	supported.

	* serve-control.c, super_html_3.c, super-serve.c: copyright notice is updated;
	editing of 'separate_user_score' global configuration variable is
	supported.

2011-02-24 (r6075) Alexander Chernov  <cher@ejudge.ru>

	* copyright.c: copyright notice is updated.

2011-02-23 (r6073) Alexander Chernov  <cher@ejudge.ru>

	* files.make: copyright notice is updated;
	'style_c.c' is added.

	* style_c.c: new file.

2011-02-23 (r6072) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h: copyright notice is updated;
	(enum test_visibility) new enumerated constants;
	(test_visibility_parse) new function prototype.

	* testing_report_xml.h: copyright notice is updated;
	new attribute "visibility" of the test description element <test>
	is supported;
	new attributes "user-status", "user-failed-test", "user-tests-passed",
	"user-score", "user-max-score" of the report element <testing-report>
	are supported.

	* problem_common.c: copyright notice is updated;
	"ej_types.h" is included;
	(test_visibility_parse) new function.

	* testing_report_xml.c: copyright notice is updated;
	new attribute "visibility" of the test description element <test>
	is supported;
	new attributes "user-status", "user-failed-test", "user-tests-passed",
	"user-score", "user-max-score" of the report element <testing-report>
	are supported.

2010-12-01 (r6063) Alexander Chernov  <cher@ejudge.ru>

	* t3m_submits.c, t3m_submits.h, zip_utils.c, zip_utils.h:
	initial revision

2010-12-01 (r6062) Alexander Chernov  <cher@ejudge.ru>

	* files.make: new files added: 't3m_submits.[ch]', 'zip_utils.[ch]'.

	* serve_state.h:
	(serve_compile_request) 'no_db_flag' is added;
	(serve_run_request) 'contest_id', 'no_db_flag' are added.

	* expat_iface.c:
	(encoding_hnd) '@' is used instead of '?' for unknown characters
	  due to some weirdness of expat.

	* misctext.c:
	(html_print_by_line) do not allow characters not fitting UCS2 due to
	  weirdness of expat.

	* new_server_html.c, new_server_html_4.c:
	calls of 'serve_compile_request', 'serve_run_request' are updated.

	* serve_2.c:
	(serve_compile_request) 'no_db_flag' parameter is added;
	(serve_run_request) 'contest_id', 'no_db_flag' parameters added;

2010-11-29 (r6059) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	't3m_dir_listener.[ch]', 't3m_packet_class.h',
	't3m_zip_packet_class.c' are added.

	* expat_iface.c: copyright notice is updated;
	(encoding_hnd) fixing for Windows-1251 support.

	* misctext.c:
	(ucs2_to_utf8) conversion heuristic is relaxed a bit.

	* serve_state.c:
	(serve_state_load_contest) 'no_users_flag' is supported.

2010-11-22 (r6056) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rules for ej-t3-mediator are changed.

	* serve_state.h:
	(serve_state_load_contest) 'no_users_flag' parameter is added.

	* new_server_html.c, new_server_html_4.c:
	calls of 'serve_compile_request' are updated.

	* serve_2.c:
	(serve_compile_request) 'contest_id' parameter is added;
	calls of 'serve_compile_request' are updated.

	* serve_state.c:
	(serve_state_load_contest) 'no_users_flag' parameter is added.

	* run.c:
	'scoring_checker' and 'valuer_cmd' works together;
	full_score check is relaxed if valuer_cmd is set.

2010-11-18 (r6053) Alexander Chernov  <cher@ejudge.ru>

	* runlog_static.c:
	(run_fix_runlog_time) time skew fixing is relaxed.

2010-11-18 (r6051) Alexander Chernov  <cher@ejudge.ru>

	* t3_packets.h:
	(struct t3_in_submit) 'prob_extid' field is added;
	  'mime_type' field is removed;
	  'gzipped' field is added.

	* ej-t3-mediator.c:
	protection if libzip is missing is added.

	* prepare.c:
	'extid' problem configuration variable is added.

	* prepare_out.c:
	(prepare_unparse_unhandled_prob) 'extid' problem configuration
	  variable is handled.

	* run.c:
	security violation detection and memory limit detection are enabled
	only if general security restrictions are enabled.

	* t3_packets.c:
	"contenttype" attribute is removed;
	"q_extid", "gzipped" attributes are added.

2010-11-18 (r6050) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'extid' field is added.

2010-11-18 (r6048) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_get_file) 'advanced_layout' is supported;
	(unpriv_get_file) 'advanced_layout' is supported.

2010-11-18 (r6043) Alexander Chernov  <cher@ejudge.ru>

	* files.make: new files added: ej-t3-mediator.c, t3_packets.[ch].

	* ej-t3-mediator.c, t3_packets.h, t3_packets.c: initial revision.

2010-11-18 (r6042) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(ucs2_to_utf8) new function prototype.

	* ejudge-setup.c:
	(generate_serve_cfg) 'secure' languages are supported.

	* lang_config_vis.c:
	(lang_config_generate_compile_cfg) 'secure' languages are supported.

	* misctext.c:
	(ucs2_to_utf8) new function.

	* new_server_html.c:
	(priv_submit_run) auto-conversion from ucs-2 to utf-8 is supported;
	(unpriv_submit_run) the same.

2010-11-15 (r6040) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: rules for ej-t3-generator are added.

2010-11-15 (r6038) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: libzip check is added.

	* config.h.in: libzip check is added.

2010-11-14 (r6037) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: rule for ej-ncheck is added.

	* files.make: new files are added.

	* ej-ncheck.c, ncheck_packet.c, ncheck_packet.h: initial revision.

2010-11-03 (r6029) Alexander Chernov  <cher@ejudge.ru>

	* edit-userlist.c, job-server.c, lang_config_vis.c:
	Fedora 13 compilation fixes.

2010-11-03 (r6027) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_fix_runlog_time) prototype is added.

	* rldb_plugin_file.c:
	(check_func) implemented.

	* runlog_static.c:
	(run_fix_runlog_time) most of code is moved from rldb_mysql.

2010-11-02 (r6022) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h:
	(struct rldb_plugin_iface) 'check' function is added.

	* runlog.c:
	(run_open) the plugin's 'check' function is invoked.

	* rldb_plugin_file.c:
	(check_func) new function to check the consistency of the log and
	  fix it if necessary.

2010-11-01 (r6017) Alexander Chernov  <cher@ejudge.ru>

	* new_server_clnt.h:
	(new_server_clnt_close) the result type is changed to
	  'new_server_conn_t'.

2010-10-23 (r6012) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of 'interactor_time_limit' problem is supported.

	* prepare.c, prepare_out.c:
	'interactor_time_limit' problem variable is supported.

	* run.c:
	(run_tests) 'interactor_time_limit' problem variable is supported.

	* super-serve.c, super_html_3.c, super_html_4.c, serve-control.c:
	editing of 'interactor_time_limit' problem is supported.

2010-10-23 (r6010) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) 'interactor_time_limit' is added.

2010-10-16 (r6008) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	PR #47:
	(write_from_contest_dir) 'advanced_layout' mode is correctly
	supported.

2010-10-15 (r6006) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	'config' global variable is renamed to 'ejudge_config'.

	* new-server.c, new_server_html.c, new_server_html_4.c:
	'config' global variable is renamed to 'ejudge_config'.

2010-10-05 (r6004) Alexander Chernov  <cher@ejudge.ru>

	* file_perms.h: copyright notice is updated;
	(file_perms_set) new parameters 'old_group', 'old_mode' are added;
	(file_perms_get) new function prototype.

	* super_html_2.c:
	(rename_files) old file group and permissions are preserved if
	  possible;
	(super_html_commit_contest) old file group and permissions are
	  preserved if possible.

	* super_html_3.c:
	(check_test_file) old file group and permissions are preserved
	  if possible.

2010-10-05 (r6000) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(find_tester) arch == NULL now means any architecture.

	* run.c:
	(do_loop) arbitrary tester architecture now fits for output-only
	  problems, not only the default architecture.

	* serve_2.c:
	(serve_run_request) arbitrary tester architecture now fits for
	  output-only problems, not only the default architecture.

2010-10-03 (r5998) Alexander Chernov  <cher@ejudge.ru>

	* prepare_out.c:
	(prepare_unparse_prob) `internal_name' and `stand_column' are unparsed.

2010-10-03 (r5996) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(do_write_standings) incorrect setting of cur_time for unlimited ACM
	contests is fixed.

2010-09-26 (r5994) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(super_html_edit_languages) situation, when no contest is edited
	  is properly handled.

2010-09-17 (r5992) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h: copyright notice is updated;
	`COMMENT_RUN' capability bit is added.

	* ejudge-setup.c:
	(generate_contest_xml) `MASTER_SET' capability set is used.

	* new_server_html.c:
	(priv_set_run_style_error_status) `COMMENT_RUN' capability bit is
	  required;
	(priv_simple_change_status) `COMMENT_RUN' capability bit is required.

	* opcaps.c: copyright notice is updated;
	`COMMENT_RUN' capability bit is added.

	* serve-control.c, super_html.c:
	`COMMENT_RUN' capability bit is added.

2010-09-11 (r5990) Alexander Chernov  <cher@ejudge.ru>

	* teamdb_2.c:
	(teamdb_get_user_map) fatal crash is fixed.

2010-09-05 (r5988) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	PR #38 is fixed.

	* prepare.c:
	(cntsprob_copy_and_set_default) NULL pointer dereference fixed.

2010-09-05 (r5985) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac, Makefile.unix.in:
	Fixed PRs #39, #40.

2010-08-10 (r5980) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	Ticket #37.
	(super_html_check_tests) bug is fixed.

2010-08-10 (r5979) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c:
	Ticket #36.
	(run_inverse_testing) the log file size is limited.

2010-08-08 (r5977) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c:
	(run_inverse_testing) most archive errors are reported as presentation
	  errors instead of check failed errors.

2010-08-03 (r5973) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c, super_html_3.c, super_html_4.c:
	Ticket #32.

	* new_server_html.c, super_html_3.c, super_html_4.c:
	'enable_text_form' is supported for STANDARD problems.

2010-08-03 (r5971) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new field 'enable_textarea_submit'
	  is added.

2010-07-31 (r5967) Alexander Chernov  <cher@ejudge.ru>

	* clntutil.h: copyright notice is updated;
	(client_not_configured) 'messages' parameter is added.

	* new_server_clnt.h: copyright notice is updated;
	stdio.h is included;
	(new_server_clnt_http_request) 'log_f' parameter is added.

	* clntutil.c: copyright notice is updated;
	(client_not_configured) 'messages' parameter is added.

	* new-client.c: copyright notice is updated;
	calls of 'client_not_configured' are updated;
	logging of http_request errors is improved.

	* new-server-cmd.c: copyright notice is updated;
	calls of 'client_not_configured' are updated.

	* serve-control.c:
	calls of 'client_not_configured' are updated.

	* users.c: copyright notice is updated;
	calls of 'client_not_configured' are updated.

2010-07-25 (r5964) Alexander Chernov  <cher@ejudge.ru>

	* mime_type.h:
	7-zip files are supported.

	* mime_type.c:
	7-zip files are supported.

	* run_inverse.c:
	(invoke_sample_program) some information about started programs
	is printed.

2010-07-23 (r5961) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c:
	(invoke_checker) 'log_path' is opened in the appending mode.

2010-07-23 (r5959) Alexander Chernov  <cher@ejudge.ru>

	* misctext.c:
	(text_read_file) reserve bytes are allocated properly;
	(text_is_binary) return value is inverted;
	(text_normalize_buf) non-increment bug is fixed.

	* run_inverse.c:
	(normalize_file) out_f is closed instead of log_f.

2010-07-23 (r5957) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare_copy_problem) all fields that must be cleared in the
	  destination problem structure are now cleared.

2010-07-21 (r5955) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h, prepare.c, new_server_html.c, new_server_html_2.c, serve_state.c, super_html_3.c, prepare_out.c, serve_2.c, super_html_4.c, new_server_html_4.c:
	Ticket #25.

	* serve_state.h:
	(serve_is_problem_started) new function prototype;
	(serve_is_problem_deadlined) new function prototype;
	(serve_is_problem_started_2) new function prototype;
	(serve_is_problem_deadlined_2) new function prototype.

	* new_server_html.c:
	(unpriv_submit_run) 'serve_is_problem_started',
	  'serve_is_problem_deadlined' functions are used;
	(unpriv_command) 'serve_is_problem_started' function is used;
	(is_problem_deadlined) moved to 'serve_2.c';
	(html_problem_selection) 'serve_is_problem_started',
	  'serve_is_problem_deadlined' functions are used;
	(html_problem_selection_2) the same;
	(get_problem_status) the same;
	(unpriv_main_page) the same;
	(unpriv_xml_update_answer) the same;
	(unpriv_get_file) the same.

	* new_server_html_2.c:
	(ns_write_user_problems_summary) 'serve_is_problem_started' is used.

	* new_server_html_4.c:
	(cmd_submit_run) 'serve_is_problem_started',
	  'serve_is_problem_deadlined' functions are used.

	* prepare.c:
	support for 'group_start_date', 'group_deadline' problem
	configuration variables is added;
	(prepare_free_group_dates) new function.

	* prepare_out.c:
	'group_start_date', 'group_deadline' are added to the unhandled
	problem variables.

	* serve_2.c:
	(serve_is_problem_started) new function;
	(serve_is_problem_started_2) new function;
	(serve_is_problem_deadlined) new function;
	(serve_is_problem_deadlined_2) new function.

	* serve_state.c:
	"xml_utils.h" is included;
	<ctype.h> is included;
	(parse_group_dates) new function;
	(serve_parse_group_dates) new function;
	(serve_state_load_contest) 'serve_parse_group_dates' is used.

2010-07-19 (r5952) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct group_date_info) new structure;
	(struct group_dates) new structure;
	(struct section_problem_data) fields 'gsd', 'gdl' are added.

2010-07-16 (r5950) Alexander Chernov  <cher@ejudge.ru>

	* html.h, new_server_tables.c, serve_state.h, teamdb.c, files.make, teamdb_2.c, teamdb.h, teamdb_priv.h, new-server.h, new_server_html.c, html.c, new_server_html_2.c, serve_state.c:
	Ticket #26.

	* files.make:
	teamdb_priv.h, teamdb_2.c are added.

	* html.h:
	(do_write_kirov_standings) 'user_filter' parameter is added;
	(do_write_standings) the same;
	(do_write_moscow_standings) the same.

	* new-server.h:
	new commands 'SET_STAND_FILTER', 'RESET_STAND_FILTER' are added;
	(ns_write_priv_standings) 'phr' parameter is added;
	(ns_set_stand_filter) new function prototype;
	(ns_reset_stand_filter) new function prototype.

	* serve_state.h:
	(struct user_filter_info) new fields for standings filter are added:
	  'stand_user_expr', 'stand_user_tree', 'stand_prob_expr',
	  'stand_prob_tree', 'stand_run_expr', 'stand_run_tree',
	  'stand_mem', 'stand_error_msgs';
	(serve_state_destroy_stand_expr) new function prototype.

	* teamdb.h:
	(teamdb_get_user_map) 'teamdb_state_t state' parameter is replaced
	  with 'serve_state_t cs';
	  'cur_time' parameter is added;
	  'filter' parameter is added.

	* teamdb_priv.h: initial revision.

	* html.c:
	"filter_eval.h" is included;
	(get_problem_map) new function to collect problems for standings;
	(do_write_kirov_standings) 'user_filter' parameter is added;
	  call of 'teamdb_get_user_map' is updated;
	  'get_problem_map' is called;
	  run filtering is supported;
	(do_write_moscow_standings) the same as above;
	(do_write_standings) the same as above;
	(write_standings) calls of 'do_write_kirov_standings',
	  'do_write_moscow_standings', 'do_write_standings' are updated.

	* new_server_html.c:
	(priv_standings) call of 'ns_write_priv_standings' is updated;
	(priv_stand_filter_operation) new function to handle
	  'SET_STAND_FILTER' and 'RESET_STAND_FILTER' requests;
	(unpriv_view_standings) call of 'do_write_standings' is updated;
	  call of 'do_write_kirov_standings' is updated;
	  call of 'do_write_moscow_standings' is updated.

	* new_server_html_2.c:
	(stand_parse_error_func) new function to collect errors during
	  filter expression parsing;
	(ns_set_stand_filter) new function;
	(ns_reset_stand_filter) new function;
	(ns_write_priv_standings) 'phr' parameter is added;
	  standings filter input form is generated;
	  calls of 'do_write_kirov_standings', 'do_write_moscow_standings',
	  'do_write_standings' are updated.

	* new_server_tables.c:
	'SET_STAND_FILTER', 'RESET_STAND_FILTER' commands are supported.

	* serve_state.c:
	(serve_state_destroy_stand_expr) new function;
	(serve_state_destroy) the above function is called.

	* teamdb.c:
	"teamdb_priv.h" is included;
	structure definitions are moved to teamdb_priv.h;
	(teamdb_get_user_map) moved to teamdb_2.c.

	* teamdb_2.c: initial revision.

2010-07-15 (r5948) Alexander Chernov  <cher@ejudge.ru>

	* filter_tree.h, filter_expr.y, userlist-server.c, super-serve.c, serve_state.c, prepare_out.c, super_proto.h, serve_state.h, filter_eval.c, files.make, prepare.c, filter_scan.lex, userlist_clnt.h, serve-control.c, userlist_proto.h, filter_tree.c, super_html_3.c, super_html_4.c:
	Ticket #27.

	* files.make:
	'get_xml_by_text.c' file is added.

	* filter_tree.h: copyright notice is updated;
	'FILTER_ERR_INV_USERGROUP' error code is added.

	* serve_state.h:
	(struct serve_user_group) new structure;
	(struct serve_group_member) new structure;
	(struct serve_state) new fields: 'user_group_count',
	  'user_group_map_size', 'user_groups', 'user_group_map',
	  'group_member_count', 'group_member_map_size', 'group_members',
	  'group_member_map'.

	* super_proto.h:
	editing of 'load_user_group' global configuration variable
	is supported.

	* userlist_clnt.h:
	(userlist_clnt_get_xml_by_text) new function prototype.

	* userlist_proto.h:
	'ULS_GET_GROUPS' request code is added.

	* filter_eval.c:
	(find_user_group) new function;
	(check_user_group) new function;
	(do_eval) "inusergroup" primary expression is supported.

	* filter_expr.y:
	"inusergroup" primary expression is supported.

	* filter_scan.lex:
	"inusergroup" token is supported.

	* filter_tree.c:
	error message for the new error code is added.

	* prepare.c, prepare_out.c:
	'load_user_group' global configuration variable is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'load_user_group' global configuration variable
	is supported.

	* serve_state.c:
	(serve_state_destroy) user group info is destroyed;
	(serve_load_user_groups) new function to load the user group info;
	(serve_state_load_contest) user group info is loaded.

	* userlist-server.c:
	minor bugs are fixed;
	(check_pk_set_user_info) new function;
	(cmd_get_groups) new function to handle 'ULS_GET_GROUPS' request.

2010-07-10 (r5944) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	Ticket #15.
	(do_json_user_state) 'need_reload_check' parameter is added;
	(unpriv_load_html_style) js generation is slightly changed;
	(unpriv_page_header) page generation is changed.

2010-07-09 (r5942) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) 'load_user_group' field is added;
	(struct section_problem_data) new fields 'group_start_date',
	  `group_deadline' are added.

2010-07-09 (r5940) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	Ticket #14.
	(unpriv_main_page) generation of the top and the bottom problem
	  naviagation bars is changed to implement proper js-free tabs.

2010-07-08 (r5937) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	Ticket #4 completed;
	(check_pk_set_password) new function;
	(cmd_set_passwd) 'check_pk_set_password' is called by the framework,
	  so the packet checking code is removed;
	(cmd_team_set_passwd) the same as above;
	(cmd_priv_set_passwd) the same as above;
	  shared contest users are supported properly.

2010-07-07 (r5933) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_invoke_stop_script) new function prototype.

	* super_proto.h:
	editing of 'contest_stop_cmd' global configuration variable
	is supported.

	* new_server_html.c:
	(ns_check_contest_events) stop script is invoked;
	(priv_contest_operation) stop script is invoked;
	(priv_upsolving_operation) stop script is invoked.

	* new_server_html_4.c:
	(cmd_operation) stop script is invoked.

	* prepare.c, prepare_out.c:
	'contest_stop_cmd' global configuration variable is supported.

	* serve_2.c:
	(serve_invoke_stop_script) new function.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of 'contest_stop_cmd' is supported.

2010-07-07 (r5932) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) 'contest_stop_cmd' field is added.

	* super-serve.h:
	(struct sid_state) 'contest_stop_cmd_text' field is added.

	* struct-sizes.c: copyright notice is updated;
	"super-serve.h" is included;
	(main) size of struct sid_state is printed.

2010-07-07 (r5930) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	ICONV variable is used instead of plain iconv.

2010-07-07 (r5929) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: copyright notice is updated;
	Ticket #1 is fixed.
	check for programs which gawk grep sed make rm cp ln ar cat chmod
	  mkdir tar gzip bzip2 is added;
	check for iconv program is added.

2010-07-06 (r5927) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c: Ticket #29.
	(invoke_zip) new function;
	(run_inverse_testing) ZIP archives are supported.

2010-06-30 (r5922) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `binary' problem configuration variable is supported.

	* new_server_html.c:
	(priv_submit_run) `binary' problem configuration variable is supported;
	(priv_new_run) the same as above;
	(unpriv_submit_run) the same as above.

	* new_server_html_4.c:
	(cmd_submit_run) `binary' problem configuration variable is supported.

	* prepare.c, prepare_out.c:
	`binary' problem configuration variable is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `binary' problem configuration variable is supported.

2010-06-30 (r5920) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `binary' field is added.

2010-06-29 (r5918) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_tests_report) new function prototype;
	(write_xml_team_tests_report) new function prototype.

	* html.c:
	(write_xml_team_tests_report) new function.

	* master_html.c:
	(write_xml_tests_report) new function.

	* new_server_html.c:
	(unpriv_view_report) reports for testing problems are supported.

	* new_server_html_2.c:
	(ns_write_priv_report) reports for testing problems are supported.

	* run_inverse.c:
	(run_inverse_testing) content-type is written to the XML report.

	* testing_report_xml.c:
	(parse_testing_report) "failed_test" attribute is allowed to be unset;
	  "tt_row_count", "tt_column_count" may be unset;
	(testing_report_unparse_xml) "failed_test" is unparsed only if set.

2010-06-29 (r5916) Alexander Chernov  <cher@ejudge.ru>

	* run_inverse.c:
	progress...

2010-06-24 (r5907) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.h:
	(struct testing_report_row) `id' field is renamed to `row';
	  `nominal_score', `score' fields are added.

	* run.c:
	(do_loop) bugs in inverse testing are fixed;
	(check_config) inverse testing is supported.

	* run_inverse.c:
	bugs are fixed.

	* runlog_static.c:
	"problem_common.h" is included;
	(run_status_str) `PROB_TYPE_TESTS' problems are supported.

	* super_html_3.c:
	(super_html_check_tests) `PROB_TYPE_TESTS' problems are supported.

	* testing_report_xml.c:
	"id" attribute is renamed to "row" in <ttrow> element;
	"nominal-score", "score" attributes are supported in <ttrow>.

2010-06-23 (r5904) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(html_print_by_line) new function prototype.

	* misctext.c:
	(html_print_by_line) new function (moved here from run.c).

	* testing_report_xml.h:
	<stdio.h> is included;
	(struct testing_report_test) fields `input_size', `output_size',
	  `correct_size', `error_size', `checker_size' are added;
	(struct testing_report_row) new structure;
	(struct testing_report_cell) new structure;
	(struct testing_report_xml) fields `tests_mode', `tt_row_count',
	  `tt_column_count', `tt_rows', `tt_cells' are added;
	(testing_report_alloc) new function prototype;
	(testing_report_unparse_xml) new function prototype.

	* run.c:
	(html_print_by_line) moved to misctext.[ch];
	(generate_xml_report) uses of `html_print_by_line' are updated;
	  `global' is used instead of `serve_state.global';
	(do_loop) `global' is used instead of `serve_state.global';
	  inverse testing handling is completed.

	* run_inverse.c:
	completed.

	* testing_report_xml.c:
	"misctext.h" is included;
	support for <ttrows>, <ttrow>, <ttcells>, <ttcell> elements is added;
	support for "tests_mode", "tt_row_count", "tt_column_count", "id",
	  "name", "must_fail", "row", "column" elements is added;
	(testing_report_alloc) new function;
	(unparse_scoring_system) new static function;
	(unparse_bool_attr) new static function;
	(unparse_bool_attr2) new static function;
	(unparse_string_elem) new static function;
	(unparse_string_attr) new static function;
	(unparse_file_contents) new static function;
	(testing_report_unparse_xml) new function.

2010-06-18 (r5901) Alexander Chernov  <cher@ejudge.ru>

	* fileutl.h:
	(write_tmp_file) new function prototype.

	* mime_type.c:
	"fileutl.h" is included;
	file is ported to MinGW;
	(mime_type_guess) `write_tmp_file' is used.

	* run_inverse.c:
	in progress.

2010-06-18 (r5895) Alexander Chernov  <cher@ejudge.ru>

	* fileutl.h:
	(scan_executable_file) function prototype is added.

	* misctext.h:
	(text_read_file) new function prototype;
	(text_is_valid_char) new function prototype;
	(text_is_binary) new function prototype;
	(text_normalize_buf) new function prototype;
	(text_normalize_dup) new function prototype.

	* run.h:
	(run_inverse_testing) function prototype is added.

	* testing_report_xml.h:
	(struct testing_report_xml) `errors' field is added.

	* misctext.c:
	(text_read_file) new function;
	(text_is_valid_char) new function;
	(text_is_binary) new function;
	(text_normalize_buf) new function;
	(text_normalize_dup) new function.

	* run.c:
	"run.h" is included;
	(do_loop) inverse testing is invoked.

	* run_inverse.c:
	in progress.

	* testing_report_xml.c:
	support for <errors> element is added.

2010-06-17 (r5893) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	run.h, run_inverse.c are added.

	* run.h: initial revision.

	* run_inverse.c: initial revision.

2010-06-16 (r5891) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h:
	(struct run_request_packet) field `mime_type' is added.

	* run_packet_priv.h:
	the packet version is defined as a constant;
	(struct run_request_bin_packet) field `mime_type' is added.

	* serve_state.h:
	(serve_run_request) `mime_type' parameter is added.

	* new_server_html.c, new_server_html_4.c:
	calls of `serve_run_request' are updated.

	* run_packet_1.c, run_packet_2.c:
	`mime_type' field is supported.

	* serve_2.c:
	(serve_run_request) `mime_type' parameter is added;
	  `mime_type' is passed to the `run' program;
	(serve_read_compile_packet) use of `serve_run_request' is updated;
	(serve_rejudge_run) use of `serve_run_request' is updated.

2010-06-16 (r5889) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare) contests with no languages defined are allowed.

	* super_html_2.c:
	(super_html_commit_contest) contests with no languages are allowed.

2010-06-16 (r5887) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare_problem_free) new function.

	* prepare_out.c:
	"sformat.h" is included;
	"varsubst.h" is included;
	(prepare_unparse_testers) `prepare_problem_free' use is updated;
	(print_files) output in HTML is generated;
	(report_directory) new function;
	(report_file) new function;
	(handle_file) new function;
	(handle_directory) new function;
	(prob_instr) reworked;
	(prepare_further_instructions) HTML output is generated.

	* super_html_2.c:
	(super_html_commit_contest) output of `prepare_further_instructions'
	  is already in HTML.

	* super_html_3.c:
	use of `prepare_problem_free' is updated.

2010-06-16 (r5886) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_global_free_func) prototype is removed;
	(prepare_language_free_func) prototype is removed;
	(prepare_problem_free_func) prototype is removed;
	(prepare_tester_free_func) prototype is removed;
	(prepare_global_free) prototype is added;
	(prepare_language_free) prototype is added;
	(prepare_problem_free) prototype is added;
	(prepare_tester_free) prototype is added.

2010-06-14 (r5884) Alexander Chernov  <cher@ejudge.ru>

	* problem_common.h: copyright notice is updated;
	problem type `tests' is added.

	* problem_common.c: copyright notice is updated;
	problem type `tests' is added.

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c:
	initial support for new problem type `tests' is added.

2010-06-14 (r5882) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	(check_style_only) completed;
	(do_loop) style checkers are supported.

	* new_server_html.c:
	(priv_submit_run) style checkers are supported for output-only
	  problems;
	(unpriv_submit_run) style checkers are supported for output-only
	  problems.

	* new_server_html_2.c:
	(ns_write_priv_source) textual description of binary archive
	  is displayed.

	* new_server_html_4.c:
	(cmd_submit_run) style checkers are supported for output-only
	  problems.

	* serve_2.c:
	"mime_type.h" is included;
	(serve_compile_request) lang == NULL is supported;
	(serve_read_compile_packet) result of style checker is supported
	  for output-only problems;
	(serve_rejudge_run) style checkers are supported for output-only
	  problems.

2010-06-14 (r5881) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h:
	(struct compile_request_packet) field `src_sfx' is added.

	* compile_packet_priv.h:
	compile packet version is boosted to 4;
	(struct compile_request_bin_packet) field `src_sfx_len' is added.

	* compile_packet_1.c:
	(compile_request_packet_read) `src_sfx' is handled.

	* compile_packet_2.c:
	(compile_request_packet_write) `src_sfx' is handled.

	* compile_packet_3.c:
	(compile_request_packet_free) `src_sfx' is handled.

2010-06-14 (r5880) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h:
	"serve_state.h" is no longer included;
	(compile_request_packet_read) serve_state_t argument is removed.

	* compile.c:
	(check_style) new function is added;
	(do_loop) minor improvements;
	  call of `compile_request_packet_read' is updated.

	* compile_packet_1.c:
	"serve_state.h" is no longer included;
	(compile_request_packet_read) `state' argument is removed;
	  lang_id check is removed.

2010-06-12 (r5878) Alexander Chernov  <cher@ejudge.ru>

	* ej_process.h: copyright notice is updated;
	(ejudge_invoke_process) new function prototype.

	* super_html_3.c:
	(super_html_print_problem) memory leak is plugged;
	(invoke_test_checker) new function to invoke the test checker;
	(invoke_compile_process) reworked;
	(invoke_make) test checker creation is checked;
	(super_html_check_tests) memory leak is plugged;
	  test checker is invoked, if configured for the problem.

2010-06-12 (r5873) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `test_checker_cmd', `test_checker_env' problem
	configuration variables is supported.

	* prepare.c:
	`test_checker_cmd', `test_checker_env' problem configuration
	variables are added;
	(prepare_copy_problem) implementation is changed.

	* prepare_out.c:
	`test_checker_cmd', `test_checker_env' problem configuration
	variables are handled;
	(prepare_unparse_testers) handling of `tmp_prob' is changed;
	(prob_instr) handling of `tmp_prob' is changed.

	* super_html_2.c: copyright notice is updated;
	(super_html_commit_contest) a memory leak is plugged.

	* super_html_3.c:
	`test_checker_cmd', `test_checker_env' problem configuration
	variables are handled;
	(super_html_edit_languages) html armoring is reworked;
	(super_html_print_problem) html armoring is reworked;
	(super_html_check_tests) handling of `tmp_prob' is reworked.

	* serve-control.c, super_html_4.c:
	`test_checker_cmd', `test_checker_env' problem configuration
	variables are handled.

	* super-serve.c:
	editing of `test_checker_cmd', `test_checker_env' problem
	configuration variables is supported;
	(super_serve_clear_edited_contest) memory leak is plugged;

2010-06-12 (r5872) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_copy_problem) function prototype is changed.

2010-06-12 (r5870) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `test_checker_cmd',
	  `test_checker_env' are added.

2010-06-12 (r5868) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.c:
	(copy_param) "S" specification is supported - allocate string
	  on heap.

	* prepare.c:
	tables are fixed for `open_tests' parameter.

	* super_html_4.c:
	's' <-> 'S' in parameter specification to match specification in
	prepare.c.

2010-06-12 (r5866) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(invoke_make) make is invoked with `ejudge_make_problem' target;
	(super_html_check_tests) checkers are recompiled before tests
	  are checked.

2010-06-12 (r5864) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.h:
	(sarray_merge_pp) new function prototype.

	* varsubst.h: copyright notice is updated;
	(config_var_substitute_heap) new function prototype;
	(config_var_substitute_buf) new function prototype.

	* lang_config_vis.c: copyright notice is updated;
	"varsubst.h" is included;
	(do_substitute) is moved to varsubst module.

	* new_server_html.c:
	(priv_submit_run) call of `serve_compile_request' is updated;
	(unpriv_submit_run) call of `serve_compile_request' is updated.

	* new_server_html_4.c:
	(cmd_submit_run) call of `serve_compile_request' is updated.

	* parsecfg.c:
	(sarray_merge_pp) new function.

	* prepare.c:
	(prepare_set_prob_value) `open_tests' is handled properly.

	* serve_2.c:
	"varsubst.h" is included;
	(serve_compile_request) `style_checker_cmd' is processed;
	  `style_checker_env' is processed;
	(serve_rejudge_run) call of `serve_compile_request' is updated.

	* varsubst.c: copyright notice is updated;
	"config.h" is included;
	<reuse/logger.h> is included;
	(do_substitute) moved here from `lang_config_vis.c';
	(config_var_substitute_heap) new function;
	(config_var_substitute_buf) new function.

2010-06-12 (r5861) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `style_checker_cmd', `style_checker_env' problem
	  configuration parameters is supported.

	* prepare.c, prepare_out.c:
	`style_checker_cmd', `style_checker_env' problem configuration
	  parameters are supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `style_checker_cmd', `style_checker_env' problem
	  configuration parameters is supported.

2010-06-12 (r5860) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `style_checker_cmd',
	  `style_checker_env'.

2010-06-12 (r5858) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `style_checker_env' language configuration variable
	is supported.

	* prepare_out.c:
	(prepare_unparse_lang) `style_checker_env' support is improved.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `style_checker_env' language configuration variable
	is supported.

2010-06-10 (r5854) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_compile_request) parameters `style_check_only',
	  `style_checker_cmd', `style_checker_env' are added.

	* compile.c:
	(do_loop) correct error is reported, if style checker failed
	  to start.

	* new_server_html.c:
	(priv_submit_run) call of `serve_compile_request' is updated;
	(unpriv_submit_run) call of `serve_compile_request' is updated.

	* new_server_html_4.c:
	(cmd_submit_run) call of `serve_compile_request' is updated.

	* serve_2.c:
	(serve_compile_request) parameters `style_check_only',
	  `style_checker_cmd', `style_checker_env' are added;
	(serve_rejudge_run) call of `serve_compile_request' is updated.

2010-06-10 (r5852) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h:
	(struct compile_request_packet) new fields: `style_check_only',
	  `sc_env_num', `sc_env_vars'.

	* compile_packet_priv.h:
	packet version is boosted to 3;
	(struct compile_request_bin_packet) new fields: `style_check_only',
	  `sc_env_num'.

	* compile.c:
	(do_loop) style checker environment setting is supported.

	* compile_packet_1.c:
	(compile_request_packet_read) `style_check_only', `sc_env_num',
	  `sc_env_vars' are handled.

	* compile_packet_2.c:
	(compile_request_packet_write) `style_check_only', `sc_env_num',
	  `sc_env_vars' are handled.

	* prepare.c:
	`style_checker_env' language parameter is added.

	* prepare_out.c:
	(prepare_unparse_lang) `style_checker_env' is supported.

2010-06-10 (r5851) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_language_data) `style_checker_env' field is added.

2010-06-09 (r5848) Alexander Chernov  <cher@ejudge.ru>

	* mime_type.h: copyright notice is updated;
	(mime_type_guess_file) new function prototype.

	* mime_type.c: copyright notice is updated;
	(mime_type_guess_file) new function is added.

2010-06-09 (r5847) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rule for style_archive is added.

	* files.make:
	style_archive.c is added.

	* style_archive.c: initial revision.

2010-06-06 (r5846) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3:
	(invoke_make) new function;
	(super_html_check_tests) make is invoked if Makefile is present.

2010-06-04 (r5836) Alexander Chernov  <cher@ejudge.ru>

	* html.h: copyright notice is updated;
	(write_xml_team_testing_report) `prob' parameter is added.

	* html.c:
	(write_xml_team_testing_report) `prob' parameter is added;
	  `open_tests' problem configuration variable is handled.

	* new_server_html.c:
	(unpriv_view_report) call of `write_xml_testing_report' is updated.

	* new_server_html_2.c:
	(ns_write_priv_report) call of `write_xml_testing_report' is updated.

2010-06-04 (r5834) Alexander Chernov  <cher@ejudge.ru>

	* reports.c:
	(ns_olympiad_final_user_report) number of columns for `short answer'
	  problems and for `select one' problems is decreased to 1.

2010-06-04 (r5831) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	`open_tests' problem configuration variable editing is supported.

	* prepare.c:
	`open_tests' problem configuration variable is supported;
	(prepare_parse_open_tests) new function;
	(set_defaults) `open_tests' is supported.

	* prepare_out.c:
	(prepare_unparse_prob) `open_tests' is supported.

	* reports.c:
	(ns_olympiad_final_user_report) `output-only' problems are handled
	  exactly as `text-answer' problems.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	`open_tests' problem configuration variable editing is supported.

2010-06-04 (r5830) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `open_tests', `open_tests_val'
	  are added.

2010-06-01 (r5822) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	`check_cmd' handing is fixed in `advanced_layout' mode.

	* super_html_3.c:
	`check_cmd' handing is fixed in `advanced_layout' mode.

2010-05-31 (r5817) Alexander Chernov  <cher@ejudge.ru>

	* prepare_dflt.h: copyright notice is updated;
	defaults for advanced layout are specified.

	* run_packet.h:
	(struct run_request_packet) `advanced_layout' field is added.

	* run_packet_priv.h:
	FLAGS_ADVANCED_LAYOUT flag is added.

	* new_server_html.c:
	(load_problem_plugin) `advanced_layout' contest global
	  parameter is supported.

	* new_server_html_2.c:
	"prepare_dflt.h" is included;
	(write_from_contest_dir) new parameters `global', `prb', `entry'
	  are added;
	(ns_write_tests) calls of `write_from_contest_dir' are updated.

	* prepare.c:
	new global configuration variable `problems_dir' is added;
	(set_defaults) `advanced_layout' parameter is supported;
	(prepare_set_prob_value) `advanced_layout' parameter is supported;
	(get_advanced_layout_path) new function.

	* prepare_out.c:
	(prob_instr) `advanced_layout' parameter is supported.

	* run.c:
	"prepare_dflt.h" is included;
	(invoke_valuer) `advanced_layout' parameter is supported;
	(invoke_nwrun) `global' parameter is marked as const pointer;
	(run_tests) `advanced_layout' parameter is supported;
	(check_config) `advanced_layout' parameter is supported.

	* run_packet_1.c: copyright notice is updated;
	(run_request_packet_read) `FLAGS_ADVANCED_LAYOUT' is supported.

	* run_packet_2.c: copyright notice is updated;
	(run_request_packet_write) `FLAGS_ADVANCED_LAYOUT' is supported.

	* serve_2.c:
	(serve_compile_request) `advanced_layout' parameter is supported;
	(serve_run_request) `advanced_layout' parameter is supported.

	* super_html_3.c:
	(super_html_add_abstract_problem) `advanced_layout' global contest
	  parameter is supported;
	(super_html_check_tests) `advanced_layout' is supported.

2010-05-30 (r5816) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `problems_dir' field is added.
	(get_advanced_layout_path) new function prototype.

2010-05-29 (r5814) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	(struct userlist_groupmember) `rights' field is added.

	* userlist_xml.c:
	(elem_free) `rights' is freed.

2010-05-28 (r5810) Alexander Chernov  <cher@ejudge.ru>

	* list_ops.h: copyright notice is updated;
	brackets are added around the parameters.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::create_group) `created_by' parameter added.

	* userlist.h:
	(struct userlist_group) new fields `created_by', `create_time',
	  `last_change_time' are added.

	* uldb_plugin_xml.c:
	(create_group_func) `created_by' parameter is added.

	* userlist-server.c:
	(cmd_create_group) plugin call of `create_group' is updated.

2010-05-24 (r5804) Alexander Chernov  <cher@ejudge.ru>

	* edit-userlist.c:
	group operations on groups and group members are supported.

2010-05-23 (r5802) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h:
	(struct uldb_plugin_iface) new fields `get_group',
	  `get_group_user_iterator', `get_group_member_iterator',
	  `create_group_member', `remove_group_member'.

	* userlist.h:
	(struct userlist_user) fields `group_first', `group_last' are added;
	(struct userlist_group) fields `user_first', `user_last' are added;
	(struct userlist_groupmember) fields `user_prev', `user_next',
	  `group_prev', `group_next', `group', `user' are added;
	(userlist_write_groups_xml_header) function prototype is removed;
	(userlist_write_groups_xml_footer) function prototype is removed;
	(userlist_write_groups_header) function prototype is added;
	(userlist_write_groups_footer) function prototype is added;
	(userlist_write_groupmembers_header) function prototype is added;
	(userlist_write_groupmembers_footer) function prototype is added;
	(userlist_unparse_usergroupmember) function prototype is added.

	* userlist_proto.h:
	commands `ULS_LIST_GROUP_USERS', `ULS_CREATE_GROUP_MEMBER',
	  `ULS_DELETE_GROUP_MEMBER' are added;
	error `ULS_ERR_BAD_GROUP_ID' is added.

	* edit-userlist.c:
	group member editing is supported.

	* uldb_plugin_xml.c:
	(get_group_func) new function;
	(get_group_user_iterator_func) new function;
	(get_group_member_iterator_func) new function;
	(create_group_member_func) new function;
	(remove_group_member_func) new function.

	* userlist_proto.c:
	new error message is added.

	* userlist-server.c:
	(check_pk_map_contest) new function;
	(check_pk_register_contest) new function;
	(cmd_list_group_users) new function;
	(cmd_create_group_member) new function;
	(cmd_delete_group_member) new function.

	* userlist_xml.c:
	(do_parse_usergroupmember) new function;
	(collect_usergroups) new function;
	(userlist_unparse_usergroupmember) new function.

2010-05-17 (r5798) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	(struct userlist_groupmember) new structure is added.

	* edit-userlist.c:
	some non-implemented code is commented out.

2010-05-15 (r5797) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h: copyright notice is updated;
	(get_group_iterator) new field is added;
	(get_group_by_name) new field is added;
	(try_new_group_name) new field is added;
	(create_group) new field is added;
	(remove_group) new field is added;
	(edit_group_field) new field is added;
	(clear_group_field) new field is added.

	* userlist.h: copyright notice is updated;
	(struct userlist_group) new structure to store user groups;
	(struct userlist_list) new group-related fields;
	(userlist_write_groups_xml_header) new function prototype;
	(userlist_write_groups_xml_footer) new function prototype;
	(userlist_unparse_usergroup) new function prototype;
	(userlist_group_get_ptr) new function prototype;
	(userlist_group_get_ptr_nc) new function prototype.

	* userlist_clnt.h: copyright notice is updated;
	(userlist_clnt_edit_field) `cmd' parameter is added;
	(userlist_clnt_delete_field) `cmd' parameter is added;
	(userlist_clnt_create_user) `cmd' parameter is added.

	* userlist_proto.h: copyright notice is updated;
	new commands ULS_LIST_ALL_GROUPS, ULS_CREATE_GROUP, ULS_DELETE_GROUP,
	  ULS_EDIT_GROUP_FIELD, ULS_DELETE_GROUP_FIELD;
	new error code ULS_ERR_GROUP_NAME_USED.

	* edit-userlist.c: copyright notice is updated;
	calls of `userlist_clnt_delete_field',
	  `userlist_clnt_edit_field' are updated;
	(do_display_group_members_menu) new function;
	(display_group_members_menu) new function;
	(do_display_group_menu) new function;
	(display_group_menu) new function;
	(display_main_menu) group editing is added.

	* userlist.c:
	(userlist_group_get_ptr) new function;
	(userlist_group_get_ptr_nc) new function.

	* userlist_proto.c: copyright notice is updated;
	new error code is supported.

	* userlist-server.c:
	(check_pk_edit_field) new function;
	(check_pk_delete_info) new function;
	(cmd_list_all_groups) new function;
	(cmd_create_group) new function;
	(cmd_delete_group) new function;
	(cmd_edit_group_field) new function;
	(cmd_delete_group_field) new function.

	* userlist_xml.c:
	(do_parse_usergroups) new function;
	(do_parse_userlist) usergroups are supported;
	(xml_unparse_text_attr) new function;
	(userlist_unparse_usergroup) new function;
	(unparse_usergroup) new function;
	(userlist_write_groups_xml_header) new function;
	(userlist_write_groups_xml_footer) new function;
	(userlist_unparse) usergroups are unparsed.

	* uldb_plugin_xml.c: copyright notice is updated;
	(get_group_iterator_func) new function;
	(get_group_by_name_func) new function;
	(try_new_group_name_func) new function;
	(create_group_func) new function;
	(remove_group_func) new function;
	(edit_group_field_func) new function;
	(clear_group_field_func) new function.

2010-05-12 (r5794) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_run_request) crash if lang == null is fixed.

2010-03-07 (r5789) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `disable_auto_refresh', `ignore_unmarked' is supported.

	* html.c:
	(do_write_kirov_standings) `ignore_unmarked' is supported.

	* new_server_html.c:
	(do_json_user_state) `disable_auto_refresh' global variable
	  is handled.

	* new_server_html_2.c:
	(ns_get_user_problems_summary) `ignore_unmarked' is supported.

	* prepare.c, prepare_out.c:
	`disable_auto_refresh' global configuration variable is supported;
	`ignore_unmarked' problem configuration variable is supported.

	* run.c:
	`static' is added where needed.

	* serve_2.c:
	(serve_run_request) tester-specific `run_dir' is handled.

	* serve-control.c, super-serve.c, super_html_3.c, super_html_4.c:
	editing of `disable_auto_refresh', `ignore_unmarked' is supported.

2010-03-07 (r5788) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `disable_auto_refresh' field is added;
	(struct section_problem_data) `ignore_unmarked' field is added.

2010-03-06 (r5785) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `advanced_layout' is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `advanced_layout' is supported.

2010-03-06 (r5784) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(generate_xml_report) generation fixes.

2010-03-06 (r5783) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `advanced_layout' field is added.

	* prepare.c, prepare_out.c:
	`advanced_layout' field is supported.

2010-03-03 (r5781) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_get_user_problems_summary) score_latest mode is supported for
	  KIROV contests.

2010-03-02 (r5779) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	SSERV_CMD_CNTS_CHANGE_SCHED_TIME handler is installed properly.

2010-03-01 (r5777) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	MARK_DISPLAYED_2, UNMARK_DISPLAYED_2 actions are added.

	* serve_state.h:
	(serve_mark_by_mask) new function prototype is added.

	* filter_eval.c:
	(is_latestmarked) bug is fixed.

	* new_server_html.c:
	(priv_clear_displayed) MARK_DISPLAYED_2, UNMARK_DISPLAYED_2
	commands are handled.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) MARK_DISPLAYED_2, UNMARK_DISPLAYED_2
	  buttons are generated.

	* new_server_tables.c:
	MARK_DISPLAYED_2, UNMARK_DISPLAYED_2 buttons are added.

	* serve_2.c:
	(serve_mark_by_mask) new function.

2010-02-23 (r5775) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h: copyright notice is updated;
	(struct rldb_plugin_iface) `change_status_2' member is added.

	* runlog.h:
	(run_change_status_2) new function prototype.

	* serve_2.c:
	(serve_read_run_packet) `marked_flag' is handled.

	* rldb_plugin_file.c:
	(change_status_2_func) new function prototype.

	* run.c:
	(generate_xml_report) `marked_flag' parameter is added;
	  "marked-flag" attribute is generated to XML;
	(read_valuer_score) new function;
	(invoke_valuer) `p_marked' parameter is added;
	(run_tests) `marked_flag' is retrieved from the valuer and written
	  to XML and reply packet.

	* runlog.c:
	(run_change_status_2) new function.

2010-02-23 (r5773) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h: copyright notice is updated;
	(struct run_reply_packet) `marked_flag' field is added.

	* run_packet_priv.h: copyright notice is updated;
	`FLAGS_MARKED' flag is added.

	* testing_report_xml.h:
	(struct testing_report_xml) `marked_flag' field is added.

	* run_packet_4.c, run_packet_5.c: copyright notice is updated;
	`marked_flag' field is added.

	* testing_report_xml.c:
	"marked-flag" attribute is supported.

2010-02-23 (r5772) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `valuer_sets_marked' problem variable is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `valuer_sets_marked' problem variable is supported.

2010-02-23 (r5771) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, prepare_out.c:
	`valuer_sets_marked' problem configuration variable is supported.

2010-02-23 (r5770) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(section_problem_data) `valuer_sets_marked' field is added.

2010-02-23 (r5769) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c, filter_expr.y, filter_scan.lex:
	`marked', `saved', and `latestmarked' predicates are supported.

2010-02-23 (r5768) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	editing of `is_marked' and `is_saved' run properties is handled.

	* new_server_html.c, new_server_html_2.c, new_server_tables.c:
	editing of `is_marked' and `is_saved' run properties is handled.

2010-02-23 (r5767) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h, runlog.c:
	new fields `is_marked', `is_saved', `saved_status', `saved_score',
	`saved_test' are handled.

	* rldb_plugin_file.c: copyright notice is updated;
	new fields `is_marked', `is_saved', `saved_status', `saved_score',
	`saved_test' are handled.

2010-02-22 (r5763) Alexander Chernov  <cher@ejudge.ru>

	* nwrun.c:
	combined std/file input/output is properly supported.

2010-01-28 (r5755) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h: copyright notice is updated;
	(teamdb_get_user_map) new function prototype.

	* html.c:
	(do_write_kirov_standings) `teamdb_get_user_map' is used to optimize
	  speed;
	(do_write_moscow_standings) `teamdb_get_user_map' is used to optimize
	  speed;
	(do_write_standings) the same as above.

	* teamdb.c: copyright notice is updated;
	(teamdb_convert_flags) new function;
	(teamdb_get_flags) `teamdb_convert_flags' is called;
	(teamdb_get_user_map) new function.

2010-01-26 (r5750) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c, filter_expr.y, filter_scan.lex:
	`arch' primitive is supported.

2010-01-26 (r5748) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.h:
	(struct nwrun_out_packet) `real_time_available' field is added.

	* master_html.c:
	(write_xml_testing_report) real time is reported only if available;
	  max memory used is reported is available.

	* nwrun.c:
	(run_program) `real_time_available' is set.

	* nwrun_packet.c:
	`real_time_available' output packet parameter is added.

	* reports.c:
	(write_xml_tex_testing_report) real time is reported only if available;
	  max memory used is reported is available.

	* run.c:
	(invoke_nwrun) `p_has_real_time' parameter is added;
	(run_tests) `has_real_time' parameter is passed to `invoke_nwrun'.

2010-01-25 (r5746) Alexander Chernov  <cher@ejudge.ru>

	* testing_report_xml.h:
	(struct testing_report_test) `max_memory_used' field is added;
	(struct testing_report_xml) `real_time_available',
	  `max_memory_used_available' fields are added.

	* nwrun.c:
	(run_program) `max_memory_used' is handled.

	* nwrun_packet.h:
	(struct nwrun_out_packet) `max_memory_used' field is added.

	* nwrun_packet.c:
	`max_memory_used' output packet parameter is supported.

	* run.c:
	(struct testinfo) `max_memory_used' field is added;
	(generate_xml_report) "real-time-available",
	  "max-memory-used-available", "max-memory-used" attributes
	  are generated;
	(invoke_nwrun) `max_memory_used' is handled;
	(run_tests) `max_memory_used' is handled.

	* testing_report_xml.c:
	"max-memory-used", "real-time-available", "max-memory-used-available"
	attributes are supported.

2010-01-25 (r5744) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(write_xml_team_testing_report) `exit_comment' field is handled;
	(write_xml_team_output_only_acc_report) the same;
	(write_xml_team_accepting_report) the same.

	* master_html.c:
	(write_xml_testing_report) `exit_comment' field is handled.

	* reports.c:
	(write_xml_tex_testing_report) `exit_comment' field is handled.

2010-01-25 (r5743) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.h:
	(struct nwrun_out_packet) `exit_comment' field is added.

	* testing_report_xml.h: copyright notice is updated;
	(struct testing_report_test) `exit_comment' field is added.

	* nwrun.c:
	(run_program) `exit_comment' is supported.

	* nwrun_packet.c:
	`exit_comment' parameter is added.

	* run.c:
	(struct testinfo) `exit_comment' field is added;
	(generate_xml_report) `exit_comment' field is handled;
	(invoke_nwrun) `exit_comment' field is handled.

	* testing_report_xml.c: copyright notice is updated;
	new attribute "exit-comment" is handled.

2010-01-25 (r5742) Alexander Chernov  <cher@ejudge.ru>

	* pathutl.h: copyright notice is updated;
	"/" is used instead of "\\".

	* compile.c:
	(do_loop) `task_SetMaxRealTime' is used instead of `task_SetMaxTime';
	(main) "-c" option is supported.

	* nwrun.c:
	various fixes...

	* run.c:
	(invoke_nwrun) `combined_stdin' and `combined_stdout' problem
	  configuration variables are handled.

2010-01-25 (r5739) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of `combined_stdin', `combined_stdout' problem configuration
	parameters is supported.

	* prepare.c, prepare_out.c:
	`combined_stdin', `combined_stdout' problem configuration parameters
	are handed.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `combined_stdin', `combined_stdout' problem configuration
	parameters is supported.

2010-01-25 (r5738) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) fields `combined_stdin',
	  `combined_stdout' are added.

2010-01-25 (r5737) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.h:
	(struct nwrun_in_packet) new fields `combined_stdin',
	  `combined_stdout' are added.

	* nwrun_packet.c:
	input packet parameters `combined_stdin', `combined_stdout'
	are added.

2010-01-23 (r5726) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_new_run_form) form type is changed to 2.

2010-01-23 (r5720) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	testing queue management actions are added;
	(ns_write_testing_queue) new function.

	* copyright.c: copyright notice is updated.

	* new_server_html.c:
	(priv_view_testing_queue) new function;
	(priv_testing_queue_operation) new function;
	(priv_whole_testing_queue_operation) new function;
	(priv_main_page) "View testing queue" link is added.

	* new_server_html_2.c:
	"run_packet.h" is included;
	<dirent.h> is included;
	(scan_run_sort_func) new function;
	(scan_run_queue) new function;
	(ns_write_testing_queue) new function.

	* new_server_tables.c:
	testing queue management actions are handled.

	* run.c:
	(invoke_nwrun) run_id field is checked on the output packet.

	* serve_2.c:
	<sys/stat.h> is included;
	<dirent.h> is included;
	(testing_queue_lock_entry) new function;
	(testing_queue_unlock_entry) new function;
	(get_priority_value) new function;
	(get_priority_code) new function;
	(serve_testing_queue_delete) new function;
	(serve_testing_queue_change_priority) new function;
	(serve_testing_queue_up) new function;
	(serve_testing_queue_down) new function;
	(collect_run_packets) new function;
	(serve_testing_queue_delete_all) new function;
	(serve_testing_queue_change_priority_all) new function;
	(serve_testing_queue_up_all) new function;
	(serve_testing_queue_down_all) new function.

	* userlist-server.c: copyright notice is updated;
	(update_userlist_table) all dependent contests are notified.

2010-01-23 (r5719) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h: copyright notice is updated;
	(serve_testing_queue_delete) new function prototype;
	(serve_testing_queue_up) new function prototype;
	(serve_testing_queue_down) new function prototype;
	(serve_testing_queue_delete_all) new function prototype;
	(serve_testing_queue_up_all) new function prototype;
	(serve_testing_queue_down_all) new function prototype.

2010-01-22 (r5717) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_run_request) language parameter `disable_security' is handled.

2010-01-22 (r5715) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of language `disable_security' variable is supported.

	* prepare.c:
	`disable_security' language configuration variable is supported.

	* prepare_out.c:
	(prepare_unparse_lang) `disable_security' is handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of language `disable_security' variable is supported.

2010-01-22 (r5714) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_language_data) `disable_security' field is added.

2010-01-20 (r5701) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	substitutions /COMPILE_HOME_DIR and /CONTESTS_HOME_DIR are added;
	all necessary directories are created.

	* nwrun.c:
	(get_priority_code) new function;
	(read_packet) priority is added to the result packet;
	(do_loop) try harder to move out an incoming packet.

	* run.c:
	(invoke_nwrun) try harder to wait for the nwrun.

2010-01-20 (r5696) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(invoke_nwrun) deadlocks are avoided.

2010-01-20 (r5694) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c: copyright notice is updated;
	(do_eval) `group' expression is supported.

	* filter_expr.y: copyright notice is updated;
	`group' expression is supported.

	* filter_scan.lex:
	"group" token is supported.

2010-01-18 (r5670) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	`compile_request_id' is never 0.

2010-01-17 (r5664) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	nwrun_packet.[ch] is added.

	* fileutl.h:
	(make_hardlink) new function prototype.

2010-01-17 (r5661) Alexander Chernov  <cher@ejudge.ru>

	* nwrun_packet.c, nwrun_packet.h:
	initial revision

2010-01-17 (r5659) Alexander Chernov  <cher@ejudge.ru>

	* fileutl.h:
	(get_tmp_dir) new function prototype.

	* compile.c:
	(main) "/TMPDIR" substitution is added.

	* prepare.c:
	(set_defaults) `compile_work_dir' is substituted.

2010-01-17 (r5656) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	(main) `compile_home_dir' is undefined on Win32.

	* compile-control.c: copyright notice is updated;
	(main) call of `prepare' is updated.

	* fix-db.c:
	(process_contest) call of `prepare' is updated.

	* serve.c: copyright notice is updated;
	(main) call of `prepare' is updated.

	* serve_2.c:
	(serve_compile_request) lang parameters are used instead of global.

2010-01-17 (r5655) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.h:
	(param_subst) new function prototype.

	* compile.c:
	Win32 support is being implemented.

	* parsecfg.c:
	(is_prefix) new function is added;
	(param_subst) new function is added.

	* pathutl.c: copyright notice is updated;
	(path_normalize) win32 paths are handled.

	* prepare.c:
	(set_defaults) `subst_src', `subst_dst' parameters are accepted;
	  substitutions are applied for `root_dir', `lang_config_dir',
	  `lang->cmd';
	(prepare) call of `set_defaults' is updated.

	* run.c:
	(main) call of `prepare' is updated.

	* serve_state.c:
	(serve_state_load_contest) call of `prepare' is updated.

2010-01-17 (r5650) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.h: copyright notice is updated;
	(sarray_append) new function prototype.

	* super_proto.h:
	editing of `enable_win32_languages' is supported.

	* super-serve.h:
	(struct sid_state) `enable_win32_languages' field is added.

	* parsecfg.h: copyright notice is updated;
	(sarray_append) new function.

	* serve-control.c, super-serve.c:
	(super_serve_clear_edited_contest) `enable_win32_languages' is handled.

	* super_html_3.c, super_html_4.c:
	`enable_win32_languages' is handled.

2010-01-17 (r5649) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_tester_data) `nwrun_spool_dir' field is added.

	* super_html.h: copyright notice is updated;
	(super_load_cs_languages) `extra_compile_dirs' parameter is added.

	* prepare.c:
	`nwrun_spool_dir' tester configuration variable is added;
	handling of `extra_compile_dirs' is changed.

	* prepare_out.c:
	win32 architecture is supported.

	* super_html_3.c:
	(super_load_cs_languages) `extra_compile_dirs' parameter is added
	  and handled;
	(super_html_edit_languages) call of `super_load_cs_languages' updated;
	(super_html_lang_activate) `compile_dir_index' is copied;
	(super_html_read_serve) call of `super_load_cs_languages' updated;
	  file is successfully parsed without any testers.

	* super_html_4.c:
	(write_languages_page) call of `super_load_cs_languages' updated.

	* super-serve.c:
	(super_serve_clear_edited_contest) `extra_cs_cfgs' field is freed;
	(super_serve_move_edited_contest) `extra_cs_cfgs' is handled.

2010-01-16 (r5648) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h: copyright notice is updated;
	(struct sid_state) `extra_cs_cfgs', `extra_cs_cfgs_total' fields are added.

2010-01-16 (r5647) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(c_armor_2) the string is properly armored.

2010-01-16 (r5646) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h: copyright notice is updated;
	(c_armored_memlen) new function prototype;
	(c_armored_strlen) new function prototype;
	(c_armor_needed) new function prototype;
	(c_armor_needed_bin) new function prototype;
	(c_armor_buf) new function prototype.

	* prepare_out.c:
	C output armoring is moved to misctext.

	* misctext.c:
	(c_armored_memlen) new function;
	(c_armored_strlen) new function;
	(c_armor_needed) new function;
	(c_armor_needed_bin) new function;
	(c_armor_string) new function;
	(c_armor_buf) new function.

2010-01-16 (r5645) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(generate_ejudge_xml) fix.

	* prepare_out.c: copyright notice is updated;
	(prepare_unparse_global) `extra_compile_dirs' is supported;
	(prepare_unparse_lang) `compile_dir_index' is supported.

2010-01-16 (r5643) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new field `extra_compile_dirs';
	(struct section_language_data) new field `compile_dir_index'.

	* prepare.c:
	`extra_compile_dirs' global configuration var is added;
	`compile_dir_index' language configuration var is added;
	(prepare_global_free_func) `extra_compile_dirs' is handled;
	(set_defaults) `compile_dir_index' is handled.

2010-01-12 (r5640) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rule for `ej-nwrun' is added.

	* ejudge-configure-compilers.c: copyright notice is updated;
	remove_directory_recursively use is updated.

	* ejudge-setup.c: copyright notice is updated;
	remove_directory_recursively use is updated.

	* new_server_html_2.c:
	remove_directory_recursively use is updated.

	* new_server_html_4.c:
	(cmd_submit_run) `ignore_duplicated_runs' is honored.

2010-01-12 (r5638) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.win32.in:
	version handling is updated.

	* fileutl.h: copyright notice is updated;
	(fast_copy_file) new function prototype;
	(remove_directory_recursively) `preserve_root' parameter is added;
	(generic_truncate) new function prototype.

	* nwrun.c:
	mostly completed.

2010-01-11 (r5634) Alexander Chernov  <cher@ejudge.ru>

	* tsc.c, l10n.c, userlist.c, userlist_xml.c, sformat.c, files.make, prepare.c, misctext.c, Makefile.win32.in, filter_tree.c, run.c, serve_state.c, runlog.c:
	win32 MinGW fixes.

2010-01-11 (r5633) Alexander Chernov  <cher@ejudge.ru>

	* win32_compat.h:
	initial revision

2010-01-11 (r5631) Alexander Chernov  <cher@ejudge.ru>

	* run.c: copyright notice is updated;
	<sys/vfs.h> is not included for MinGW;
	(get_expected_free_space) a new functions, which returns
	  the free space amount in the working directory;
	(check_free_space) a new function which waits until
	  enough free space is available in the working directory.

2010-01-09 (r5621) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: copyright notice is updated;
	editing of `style_checker_cmd' language variable is supported.

	* prepare.c:
	`style_checker_cmd' language configuration variable is handled.

	* serve_2.c:
	(serve_compile_request) `style_checker_cmd' is passed to
	  the compile server.

	* super_html_3.c:
	editing of `style_checker_cmd' language variable is supported.

	* serve-control.c, super_html_4.c, super-serve.c: copyright notice is updated;
	editing of `style_checker_cmd' language variable is supported.

2010-01-09 (r5618) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright notice is updated;
	(struct section_language_data) `style_checker_cmd' field is added.

2010-01-09 (r5616) Alexander Chernov  <cher@ejudge.ru>

	* compile.c: copyright notice is updated;
	(do_loop) `style_checker' is supported.

2010-01-09 (r5614) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h: copyright notice is updated;
	(struct compile_request_packet) `style_checker' field is added.

	* compile_packet_priv.h: copyright notice is updated;
	EJ_COMPILE_PACKET_VERSION is used for the current packet version;
	(struct compile_request_bin_packet) `style_checker_len' field is added.

	* compile_packet_1.c: copyright notice is updated;
	<limits.h> is included;
	(compile_request_packet_read) EJ_COMPILE_PACKET_VERSION is used for
	  the current version of the compile packet;
	  `style_checker' field is supported.

	* compile_packet_2.c: copyright notice is updated;
	<limits.h> is included;
	(compile_request_packet_write) EJ_COMPILE_PACKET_VERSION is used for
	  the current version of the compile packet;
	  `style_checker' field is supported.

	* compile_packet_3.c: copyright notice is updated;
	(compile_request_packet_free) `style_checker' field is freed.

2010-01-09 (r5612) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright notice is updated;
	NEW_SRV_ACTION_PRIV_SET_RUN_STYLE_ERR is added.

	* new_server_html.c:
	(priv_set_run_style_error_status) new function to handle
	  PRIV_SET_RUN_STYLE_ERR command;
	PRIV_SET_RUN_STYLE_ERR command is handled.

	* new_server_html_2.c:
	button for PRIV_SET_RUN_STYLE_ERR is added.

	* new_server_tables.c: copyright notice is updated;
	button for PRIV_SET_RUN_STYLE_ERR is added.

2010-01-08 (r5610) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h: copyright notice is updated;
	new run status RUN_STYLE_ERR is added.

	* compile_packet_4.c, compile_packet_5.c, filter_scan.lex, filter_tree.c, html.c, master_html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, reports.c, runlog.c, runlog_static.c, serve_2.c: copyright notice is updated;
	new run status RUN_STYLE_ERR is supported.

2010-01-06 (r5605) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: copyright notice is updated;
	rule for ej-fix-db program is added.

	* fix-db.c: initial revision.

	* super_html_3.c: copyright notice is updated;
	(super_html_find_lang_id) new function to allocate a suitable
	id for an activated language;
	(super_html_lang_activate) id allocation algorithm is changed.

2010-01-03 (r5603) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h: copyright notice is updated;
	new elements <default_clardb_plugin>, <default_rundb_plugin>
	are supported.

	* ejudge_cfg.c: copyright notice is updated;
	new elements <default_clardb_plugin>, <default_rundb_plugin>
	are supported.

	* ejudge-setup.c: copyright notice is updated;
	setting of <default_clardb_plugin>, <default_rundb_plugin>
	is supported.

	* prepare.c: copyright notice is updated;
	(set_defaults) `clardb_plugin', `rundb_plugin' default values
	are taken from ejudge.xml elements.

2009-11-25 (r5600) Alexander Chernov  <cher@ejudge.ru>

	* csv.c:
	(csv_parse) empty first field is supported.

2009-09-27 (r5596) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_download_runs_confirmation) memory leak is fixed.

	* new_server_html_2.c:
	(ns_write_priv_source) memory leak is fixed.

	* run.c:
	(run_tests) input and output are not saved, if binary.

2009-09-13 (r5593) Alexander Chernov  <cher@ejudge.ru>

	* mischtml.h: copyright notice is updated;
	(html_start_form_id) new function prototype.

	* html_start_form.c: copyright notice is updated;
	(html_start_form_id) new function is implemented.

	* misctext.c:
	(text_table_number_lines) program output is rearranged.

	* new_server_html_2.c:
	(ns_write_priv_source) source code commenting controls are
	  rearranged;
	(ns_write_priv_clar) the user message is properly escaped.

	* new_server_html_3.c: copyright notice is updated;
	priv.js is included in the priveleged header.

2009-09-07 (r5590) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(has_control_characters) new function prototype.

	* new_server_proto.h:
	NEW_SRV_ERR_INV_CHAR error code is added.

	* prepare.h:
	(struct section_problem_data) `disable_ctrl_chars' field is added.

	* super_proto.h:
	editing of the `disable_ctrl_chars' problem configuration variable
	  is supported.

	* misctext.c:
	(has_control_characters) new function.

	* new_server_html.c:
	(priv_submit_run) `disable_ctrl_chars' problem configuration variable
	  is supported;
	(unpriv_submit_run) the same.

	* new_server_proto.c: copyright notice is updated;
	NEW_SRV_ERR_INV_CHAR error code is supported.

	* prepare.c:
	`disable_ctrl_chars' problem configuration variable is supported.

	* prepare_out.c: copyright notice is updated;
	(prepare_unparse_prob) `disable_ctrl_chars' problem configuration
	  variable is supported.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of the `disable_ctrl_chars' problem configuration variable
	  is supported.

2009-09-01 (r5586) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(cmd_import_csv_file) bugs fixes.

2009-08-27 (r5584) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet_1.c:
	win32 compilation fixes.

	* contests.c:
	win32 compilation fixes.

	* errlog.c:
	win32 compilation fixes.

	* new_server_html.c:
	`NO_COOKIE' error is not reported as internal error;

	* runlog.c:
	win32 compilation fixes.

2009-08-12 (r5579) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	libplatform.a is linked to ejudge-control.

	* misctext.h:
	<stdio.h> is included;
	(text_table_number_lines) new function prototype.

	* new-server.h:
	new commands: PRIV_SUBMIT_RUN_JUST_IGNORE, PRIV_SUBMIT_RUN_JUST_OK;
	(ns_write_priv_all_runs) new parameters `first_run_set', `last_run_set' are added;
	(ns_cgi_param_int_opt_2) new function prototype.

	* serve_state.h:
	(struct user_filter_info) new fields `prev_first_run_set', `prev_last_run_set'.

	* filter_eval.c:
	(do_eval) REGEXP (~=) binary operation is supported.

	* filter_expr.y:
	"~=" operation is supported;
	handling of "start" token is fixed;
	(do_regexp) new function.

	* filter_scan.lex:
	"~=" operation is supported.

	* filter_tree.c: copyright notice is updated;
	regular expression matching is implemented;
	(filter_tree_delete) regular expressions are cleaned up;
	(filter_tree_regexp_match) new function to match regular expressions;
	(filter_tree_eval_node) REGEXP (~=) operation is supported.

	* master_html.c:
	(html_reset_filter) `prev_first_run_set', `prev_last_run_set' fields are cleared.

	* misctext.c:
	"compat.h" is included;
	(html_armor_to_file_nbsp) new function is implemented;
	(text_table_number_lines) new function is implemented.

	* new_server_html.c:
	(ns_cgi_param_int) check for empty parameter string is improved;
	(ns_cgi_param_int_opt_2) new function;
	(priv_simple_change_status) new function to handle JUST_OK and JUST_IGNORE commands;
	(priv_main_page) filter parameter handling is improved;
	  call of `ns_write_priv_all_runs' is updated.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) new parameters `first_run_set', `last_run_set' are added;
	  run range display is improved.
	(ns_write_priv_source) the source code displaying is improved;
	  JUST_IGNORE and JUST_OK buttons are added.

	* new_server_html_4.c: copyright notice is updated;
	(do_dump_master_runs) new parameters `first_run_set', `last_run_set' are added;
	  run range handling is improved;
	(cmd_dump_master_runs) parameter handling is improved.

	* new_server_tables.c: buttons for JUST_IGNORE and JUST_OK are added.

	* testing_report_xml.c:
	(parse_test) "exit-code" attribute with negative values is accepted.

2009-07-20 (r5577) Alexander Chernov  <cher@ejudge.ru>

	* errlog.c, parsecfg.c, prepare.c, Makefile.win32.in, contests.c, compile.c:
	win32 compilation fixes.

2009-05-31 (r5573) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_download_runs) bad condition is fixed (gcc 4.4.0 warning).

	* runlog_import.c: copyright notice is updated;
	(runlog_import_xml) bad condition is fixed (gcc 4.4.0 warning).

2009-05-04 (r5571) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(new_write_user_runs) problem-specific `team_enable_rep_view' variable
	  is considered.

2009-05-02 (r5569) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h: copyright notice is updated;
	(struct clar_entry_v1) `run_id' field is added;
	(clar_add_record) `run_id' parameter is added.

	* clarlog.c: copyright notice is updated;
	(clar_add_record) `run_id' parameter is added.

	* convert-clars.c, convert-runs.c: copyright notice is updated;
	"compat.h" is included;
	`close_memstream' is forced to link into the executable.

	* new_server_html.c:
	calls of `clar_add_record' are updated.

	* new_server_html_2.c:
	(ns_write_priv_source) run comment sending form is moved to
	  its proper place.

2009-05-02 (r5566) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	 `SUBMIT_RUN_COMMENT_AND_OK' command is added.

	* new_server_html.c:
	(priv_submit_run_comment) `SUBMIT_RUN_COMMENT_AND_OK' command is supported.

	* new_server_html_2.c:
	(ns_write_priv_source) binary runs may also be commented;
	  `SUBMIT_RUN_COMMENT_AND_OK' command is supported.

	* new_server_tables.c:
	`SUBMIT_RUN_COMMENT_AND_OK' command is supported.

2009-05-02 (r5564) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: copyright notice is updated;
	file_perms.o is added.

	* files.make: copyright notice is updated;
	file_perms.[ch] module is added.

	* super_html_2.c: copyright notice is updated;
	"file_perms.h" is included;
	(rename_files) parameters `group', `mode' are added;
	  file permissions are changed to those defined by `group' and `mode';
	(super_html_commit_contest) `file_group', `file_mode', `dir_group', `dir_mode'
	  contest parameters are supported.

	* super_html_3.c:
	"file_perms.h" is included;
	(check_test_file) `file_group', `file_mode' parameters are added;
	(super_html_check_tests) `file_group', `file_mode', `dir_group', `dir_mode'
	  contest parameters are supported.

2009-05-02 (r5559) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(is_empty_string) new function prototype.

	* new-server.h: copyright notice is updated;
	`CHANGE_FINISH_TIME' command is added.

	* new_server_html.c:
	(do_change_finish_time) new function;
	(priv_contest_operation) `CHANGE_FINISH_TIME' command is handled;
	(is_empty_string) moved to `misctext.[ch]';
	(unpriv_print_status) `finish_time' parameter is added;
	(priv_main_page) finish_time changing is supported;
	(unpriv_view_standings) no standings are shown if disabled in the
	  config file.

	* new_server_tables.c: copyright notice is updated;
	`CHANGE_FINISH_TIME' is handled.

	* misctext.c: copyright notice is updated;
	(is_empty_string) moved from `new_server_html.c'.

	* super_html_4.c:
	editing of `user_contest' is supported.

2009-03-24 (r5555) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h: copyright notice is updated;
	editing of `memoize_user_results' global variable is supported.

	* new_server_html.c:
	(unparse_statement) `is_submittable' parameter is added;
	  the statement output is slightly altered if the problem is not
	  submittable.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c: copyright notice is updated;
	editing of `memoize_user_results' global variable is supported.

2009-02-28 (r5551) Alexander Chernov  <cher@ejudge.ru>

	* contests.h: copyright notice is updated;
	(struct contest_field) `separator', `options' fields are added.

	* html.h: copyright notice is updated;
	(write_xml_testing_report) `user_mode' parameter is added.

	* misctext.h: copyright notice is updated;
	(allowed_list_parse) `separator' parameter is added;
	(allowed_list_map) `separator' parameter is added.

	* prepare.h: copyright notice is updated;
	(struct section_global_data) `memoize_user_results' field is added.

	* serve_state.h: copyright notice is updated;
	(struct serve_user_results) new structure to memoize the user results;
	(struct serve_state) new fields `user_result_a', `user_results'
	  are added;
	(serve_store_user_result) new function prototype;
	(serve_get_user_result_score) new function prototype.

	* testing_report_xml.h: copyright notice is updated;
	(struct testing_report_xml) `time_limit_ms', `real_time_limit_ms',
	  `host' fields added.

	* allowed_list.c: copyright notice is updated;
	(allowed_list_parse) `separator' parameter is added;
	  arbitrary field separator is supported;
	(allowed_list_map) `separator' parameter is added and passed to
	  `allowed_list_parse'.

	* contests.c: copyright notice is updated;
	  "separator" and "options" attributes are supported for
	  <field> element.

	* filter_eval.c: copyright notice is updated;
	`total_score' token is evaluated.

	* filter_expr.y: copyright notice is updated;
	`total_score' expression is parsed.

	* filter_scan.lex: copyright notice is updated;
	`total_score' token is handled.

	* html.c:
	(do_write_kirov_standings) the user result is memoized if
	  `memoize_user_results' mode is enabled;
	(write_xml_team_testing_report) the timings above the time limits
	  are reported better;
	(write_xml_team_accepting_report) the same.

	* master_html.c: copyright notice is updated;
	(write_xml_testing_report) `user_mode' parameter is added;
	  the timings above the time limit are reported differently
	  in the user mode.

	* new_server_html.c:
	(priv_view_users_page) the user score is reported in
	  `memoize_user_results' mode.

	* new_server_html_2.c:
	(ns_write_priv_report) call of `write_xml_testing_report'
	  is updated.

	* new_server_html_5.c: copyright notice is updated;
	(edit_general_form) "options", "separator" attributes are handled
	  for any field.

	* prepare.c:
	`memoize_user_results' global configuration variable is added.

	* serve_state.c: copyright notice is updated;
	memoized user results are supported;
	(serve_store_user_result) new function;
	(serve_get_user_result_score) new function.

	* run.c:
	(generate_xml_report) parameters `report_time_limit_ms',
	  `report_real_time_limit_ms' are added.
	  time limits are put to report;
	  the host name is also put to report;
	(run_tests) the time limit and real time limit are reported to
	  the server.

	* testing_report_xml.c: copyright notice is updated;
	  <host> element and "time-limit-ms" and "real-time-limit-ms"
	  attributes are supported.

2009-01-28 (r5548) Alexander Chernov  <cher@ejudge.ru>

	* run.c: copyright notice is updated;
	(run_tests) `pipe' is commented for win32.

2009-01-28 (r5545) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) number of passed test display
	  is fixed.

2009-01-17 (r5543) Alexander Chernov  <cher@ejudge.ru>

	* sformat.h: copyright notice is updated;
	(sformat_message) `html_escape_flag' parameter is added.

	* copyright.c: copyright notice is updated.

	* html.c, new_server_html.c, new_server_html_2.c:
	calls of `sformat_message' are updated.

	* prepare.c, reports.c, serve_2.c: copyright notice is updated;
	calls of `sformat_message' are updated.

	* sformat.c: copyright notice is updated;
	"misctext.h" is included;
	(sformat_message) `html_escape_flag' parameter is added;
	  html escaping is added.

	* userlist-server.c:
	calls of `sformat_message' are updated;
	(list_user_info) user-provided data is properly html-escaped;
	(do_list_users) the same.

2009-01-12 (r5542) Alexander Chernov  <cher@ejudge.ru>

	* html.c: copyright notice is updated;
	(do_write_kirov_standings) the user name is properly armored;
	(do_write_moscow_standings) the same;
	(do_write_standings) the same;
	(do_write_public_log) the same.

	* new_server_html.c: copyright notice is updated;
	(unpriv_view_clar) the user name is propery armored.

	* new_server_html_2.c: copyright notice is updated;
	(ns_write_priv_all_runs) the user name is propery armored;
	(ns_write_all_clars) the same.

	* userlist-server.c: copyright notice is updated;
	(cmd_team_check_cookie) access to outdated structure bug is fixed;
	(cmd_priv_cookie_login) the same;
	(cmd_get_cookie) the same.

2008-12-31 (r5540) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	missing ncurses is not fatal.

2008-12-31 (r5538) Alexander Chernov  <cher@ejudge.ru>

	* compat.h:
	(close_memstream) new function prototype is added;
	(fmemclose) new function prototype is added.

	* compile.c, contests_2.c, edit-userlist.c, ejudge-configure-compilers.c, ejudge-setup.c, job-server.c, lang_config_vis.c, new-server.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, new_server_html_5.c, opcaps_2.c, parsecfg_2.c, prepare.c, problem_plugin_impl.h, runlog_import.c, serve_2.c, serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super_html_4.c, super-serve.c, uldb_plugin_xml.c, userlist-server.c, vcs.c:
	`close_memstream' is used to close memory streams opened
	with `open_memstream';
	`fmemclose' is used to close memory streams opened with
	`fmemopen'.

2008-12-29 (r5529) Alexander Chernov  <cher@ejudge.ru>

	* runlog_import.c:
	(runlog_import_xml) more debugging output is added.

2008-12-27 (r5519) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_change_status) full score is set if run is RUN_OK.

2008-12-27 (r5503) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`compat.h' is added.

	* compat.h: initial revision.

2008-12-26 (r5499) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	fmemopen.c is added.

	* files.make:
	fmemopen.c is added.

2008-12-26 (r5495) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for fmemopen is added.

	* config.h.in:
	`HAVE_FMEMOPEN' is added.

2008-12-26 (r5494) Alexander Chernov  <cher@ejudge.ru>

	* uudecode.c:
	`myerr' function implementation instead of `error'.

2008-12-26 (r5486) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	LIBINTL, LIBICONV are added;

	* job-server.c:
	(prepare_directory_notify) conditional compilation for F_NOTIFY
	  is added.

	* mime_type.c: copyright notice is updated;
	"config.h" is included;
	check for `ferror_unlocked' is added.

2008-12-26 (r5483) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	checks for ferror_unlocked, fgets_unlocked are added;
	check for F_NOTIFY is added;
	checks for -liconv, -lintl are added.

	* config.h.in:
	`HAVE_FERROR_UNLOCKED', `HAVE_FGETS_UNLOCKED', `HAVE_F_NOTIFY'
	are added.

2008-12-26 (r5481) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	`open_memstream.c' is added.

	* files.make:
	`open_memstream.c' is added.

2008-12-26 (r5475) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for SIOCINQ flag is added.

	* config.h.in:
	HAVE_SIOCINQ is added.

2008-12-26 (r5471) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in:
	HAVE_SO_PASSCRED is added.

2008-12-26 (r5470) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for SO_PASSCRED flag is added.

2008-12-25 (r5468) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	libplatform.a library is added.

	* files.make:
	new files are added: sock_op.h, unix/sock_op_*.c, win32/sock_op_*.c.

	* server_framework.c:
	"sock_op.h" is included;
	(read_from_control_connection) `sock_op_get_creds', `sock_op_get_fds'
	  are used;
	(accept_new_connection) `sock_op_enable_creds' is used.

	* super-serve.c:
	"sock_op.h" is included;
	(accept_new_control_connection) `sock_op_enable_creds' is used;
	(read_from_control_connection) `sock_op_get_creds', `sock_op_get_fds'
	  are used.

	* userlist-server.c:
	"sock_op.h" is included;
	(do_work) `sock_op_enable_creds', `sock_op_get_creds',
	  `sock_op_get_fds' are used.

2008-12-25 (r5464) Alexander Chernov  <cher@ejudge.ru>

	* sock_op.h:
	initial revision

2008-12-23 (r5459) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	(do_loop) `STOP' command is handled much faster;
	  `pselect' system call is used.

2008-12-21 (r5451) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(setup_environment) new function;
	(run_tests) interactive problems are supported.

2008-12-21 (r5449) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in:
	`HAVE_TASK_GETPID', `HAVE_TASK_APPEND' are added.

2008-12-21 (r5448) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	checks for task_GetPid, TSK_APPEND are added;
	check for reuse version is improved.

2008-12-20 (r5444) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(cmd_check_cookie) cookie fixes;
	(cmd_team_check_user) last_login_time is updated on cookie login.

2008-12-20 (r5442) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_upload_csv_results) `add_flag' parameter is added.

	* runlog.h:
	(run_add_record) `sha1' parameter is `const'.

	* new_server_html.c:
	(priv_upload_runlog_csv_1) three upload modes are implemented;
	(priv_upload_runlog_csv_2) three upload modes are implemented.

	* new_server_html_2.c:
	(do_add_row) new function moved out of `ns_upload_csv_runs';
	(ns_upload_csv_runs) refactored;
	(ns_upload_csv_results) `add_flag' parameter is added and handled.

	* runlog.c:
	(run_add_record) `sha1' parameter is `const'.

2008-12-19 (r5440) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `interactor_cmd',
	  `interactor_env' are added.

	* super_proto.h:
	editing of `interactor_cmd', `interactor_env' is supported.

	* prepare.c, prepare_out.c:
	`interactor_cmd', `interactor_env' problem configuration vars are
	added.

	* serve-control.c, super_html_3.c, super_html_4.c, super-serve.c:
	editing of `interactor_cmd', `interactor_env' is supported.

2008-12-18 (r5434) Alexander Chernov  <cher@ejudge.ru>

	* startstop.h: copyright notice is updated;
	stopping and restarting enumeration is added;
	(start_find_process) prototype is added;
	(start_kill) prototype is added.

	* compile.c, job-server.c, new-server.c, super-serve.c, userlist-server.c:
	(main) the server process is never started, if another process
	  is already running.

	* compile-control.c, job-server-control.c, new-server-control.c, super-serve-control.c, userlist-server-control.c:
	"startstop.h" is included;
	(main) the server process discovery is improved.

2008-12-18 (r5430) Alexander Chernov  <cher@ejudge.ru>

	* compile-control.c, ejudge-control.c, ejudge-setup.c, job-server.c, job-server-control.c, new-server.c, new-server-cmd.c, new-server-control.c, super-serve.c, super-serve-control.c, userlist-server.c, userlist-server-control.c :
	programs are renamed:
	  `userlist-server' -> `ej-users';
	  `super-serve' -> `ej-super-server';
	  `compile' -> `ej-compile';
	  `job-server' -> `ej-jobs-server';
	  `new-server' -> `ej-contests'.

2008-12-18 (r5429) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	files are renamed:
	  `compile' -> `ej-compile';
	  `compile-control' -> `ej-compile-control';
	  `run' -> `ej-run';
	  `serve' -> `ej-serve';
	  `userlist-server' -> `ej-users';
	  `userlist-server-control' -> `ej-users-control';
	  `job-server' -> `ej-jobs';
	  `job-server-control' -> `ej-jobs-control';
	  `job-server-cmd' -> `ejudge-jobs-cmd';
	  `super-serve' -> `ej-super-server';
	  `super-serve-control' -> `ej-super-server-control';
	  `convert-clars' -> `ej-convert-clars';
	  `convert-runs' -> `ej-convert-runs';
	  `edit-userlist' -> `ejudge-edit-users';
	  `execute' -> `ejudge-execute';
	  `new-server' -> `ej-contests';
	  `new-server-cmd' -> `ejudge-contests-cmd';
	  `new-server-control' -> `ej-contests-control';
	`collect-emails', `slice-userlist' are no longer compiled.

2008-12-18 (r5428) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.c:
	(ejudge_cfg_parse) values of `serve_path' and `run_path' are ignored
	  and always replaced with the default.

	* new_server_html.c:
	(ns_handle_http_request) client program is renamed:
	  `new-server-cmd' -> `ejudge-contests-cmd'.

2008-12-18 (r5426) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	files renamed:
	  `serve' -> `ej-serve';
	  `runs' -> `ej-runs'.

2008-12-17 (r5424) Alexander Chernov  <cher@ejudge.ru>

	* super_html_5.c:
	initial revision

2008-12-17 (r5423) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`super_html_5.c' is added.

	* prepare.h:
	(cntsprob_clear_field) new function prototype;
	(cntsprob_is_settable_field) new function prototype;
	(cntsprob_is_inheritable_field) new function prototype.

	* super_html.h:
	(ss_cgi_param) prototype is added;
	(ss_write_html_header) prototype is added;
	(ss_write_html_footer) prototype is added;
	(ss_dojo_button) prototype is added;
	(super_serve_op_browse_problem_packages) prototype is added;
	(super_serve_op_package_operation) prototype is added;
	(super_serve_op_edit_problem) prototype is added;
	(super_html_add_problem) prototype is added;
	(super_html_add_abstract_problem) prototype is added.

	* super_proto.h:
	new operations are added.

	* prepare.c:
	(cntsprob_copy_and_set_default) fixed;
	(cntsprob_clear_field) new function;
	(cntsprob_is_settable_field) new function;
	(cntsprob_is_inheritable_field) new function.

	* super_html.c:
	(super_html_main_page) link to problem editor is added.

	* super_html_3.c:
	`std_checkers' -> `super_html_std_checkers';
	(super_html_add_problem) moved out of `super_html_prob_cmd';
	(super_html_add_abstract_problem) moved out of `super_html_prob_cmd'.

	* super_html_4.c:
	progress...

2008-12-14 (r5414) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	  `score_system_val' -> `score_system';
	  `rounding_mode_val' -> `rounding_mode'.

	* html.c, master_html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, prepare.c, prepare_out.c, serve.c, serve_2.c, serve_state.c, super_html_3.c, super_html_4.c, reports.c, run.c:
	global configuration variables are renamed:
	  `score_system_val' -> `score_system';
	  `rounding_mode_val' -> `rounding_mode'.

2008-12-12 (r5411) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.h: copyright notice is updated;
	(struct config_parse_info) `parse_func' field is added.

	* prepare.h:
	(struct section_problem_data) `type_val' -> `type'.

	* html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, prepare.c, prepare_out.c, reports.c, run.c, serve_2.c, super_html_3.c:
	struct section_problem_data field is renamed:
	  type_val -> type.

	* parsecfg.c:
	(copy_param) "f" parse specification is supported.

2008-12-12 (r5409) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) fields are renamed:
	  contest_finish_time_d -> contest_finish_time;
	  stand_ignore_after_d -> stand_ignore_after;
	  appeal_deadline_d -> appeal_deadline;
	(struct section_problem_data) fields are renamed:
	  t_start_date -> start_date;
	  t_deadline -> deadline.

	* html.c, new_server_html.c, new_server_html_2.c, new_server_html_4.c, prepare.c, prepare_out.c, serve.c, serve_2.c, serve_state.c, super_html_3.c, super_html_4.c:
	fields are renamed:
	  contest_finish_time_d -> contest_finish_time;
	  stand_ignore_after_d -> stand_ignore_after;
	  appeal_deadline_d -> appeal_deadline;
	  t_start_date -> start_date;
	  t_deadline -> deadline.

	* parsecfg.c:
	"xml_utils.h" is included;
	(copy_param) "t" type specifier is supported.

2008-12-12 (r5407) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(cntsprob_is_undefined) new function prototype.

	* super_proto.h:
	new operations are added.

	* super-serve.h:
	(struct sid_state) `prob_show_adv' field is added.

	* prepare.c:
	(cntsprob_is_undefined) new function.

	* super_html_4.c: in progress...

2008-12-10 (r5406) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	large tables are allocated on heap in standings functions.

2008-12-07 (r5404) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_ip_users) implemented.

2008-12-07 (r5402) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new requests `VIEW_USER_IPS', `VIEW_IP_USERS' are added;
	(ns_write_user_ips) new function prototype;
	(ns_write_ip_users) new function prototype.

	* new_server_html.c:
	(priv_view_user_ips) new function;
	(priv_view_ip_users) new function;
	(priv_main_page) IP addresses statistics page links are added;
	`VIEW_USER_IPS', `VIEW_IP_USERS' requests are handled.

	* new_server_html_2.c:
	(ns_write_user_ips) new function;
	(ns_write_ip_users) new function (not yet implemented).

2008-12-06 (r5400) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of the new problem configuration variables
	  `stand_name', `stand_column', `internal_name' is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new problem configuration variables
	  `stand_name', `stand_column', `internal_name' is supported.

	* sformat.c:
	(sformat_message) format conversions `PS', `PL' for
	  `stand_name' and `internal_name' problem configuration
	  variables are added.

2008-12-06 (r5398) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_user_problems_summary) bug in olympiad accepting mode
	  summary display is fixed.

2008-12-06 (r5396) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	variable substitution is added for XML answers.

2008-12-06 (r5394) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(struct section_problem_data) new fields `stand_name', `stand_column',
	  `internal_name' are added.

	* html.c:
	`stand_name', `stand_column' problem configuration variables
	are supported.

	* prepare.c:
	`stand_name', `stand_column', `internal_name' problem configuration
	variables are added.

2008-12-05 (r5392) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `unhandled_vars' is not private;
	(struct section_language_data) `unhandled_vars' is not private.

	* super_html.h:
	(super_load_cs_languages) new function prototype;
	(super_html_lang_activate) new function prototype;
	(super_html_lang_deactivate) new function prototype.

	* super_proto.h:
	operations for language editing are added.

	* super-serve.h:
	(struct sid_state) `cur_lang', `cur_prob' fields are added.

	* super_html_3.c:
	(super_load_cs_languages) renamed from `load_cs_languages';
	(super_html_lang_activate) function is outlined from
	  `super_html_lang_cmd';
	(super_html_lang_deactivate) the same.

	* super_html_4.c:
	language editing is implemented.

2008-12-02 (r5384) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.win32.in: copyright notice is updated;
	WIN32_CFILES, WIN32_RUNFILES are added;
	use of `revinfo' is updated.

	* files.make:
	contests_2.c, opcaps_2.c are added.

	* interrupt.h: copyright notice is updated;
	(interrupt_flag_interrupt) new function prototype;
	(interrupt_flag_sighup) new function prototype.

	* uldb_plugin.h:
	<time.h> is included.

	* charsets.c:
	<malloc.h> is included on MinGW;
	(charset_decode_buf) two variants of `iconv' are supported: the linux
	  (char ** as the second arg), and the MinGW (const char** as the
	  second arg).

	* compile.c:
	Win32 portability fixes.

	* contests.c:
	functions, which change the `contest_desc' structure are moved to
	  `contests_2.c'.

	* contests_2.c: initial revision.

	* ejudge_cfg.c:
	conditional inclusion of <pwd.h>;
	<malloc.h> included on MinGW;
	(parse_user_map) user mapping is skipped, if <pwd.h> is missing.

	* filehash.c: copyright notice is updated;
	<malloc.h> is included on MinGW.

	* expat_iface.c, filter_tree.c, userlist.c, userlist_xml.c:
	<malloc.h> is included on MinGW.

	* opcaps.c:
	<malloc.h> is included on MinGW;
	(opcaps_unparse) moved to `opcaps_2.c'.

	* opcaps_2.c: initial revision.

	* prepare.c:
	(prepare_parse_variant_map) `open_memstream' is used only if
	  exists on the platform.

	* random.c: copyright notice is updated;
	`rand()' is used instead of `random()'.

	* run.c:
	"startstop.h" is included;
	(set_self_args) removed;
	(main) `start_set_self_args' is used instead of `set_self_args';
	  `start_restart' is used.

	* team_extra.c:
	<malloc.h> is included on MinGW;
	various portability fixes.

2008-12-02 (r5379) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac, config.h.in:
	check for pwd.h is added;
	checks for truncate, setsid are added.

2008-12-02 (r5377) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for `open_memstream' is added.

	* config.h.in:
	`HAVE_OPEN_MEMSTREAM' is added.

2008-12-01 (r5375) Alexander Chernov  <cher@ejudge.ru>

	* config.h.in:
	HAVE_ICONV_H, HAVE_STRNLEN, CONF_ICONV_NEEDS_CONST are added.

2008-12-01 (r5374) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	checks for iconv.h, strnlen are added;
	check for `const' argument of iconv is added.

2008-11-30 (r5372) Alexander Chernov  <cher@ejudge.ru>

	* problem_plugin.h: copyright notice is updated;
	problem plugin version number is increased to 2;
	(struct problem_plugin_iface) new fields `sizes_array',
	  `sizes_array_size'.

	* serve_state.h:
	new exported variables (constants): `serve_struct_sizes_array',
	  `serve_struct_sizes_array_size', `serve_struct_sizes_array_num'.

	* new_server_html.c:
	(load_problem_plugin) structure sizes checking is implemented.

2008-11-30 (r5370) Alexander Chernov  <cher@ejudge.ru>

	* contest_plugin.h: copyright notice is updated;
	plugin interface version number is increased to 2;
	(struct contest_plugin_iface) new fields `sizes_array',
	  `sizes_array_size' are added.

	* serve_state.c:
	(serve_state_load_contest) structure sizes check is performed upon
	  loading a contest plugin.

2008-11-30 (r5367) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	new types `ejstrlist_t' and `ejenvlist_t' are added.

	* misctext.h:
	(split_to_lines) new function prototype;
	(num_to_size_str) new function prototype;
	(size_t_to_size_str) new function prototype.

	* prepare.h:
	(struct section_global_data) `unhandled_vars' is not marked as
	  meta_private;
	(struct section_problem_data) the types of `checker_env' and
	  `valuer_env' fields are changed;
	(struct section_language_data) the type of `compiler_env' is
	  changed;
	(struct section_tester_data) the types of `start_env', `checker_env'
	  are changed.

	* super_proto.h: new operations are added.

	* misctext.c:
	(split_to_lines) new function;
	(num_to_size_str) function moved here from `super_html_3.c';
	(size_t_to_size_str) function moved here from `super_html_3.c'.

	* super_html_3.c:
	(num_to_size) moved to `misctext.c' as `num_to_size_str';
	(size_t_to_size) moved to `misctext.c' as `size_t_to_size_str'.

	* super_html_4.c: progress...

2008-11-23 (r5363) Alexander Chernov  <cher@ejudge.ru>

	* meta_generic.h:
	(struct meta_methods) new structure to collect all access functions
	  in one place.

	* prepare.h:
	(struct section_global_data) `score_system_val' is not marked as
	  `meta_private'.

	* super_proto.h:
	new operations for new contest edit are added.

	* super-serve.h:
	(struct sid_state) `edit_page' field is added.

	* super_html_4.c: in progress...

	* super-serve.c:
	(super_serve_clear_edited_contest) `edit_page' is cleared.

2008-11-21 (r5360) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_get_all_statistics) new function prototype.

	* new_server_html.c:
	(priv_view_users_page) the number of user's submits and the total size
	  of user's submits is displayed for each user.

	* runlog.c:
	(run_get_all_statistics) new function.

2008-11-20 (r5354) Alexander Chernov  <cher@ejudge.ru>

	* new-client.c: copyright notice is updated;
	(struct client_section_global_data) renamed from
	  `struct section_global_data'.

2008-11-20 (r5352) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rules for `prepare_meta.[ch]' are added.

	* ej_types.h:
	`ejintsize_t' type is added.

	* prepare.h:
	metageneration-related changes;
	doxygen comments are added for `struct section_global_data'.

	* meta_generic.c:
	(meta_build_automaton) NULL name is allowed and skipped.

2008-11-18 (r5339) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_submit_clar) URL generation is fixed;
	(priv_submit_run_comment) the same;
	(priv_clar_reply) the same.

	* serve_2.c:
	(serve_notify_user_run_status_change) URL generation is fixed.

2008-11-18 (r5338) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_locked_cnts_dialog) new function prototype.

	* super_proto.h:
	new actions are added.

	* super-serve.h:
	(super_serve_move_edited_contest) new function prototype;
	(super_serve_sid_state_get_cnts_editor_nc) new function prototype.

	* super_html.c:
	(super_html_locked_cnts_dialog) new function;
	(super_html_create_contest_2) checked if the new contest number
	  is already used.

	* super_html_4.c:
	(cmd_locked_cnts_forget) new function;
	(cmd_locked_cnts_continue) new function;
	(cmd_edit_contest_page) `super_html_locked_cnts_dialog' is used.

	* super-serve.c:
	"super-serve_meta.h" is included;
	(prepare_serve_serving) does nothing;
	(sid_state_add) new parameters `user_id', `user_login', `user_name'
	  are added;
	(sid_state_get) new parameters `user_id', `user_login', `user_name'
	  are added;
	(super_serve_sid_state_get_cnts_editor_nc) new function;
	(super_serve_move_edited_contest) new function;
	(cmd_main_page) contest edited in another session situations are
	  supported.

2008-11-18 (r5336) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct sid_state) new fields `user_id', `user_login', `user_name'.

	* super-serve.c:
	(sid_state_clear) `user_login', `user_name' are freed.

2008-11-17 (r5326) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	icons are installed;
	ejudge-upgrade-web script is installed.

	* ejudge-setup.c:
	(generate_install_script) `priv.js' is symlinked, and `actions.js'
	  is not.

2008-11-17 (r5324) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	`ac_cv_httpd_cgi_bin_dir', `ac_cv_httpd_htdocs_dir' are exported;
	style/ejudge-upgrade-web script is supported.

2008-11-17 (r5321) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	`xml_file' editing is supported instead of `statement_file'.

	* prepare_out.c:
	(prepare_unparse_prob) `xml_file' variable is handled;
	  `statement_file' variable is no longer handled.
	(prepare_unparse_unhandled_prob) `xml_file' variable is no longer
	  handled;
	  `statement_file' variable is handled.
	(prob_instr) `xml_file' is handled instead of `statement_file'.

	* serve-control.c, super_html_3.c, super-serve.c:
	`xml_file' editing is supported instead of `statement_file'.

	* userlist_xml.c:
	(do_parse_user) empty e-mails are handled.

2008-11-17 (r5315) Alexander Chernov  <cher@ejudge.ru>

	* run_packet.h: copyright notice is updated;
	(struct run_request_packet) the `notify_flag' field is added;
	(struct run_reply_packet) the `notify_flag' field is added.

	* run_packet_priv.h:
	FLAGS_NOTIFY is added;
	(struct run_reply_bin_packet) `flags' field is added.

	* run.c:
	(do_loop) `notify_flag' copied from the input to the output packet.

	* new_server_html.c:
	calls of `serve_compile_request' and `serve_run_request' are updated;
	`serve_send_clar_reply_email' renamed to `serve_send_email_to_user';
	(priv_change_status) change status e-mail notifications are supported.

	* new_server_html_4.c:
	(cmd_submit_run) calls of `serve_compile_request' and
	  `serve_run_request' are updated.

	* run_packet_1.c, run_packet_2.c, run_packet_4.c, run_packet_5.c:
	`notify_flag' is supported.

	* serve_2.c:
	<libintl.h> is included;
	(serve_compile_request) the `notify_flag' parameter is added;
	(serve_run_request) the `notify_flag' parameter is added;
	(serve_send_email_to_user) renamed from `serve_send_clar_reply_email';
	(serve_notify_user_run_status_change) new function;
	(serve_read_compile_packet) status change notifications are supported;
	(serve_read_run_packet) status change notifications are supported.

	* serve_state.h:
	(struct compile_run_extra) the `notify_flag' field is added;
	(serve_compile_request) the `notify_flag' parameter is added;
	(serve_run_request) the `notify_flag' parameter is added;
	(serve_send_email_to_user) renamed from `serve_send_clar_reply_email';
	(serve_notify_user_run_status_change) new function prototype.

2008-11-16 (r5313) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new fields `notify_clar_reply',
	  `notify_status_change'.

	* serve_state.h:
	(serve_send_clar_reply_email) new function.

	* super_proto.h:
	editing of the `notify_clar_reply', `notify_status_change' global
	configuration variables is supported.

	* new_server_html.c:
	(priv_submit_clar) user e-mail notification is supported;
	(priv_submit_run_comment) the same;
	(priv_clar_reply) the same.

	* prepare.c, prepare_out.c:
	new global variables `notify_clar_reply', `notify_status_change'
	are supported.

	* serve_2.c:
	(serve_send_clar_reply_email) new function.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `notify_clar_reply', `notify_status_change' global
	configuration variables is supported.

2008-11-15 (r5311) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin_file.c, runlog.c:
	(reset) parameters are renamed:
	  `new_duration' -> `init_duration',
	  `new_sched_time' -> `init_sched_time',
	  `new_finish_time' -> `init_finish_time'.

2008-11-15 (r5309) Alexander Chernov  <cher@ejudge.ru>

	* contests.h, super_proto.h:
	<start_date> is renamed to <sched_time>.

	* rldb_plugin.h:
	(rldb_plugin_iface::open) `init_sched_time' parameter is added;
	(rldb_plugin_iface::reset) `new_sched_time' parameter is added.

	* runlog.h:
	(run_open) `init_sched_time' parameter is added;
	(run_reset) `new_sched_time' parameter is added.

	* serve_state.h:
	(serve_reset_contest) `cnts' parameter is added.

	* contests.c, serve-control.c, super_html.c, super_html_2.c, super_html_4.c, super-serve.c:
	<start_date> is renamed to <sched_time>.

	* convert-runs.c:
	(main) calls of `run_open' are updated.

	* new_server_html.c:
	(priv_contest_operation) call of `serve_reset_contest' is updated.

	* rldb_plugin_file.c:
	(read_runlog) `init_sched_time' parameter is added;
	  `init_sched_time' is written to empty runlog;
	(do_run_open) `init_sched_time' parameter is added;
	  call of `read_runlog' is updated;
	(open_func) `init_sched_time' parameter is added;
	  call of `do_run_open' is updated;
	(reset_func) `new_sched_time' parameter is added.

	* runlog.c:
	(run_open) `init_sched_time' parameter is added;
	  call of `iface->open' is updated;
	(run_reset) `new_sched_time' parameter is added;
	  call of `iface->reset' is updated.

	* serve.c:
	(main) call of `run_open' is updated.

	* serve_2.c:
	(serve_reset_contest) `cnts' parameter is added;
	  call of `run_reset' is updated.

	* serve_state.c:
	(serve_state_load_contest) call of `run_open' is updated.

2008-11-15 (r5306) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for <start_date> element is added.

	* super_proto.h:
	editing of <start_date> contest element is supported.

	* contests.c:
	support for <start_date> element is added.

	* new_server_proto.c:
	`printing error' message is changed.

	* serve-control.c, super_html.c, super_html_2.c, super_html_4.c, super-serve.c:
	editing of <start_date> element is supported.

2008-11-15 (r5304) Alexander Chernov  <cher@ejudge.ru>

	* filter_tree.c: copyright notice is updated;
	"xml_utils.h" is included;
	(filter_tree_eval_node) `xml_parse_date' is used.

	* new_server_html.c, new_server_html_4.c:
	(do_schedule) `xml_parse_date' is used;
	  the contest start time is reset, if date 0 is specified.

	* prepare.c:
	"xml_utils.h" is included;
	(parse_date) `xml_parse_date' is used.

	* userlist.c:
	(userlist_parse_date_2) the hour is not set to 12.

2008-11-15 (r5300) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	$(ARCH)/startstop.o is added to the list of objects.

	* files.make:
	startstop.c is moved to `unix' subdirectory.

	* startstop.c:
	moved to `unix' subdirectory.

2008-11-14 (r5295) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	style/actions.js is removed.

	* new-server.h:
	(struct http_request_info) new field `script_name';
	  new field `json_reply';
	NEW_SRV_ACTION_JSON_USER_STATE renamed from
	NEW_SRV_ACTION_XML_USER_STATE.

	* make-js-actions.c:
	NEW_SRV_ACTION_JSON_USER_STATE renamed from
	NEW_SRV_ACTION_XML_USER_STATE.

	* new_server_html.c:
	(unpriv_page_header) `do_xml_user_state' is renamed to
	  `do_json_user_state';
	(write_alternatives_file) updated to dojo-1.2;
	(unpriv_load_html_style) updated to dojo-1.2;
	(unparse_answers) updated to dojo-1.2;
	(unpriv_main_page) updated to dojo-1.2;
	(do_json_user_state) renamed from `do_xml_user_state';
	(unpriv_json_user_state) renamed from `unpriv_xml_user_state';
	(unpriv_xml_update_answer) updated to dojo-1.2 and json;
	(ns_handle_http_request) `json_reply' is handled.

2008-11-13 (r5289) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	(generate_daily_statistics) check for an empty name is improved.

	* new_server_html_2.c:
	(ns_write_exam_info) `m' variable is properly initialized.

	* serve_2.c:
	(serve_check_stat_generation) catching-up report generation
	  is implemented.

2008-11-13 (r5287) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	master_html.c:
	(html_reset_clar_filter) filter parameters are properly reset.

2008-11-13 (r5285) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(chop2) new function prototype.

	* new-server.h:
	(ns_write_all_clars) `first_clar', `last_clar' are strings and
	  renamed to `first_clar_str', `last_clar_str'.

	* misctext.c:
	(chop2) new function.

	* new_server_html.c:
	(priv_main_page) clar filter parameters handling is improved.

	* new_server_html_2.c:
	(parse_clar_num) new static function;
	(ns_write_all_clars) `first_clar', `last_clar' are strings and
	  renamed to `first_clar_str', `last_clar_str';
	  clar filter parameters handling is improved.

	* reports.c:
	(chop2) removed.

	* serve_state.c:
	(user_filter_info_allocate) clar filter parameters are initialized.

2008-11-10 (r5271) Alexander Chernov  <cher@ejudge.ru>

	* common_plugin.h:
	(plugin_get) new function prototype.

	* clarlog.c, runlog.c, userlist-server.c:
	functions from common_plugin.c are used to keep the list of plugins.

	* common_plugin.c:
	(plugin_get) initial revision.

2008-11-10 (r5265) Alexander Chernov  <cher@ejudge.ru>

	* cldb_plugin.h:
	"common_plugin.h" is included;
	`struct common_plugin_iface' is now the basic type.

	* rldb_plugin.h:
	"common_plugin.h" is included;
	`struct common_plugin_iface' is now the basic type.

	* uldb_plugin.h:
	"common_plugin.h" is included;
	`struct common_plugin_iface' is now the basic type.

	* clarlog.c:
	(clar_open) new plugin interface is supported.

	* cldb_plugin_xml.c:
	(cldb_plugin_file) initialization is updated;
	(init_func) prototype is changed;
	(finish_func) prototype is changed;
	(prepare_func) prototype is changed.

	* rldb_plugin_xml.c:
	(rldb_plugin_file) initialization is updated;
	(init_func) prototype is changed;
	(finish_func) prototype is changed;
	(prepare_func) prototype is changed.

	* runlog.c:
	(run_open) new plugin interface is supported.

	* uldb_plugin_xml.c:
	(uldb_plugin_xml) initialization is updated;
	(init_func) prototype is changed;
	(finish_func) prototype is changed;
	(prepare_func) prototype is changed.

	* userlist-server.c:
	(load_plugins) new plugin interface is supported;
	(convert_database) new plugin interface is supported.

2008-11-10 (r5260) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	common_plugin.[ch] are added.

	* common_plugin.h:
	initial revision.

	* ejudge_cfg.h:
	(ejudge_cfg_get_plugin_config) new function prototype.

	* uldb_plugin.h:
	(init) parameter is removed;
	(finish) new method is added;
	(prepare) `const' removed from `config' parameter.

	* common_plugin.c:
	initial revision.

	* ejudge_cfg.c:
	(ejudge_cfg_get_plugin_config) new function.

	* uldb_plugin_xml.c:
	(init_func) parameter is removed;
	(finish_func) new function;
	(prepare_func) `const' removed from `config' parameter.

	* userlist-server.c:
	(load_plugins) calls of `init' are updated.

2008-11-09 (r5256) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	plugins/mysql-common directory is added.

	* Makefile.unix.in:
	plugins/mysql-common directory is added.

2008-11-09 (r5253) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(contests_remove_nth_permission) new function prototype;
	(contests_add_permission) new function prototype;
	(contests_copy_permissions) new function prototype;
	(contests_set_permission) new function prototype;
	(contests_set_default) new function prototype;
	(contests_add_ip) new function prototype;
	(contests_get_ip_rule_nc) new function prototype;
	(contests_delete_ip_rule) new function prototype;
	(swap_tree_nodes) new (static) function prototype;
	(contests_forward_ip_rule) new function prototype;
	(contests_backward_ip_rule) new function prototype;
	(contests_set_general_field) new function prototype;
	(contests_delete_member_fields) new function prototype;
	(contests_set_member_counts) new function prototype;
	(contests_set_member_field) new function prototype;
	(CNTS_FIRST_PERM) new macro;
	(CNTS_NEXT_PERM_NC) new macro;
	(CNTS_NEXT_PERM) new macro;
	(CNTS_FIRST_IP) new macro;
	(CNTS_NEXT_IP) new macro;
	(CNTS_FIRST_IP_NC) new macro;
	(CNTS_NEXT_IP_NC) new macro.

	* super_html.h:
	(super_html_edited_cnts_dialog) `config' is now a `const' pointer;
	  `new_edit_mode' parameter is added.

	* super_proto.h:
	many new SSERV_OP_* commands.

	* super-serve.h:
	(struct super_http_request_info) `config', `system_login' fields
	  are added;
	(super_serve_sid_state_get_max_edited_cnts) new function prototype;
	(super_serve_sid_state_get_cnts_editor) new function prototype.

	* contests.c:
	(contests_remove_nth_permission) new function;
	(contests_add_permission) new function;
	(contests_copy_permissions) new function;
	(contests_set_permission) new function;
	(contests_set_default) new function;
	(contests_add_ip) new function;
	(contests_get_ip_rule_nc) new function;
	(contests_delete_ip_rule) new function;
	(swap_tree_nodes) new (static) function;
	(contests_forward_ip_rule) new function;
	(contests_backward_ip_rule) new function;
	(contests_set_general_field) new function;
	(contests_delete_member_fields) new function;
	(contests_set_member_counts) new function;
	(contests_set_member_field) new function.

	* new_server_html.c:
	(priv_view_users_page) contests permissions iterator is used.

	* super_html.c:
	(super_html_main_page) links to new contest creation interface
	  are added;
	(super_html_edited_cnts_dialog) `new_edit_mode' parameter is added;
	(super_html_create_contest) call of the above function is updated;
	(print_permissions) `CNTS_FIRST_PERM'/`CNTS_NEXT_PERM_NC' is used;
	(super_html_edit_permission) the same.

	* super_html_2.c:
	(swap_tree_nodes) moved to `contests.c';
	(super_html_set_contest_var) many code were moved into separate
	  functions in `contests.c'.

	* super_html_4.c:
	contest.xml editing is completed.

	* super-serve.c:
	(super_serve_sid_state_get_max_edited_cnts) new function;
	(super_serve_sid_state_get_cnts_editor) new function;
	(cmd_main_page) call of `super_html_edited_cnts_dialog' is updated;
	(cmd_http_request) `.system_login' and `.config' fields are filled.

2008-11-05 (r5244) Alexander Chernov  <cher@ejudge.ru>

	* contests.c:
	"contests_meta.h" is included;
	fields are iterated in many places.

	* super_html.c:
	capability table `contest_cap_descs' is fixed.

2008-11-04 (r5242) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h:
	outdated stuff is removed;
	(opcaps_is_contest_cap) function is removed.

	* opcaps.c:
	outdated stuff is removed;
	(opcaps_is_contest_cap) function is removed;
	(opcaps_parse) predefined capsets are supported;
	(opcaps_unparse) predefined capsets are supported.

	* super_html.c:
	(super_html_print_caps_table) `opcaps_is_contest_cap' is removed.

2008-11-04 (r5239) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	-std=gnu99 compilation flag is added;
	metainformation generation rules are added.

	* files.make:
	meta_generic.[ch] are added.

	* contests.h:
	fields renamed:
	  new_managed -> managed;
	  default_locale_val -> default_locale_num;
	  enable_forgot_password -> enable_password_recovery
	fields removed:
	  client_disable_team;
	  client_ignore_time_skew;
	`ejbytebool_t' is used instead of `unsigned char';
	(contests_get_path_in_conf_dir) new function prototype;
	(contests_get_form_field_name) new function prototype;
	(contests_get_member_field_name) new function prototype;
	(contests_get_member_name) new function prototype.

	* ej_types.h: copyright notice is updated;
	`ejbytebool_t', `ejintbool_t' types are added.

	* l10n.h: copyright notice is updated;
	(l10n_html_locale_select_2) new function prototype;
	(l10n_unparse_locale) new function prototype.

	* opcaps.h: enumeration for predefined capability sets is added;
	(opcaps_is_predef_caps) new function prototype;
	(opcaps_get_predef_caps) new function prototype.

	* pathutl.h:
	gnu99 compatibility fixes.

	* super_html.h:
	"opcaps.h" is included;
	(super_html_unparse_access) new function prototype;
	(super_html_copy_contest_access) new function prototype;
	(super_html_print_caps_table) new function prototype;
	(html_numeric_select) new function prototype.

	* super_proto.h:
	fixes for renamed contests fields;
	new `SSERV_OP_*' constants are added.

	* super-serve.h:
	"opcaps.h" is included;
	(struct sid_state) `ejintbool_t' is used instead of `int';
	  `*_loaded' fields are added;
	(struct super_http_request_info) new fields added.

	* contests.c:
	  "disable_member_delete" attribute is added;
	  "enable_password_recovery" attribute is added;
	(contests_get_path_in_conf_dir) new function;
	(contests_get_form_field_name) new function;
	(contests_get_member_field_name) new function;
	(contests_get_member_name) new function.

	* contest_tmpl.c, new_server_html.c, new_server_html_3.c, new_server_html_4.c, new_server_html_5.c, serve-control.c, super_html.c, super_html_2.c, super-serve.c, userlist-server.c:
	changes according to renamed and removed contests fields.

	* l10n.c:
	(l10n_html_locale_select_2) new function;
	(l10n_unparse_locale) new function.

	* opcaps.c:
	(opcaps_is_predef_caps) new function;
	(opcaps_get_predef_caps) new function.

	* teamdb.c:
	(teamdb_lookup_client) gnu99 compatibility fixes.

2008-11-04 (r5237) Alexander Chernov  <cher@ejudge.ru>

	* meta_generic.h: initial revision.

	* meta_generic.c: initial revision.

	* super_html_4.c: lots of code for new contest editing is written.

2008-10-30 (r5232) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_html_err_simple_registered) new function prototype.

	* uldb_plugin.h:
	(struct uldb_plugin_iface) `set_simple_reg' method is added.

	* userlist_clnt.h:
	(userlist_clnt_recover_passwd_2) `p_regstatus' parameter is added.

	* userlist_proto.h:
	new error `ULS_ERR_SIMPLE_REGISTERED' is added;
	(struct userlist_pk_new_password) `regstatus' field is added.

	* new_server_html.c:
	(unpriv_page_forgot_password_3)
	  call of `userlist_clnt_recover_passwd_2' is updated;
	  if the user is not registered for the contest, the submit button
	  is works as login to `new-register' program.

	* new_server_html_3.c:
	(ns_html_err_simple_registered) new function.

	* new_server_html_5.c:
	(cmd_login) `simple_registered' error is displayed on occasion.

	* uldb_plugin_xml.c:
	(set_simple_reg_func) new function is implemented.

	* userlist_proto.c: copyright notice is updated;
	new error message is added.

	* userlist-server.c:
	(cmd_recover_password_1) unregistered user is allowed to recover
	  its password if it is simple_registered;
	(cmd_recover_password_2) the same;
	  registration status is passed back to the client;
	  `simple_registration' flag is cleared upon successful password
	  recovery;
	(cmd_check_user) `ULS_ERR_SIMPLE_REGISTERED' error code is returned
	  where appropriate.

2008-10-12 (r5193) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	compilation of `convert-clars' is added.

	* files.make:
	`convert-runs.c' is added.

	* rldb_plugin.h:
	(rldb_plugin_iface::set_duration) `duration' is int, not time_t;
	(rldb_plugin_iface::set_entry) `flags' parameter is added;
	(rldb_plugin_iface::put_entry) new method;
	(rldb_plugin_iface::put_header) new method.

	* runlog.h:
	(run_set_hidden) renamed from `run_forced_set_hidden';
	(run_set_judge_id) renamed from `run_forced_set_judge_id';
	(run_put_entry) new function prototype
	(run_put_header) new function prototype.

	* convert-runs.c: initial revision.

	* rldb_plugin_file.c:
	(set_duration_func) `duration' parameter is int;
	(set_entry_func) `flags' parameter is added.

	* runlog.c:
	(run_open) teamdb_state == NULL is supported;
	(run_set_entry) call of `iface->set_entry' is updated;
	(run_set_hidden) renamed from `run_forced_set_hidden';
	(run_set_judge_id) renamed from `run_forced_set_judge_id';
	(update_user_flags) teamdb_state == NULL is supported;
	(run_put_entry) new function;
	(run_put_header) new function.

	* serve_2.c:
	(serve_collect_virtual_stop_events)
	  `run_set_hidden' renamed from `run_forced_set_hidden';
	(serve_judge_virtual_olympiad)
	  `run_set_judge_id' renamed from `run_forced_set_judge_id'.

2008-10-11 (r5190) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h:
	(rldb_plugin_iface::add_entry) run_entry and flags arguments are added.

	* runlog.h:
	`RUN_ENTRY_*' are renamed to `RE_*'.

	* runlog_state.h:
	`runs' array is read-only by default.

	* clarlog.c:
	(clar_add_record) a bug is fixed.

	* new_server_html.c, new_server_html_2.c, runlog_import.c, serve_2.c:
	`RUN_ENTRY_*' are renamed to `RE_*'.

	* rldb_plugin_file.c:
	(add_entry_func) new parameters are added;
	(close_func) `runs' array is freed.

	* runlog.c:
	`RUN_ENTRY_*' are renamed to `RE_*';
	the runs array is strictly read-only.

2008-10-09 (r5179) Alexander Chernov  <cher@ejudge.ru>

	* rldb_plugin.h:
	implemented.

	* runlog.h:
	(run_open) function prototype is changed;
	(runlog_check) arguments are now const pointers.

	* runlog_state.h:
	initial revision.

	* cldb_plugin_file.h:
	(struct clar_header_v1) moved here from `plugin_state.h'.

	* rldb_plugin_file.c:
	implemented.

	* runlog.c:
	the file read/write stuff is moved to `rldb_plugin_file.c'.

	* serve.c:
	(main) use of `run_open' is changed.

	* serve_state.c:
	(serve_state_load_contest) call of `run_open' is updated.

2008-10-06 (r5175) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct contest_extra) `contest_id' field is added.

	* new_server_html.c:
	contest extra information storage is changed: instead of direct
	  indexing by contest_id, a sorted array of extras is stored,
	  looked up by a binary search.

2008-10-06 (r5174) Alexander Chernov  <cher@ejudge.ru>

	* collect-emails.c:
	(add_to_set) `contests_get_list' is used instead of
	  `contests_get_set'.

	* new_server_html.c:
	minor contest lookup optimizations.

	* super_html.c:
	(super_html_main_page) contest lookup optimizations;
	(super_html_create_contest) `contests_get_list' is used instead of
	  `contests_get_set';
	(super_html_edit_access_rules) the same;
	(super_html_create_contest_2) the same.

	* super-serve.c:
	(install_dnotify_handler) `contests_get_list' is used instead of
	  `contests_get_set'.

2008-10-06 (r5172) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(contests_get_list) new function prototype.

	* contests.c:
	(contests_get_list) new function.

	* new_server_html.c, new_server_html_5.c:
	(anon_select_contest_page) `contests_get_list' is used instead of
	  `contests_get_set'.

	* sformat.c:
	(sformat_message) NULL pointer checks added.

2008-10-06 (r5170) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(contests_get_set) renamed from `contests_get_list'.

	* contests.c:
	(contests_get_set) renamed from `contests_get_list';
	  directory lookup results are cached.

	* collect-emails.c, edit-userlist.c, new_server_html.c, new_server_html_5.c, super_html.c, super-serve.c:
	(anon_select_contest_page) `contests_get_list' is renamed to
	  `contests_get_set'.

2008-10-05 (r5164) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_handle_http_request) symbolic action names are supported.

2008-10-05 (r5162) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_run_request) `disable_security' problem configuration variable is supported.

2008-10-05 (r5161) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `disable_security' field is added.

	* super_proto.h:
	editing of `disable_security' problem configuration variable is supported.

	* prepare.c:
	`disable_security' problem configuration variable is handled.

	* prepare_out.c:
	(prepare_unparse_prob) `disable_security' problem configuration variable is handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `disable_security' problem configuration variable is supported.

2008-10-04 (r5156) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	new_server_html.c:
	(priv_view_passwords) JUDGE role and EDIT_PASSWD capability is
	  required to view passwords;
	(priv_main_page) the same.

2008-10-04 (r5154) Alexander Chernov  <cher@ejudge.ru>

	* clarlog_state.h:
	(struct clar_array) `header' field is removed.

	* new-server.h:
	`NEW_SRV_ACTION_PRIV_SUBMIT_RUN_COMMENT_AND_IGNORE' is added.

	* cldb_plugin_file.c:
	(struct cldb_file_cnts) `header' field is added.

	* convert-clars.c:
	list of functions which are forcely linked into the program is extended.

	* new_server_html.c:
	(priv_submit_run_comment)
	  `NEW_SRV_ACTION_PRIV_SUBMIT_RUN_COMMENT_AND_IGNORE' is supported.

	* new_server_html_2.c:
	(ns_write_priv_source) "Send comment and ignore run" button is added.

	* new_server_tables.c:
	text for "Send comment and ignore run" is added.

	* userlist-server.c:
	some debugging output is removed.

2008-10-03 (r5152) Alexander Chernov  <cher@ejudge.ru>

	* new_server_proto.h: copyright notice is updated;
	`NEW_SRV_ERR_VIRTUAL_START_FAILED' is added.

	* new-server-cmd.c:
	(prepare_force_start_virtual) new function;
	"force-start-virtual" command is handled.

	* new_server_html_4.c:
	(cmd_force_start_virtual) new function;
	`NEW_SRV_ACTION_FORCE_START_VIRTUAL' is handled.

	* new_server_proto.c:
	error message for `NEW_SRV_ERR_VIRTUAL_START_FAILED' is added.

2008-10-03 (r5149) Alexander Chernov  <cher@ejudge.ru>

	* super_proto.h:
	editing of the new global configuration variables `clardb_plugin',
	  `rundb_plugin', `xuser_plugin' is supported.

	* prepare_out.c:
	new global configuration variables `clardb_plugin', `rundb_plugin',
	  `xuser_plugin' are supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new global configuration variables `clardb_plugin',
	  `rundb_plugin', `xuser_plugin' is supported.

2008-10-03 (r5148) Alexander Chernov  <cher@ejudge.ru>

	* userlist_proto.h: copyright notice is updated;
	`ULS_FETCH_COOKIE' request is added.

	* new_server_html_4.c:
	(new_server_cmd_handler) `ULS_FETCH_COOKIE' request is used
	  instead of `ULS_PRIV_GET_COOKIE'.

	* userlist-server.c:
	(cmd_get_cookie) `ULS_FETCH_COOKIE' request is handled.

2008-10-03 (r5146) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	-rdynamic added to `convert-clars' compilation options.

	* clarlog.c:
	(clar_open) error reporting code is fixed;
	(clar_add_record) `id' field of newly allocated entries is set to -1;
	(clar_put_record) id == -1 means empty clar record;
	  `id' field of newly allocated entries is set to -1.

	* cldb_plugin_file.c:
	id == -1 means empty clar record.

	* convert-clars.c:
	"xml_utils.h" is included;
	some functions are forced to be linked;
	(main) id == -1 means empty clar record.

	* html.c, master_html.c, new_server_html.c, new_server_html_2.c:
	id == -1 means empty clar record.

	* plugin.c: copyright notice is added;
	(plugin_set_directory) minor memory leak is fixed.

2008-10-03 (r5142) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`convert-clars.c' is added.

	* Makefile.unix.in:
	`convert-clars' is compiled instead of `clean-users'.

	* clarlog.h:
	(clar_open) `config' parameter is not a const pointer;
	  `plugin_name' parameter is added;
	(clar_put_record) new function prototype;
	(clar_get_raw_text) new function prototype.

	* cldb_plugin.h:
	(cldb_plugin_iface::init) no parameters are accepted;
	(cldb_plugin_iface::prepare) `config' is not a const pointer;
	(cldb_plugin_iface::add_text) `text' is a const pointer.

	* ejudge_cfg.h:
	(ejudge_cfg_get_spec) new function prototype.

	* serve_state.h:
	(serve_state_load_contest) `config' is not a const pointer.

	* xml_utils.h: copyright notice is updated;
	(xml_empty_text_c) new function prototype;
	(xml_attr_bool) `attr' is a const pointer.

	* clarlog.c:
	(clar_open) `config' parameter is not a const pointer;
	  `plugin_name' parameter is added;
	(clar_put_record) new function;
	(clar_get_record) empty records are supported;
	(clar_update_flags) empty records are supported;
	(clar_set_charset) empty records are supported;
	(clar_reset) `subjects' array is freed;
	(clar_get_text) empty records are supported;
	(clar_get_raw_text) new function.

	* cldb_plugin_file.c:
	(init_func) no parameters are accepted;
	(prepare_func) `config', `tree' are not const pointers;
	(add_text_func) `text' is a const pointer;
	(open_func) `clar_archive_dir' path is built by `cnts' information,
	  if `global' is not available.

	* clean-users.c:
	(main) call of `clar_open' is updated;
	  empty clar records are ignored.

	* convert-clars.c:
	initial revision.

	* ejudge_cfg.c:
	(ejudge_cfg_get_spec) new function.

	* html.c:
	(serve_count_unread_clars) empty clar records are handled;
	(new_write_user_clars) the same.

	* master_html.c:
	(generate_daily_statistics) empty clar records are handled.

	* new_server_html.c:
	(priv_clar_reply) empty clar records are handled;
	(unpriv_view_clar) the same;
	(unpriv_page_header) the session id is passed to standings_url
	  generation.

	* new_server_html_2.c:
	(ns_write_all_clars) empty clar records are ignored;
	(ns_write_priv_clar) the same.

	* serve.c:
	(main) call of `clar_open' is updated.

	* serve_state.c:
	(serve_state_load_contest) `config' is not a const pointer;
	  call of `clar_open' is updated.

2008-10-01 (r5138) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	`clean-users' is excluded from compilation.

	* clarlog.h:
	(clar_clear_variables) removed;
	(clar_get_text) new function prototype;
	(clar_add_text) new function prototype.

	* cldb_plugin.h:
	(struct cldb_plugin_iface) `create_new' is renamed to `reset';
	  `get_raw_text' method is added;
	  `add_text' method is added.

	* clarlog.c:
	(clar_reset) `create_new' method is renamed to `reset'.
	(clar_clear_variables) removed;
	(clar_get_text) new function;
	(clar_add_text) new function.

	* cldb_plugin_file.c:
	"fileutl.h" is included;
	(struct cldb_file_cnts) `clar_archive_dir' field is added;
	(reset_func) renamed from `create_new_func';
	(get_raw_text_func) new function;
	(add_text_func) new function.

	* clean-users.c:
	(main) call of `clar_clear_variables' is commented out.

	* new_server_html.c:
	(priv_submit_clar) `clar_add_text' is used;
	(priv_submit_run_comment) `clar_add_text' is used;
	(priv_clar_reply) `clar_get_text', `clar_add_text' are used;
	(unpriv_submit_clar) `clar_add_text' is used;
	(unpriv_submit_appeal) `clar_add_text' is used;
	(unpriv_view_clar) `clar_get_text' is used.

	* new_server_html_2.c:
	(ns_write_priv_clar) `clar_get_text' is used.

	* new_server_html_4.c:
	(cmd_clar_operation) `clar_get_text' is used.

	* serve_2.c:
	(serve_reset_contest) cleaning of `clar_archive_dir' is removed.

2008-10-01 (r5136) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`clarlog_state.h' is added.

	* Makefile.unix.in:
	-ldl added to `clean-users' libraries.

	* clarlog.h:
	(clar_init) original prototype (void) is restored;
	(clar_open) new arguments to support plugins.

	* clarlog_state.h:
	initial revision.

	* cldb_plugin.h:
	implemented.

	* prepare.h:
	(struct section_global_data) new fields: `clardb_plugin',
	  `rundb_plugin', `xuser_plugin'.

	* serve_state.h:
	(serve_state_load_contest) `config' parameter is added.

	* uldb_plugin.h:
	`parse' method is renamed to `prepare'.

	* clarlog.c:
	"cldb_plugin.h", "clarlog_state.h", "prepare.h" are included;
	plugin architecture is implemented;
	all file-related stuff moved to `cldb_plugin_file.c'.

	* cldb_plugin_file.c:
	implemented.

	* clean-users.c:
	(main) reverted original use of `clar_init';
	  updated use of `clar_open'.

	* new_server_html.c:
	(privileged_entry_point) use of `serve_state_load_contest' is updated;
	(unprivileged_entry_point) the same.

	* new_server_html_4.c:
	(new_server_cmd_handler) use of `serve_state_load_contest' is updated.

	* prepare.c:
	new global configuration variables: `clardb_plugin',
	  `rundb_plugin', `xuser_plugin'.

	* serve.c:
	"ejudge_cfg.h" is included;
	(main) ejudge XML configuration file is loaded;
	  original use of `clar_init' is restored;
	  use of `clar_open' is updated.

	* serve_state.c:
	(serve_state_init) original use of `clar_init' is restored;
	(serve_state_load_contest) `config' parameter is added;
	  `config' parameter is passed to `clar_open'.

	* uldb_plugin_xml.c:
	`parse' method is renamed to `prepare'.

	* userlist-server.c:
	(load_plugins) `parse' method is renamed to `prepare'.

2008-10-01 (r5131) Alexander Chernov  <cher@ejudge.ru>

	* configure, Makefile.unix.in:
	plugins/mysql-clardb, plugins/mysql-rundb directories added.

2008-10-01 (r5130) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	`mysql-rundb', `mysql-clardb' plugin directories are added.

2008-09-29 (r5121) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_submit_run) text submits are handled properly.

	* serve_2.c:
	(serve_check_stat_generation) NULL pointer cnts is handled;
	(serve_packet_name) packet name generation scheme is changed.

	* serve_state.c:
	(serve_state_destroy) NULL pointer cnts is handled.

2008-09-26 (r5106) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`cldb_plugin_file.c', `cldb_plugin.h' are added.

	* clarlog.h:
	(clar_init) new parameters are added.

	* uldb_plugin.h:
	`try_new_login' method is added.

	* clarlog.c:
	(clar_init) new parameters are added.

	* clean-users.c, serve_state.c:
	call of `clar_init' is updated.

	* uldb_plugin_xml.c:
	added NULL to place of `try_new_login' method pointer.

	* userlist-server.c:
	(cmd_register_new_2) `try_new_login' method is used, if exists;
	(cmd_register_new) the same;
	(cmd_create_user) the same.

2008-09-20 (r5083) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	rldb_plugin.h, rldb_plugin_file.c, runlog_static.c is added.

	* userlist_proto.h:
	new error code `ULS_ERR_DB_ERROR'.

	* runlog.c:
	(run_status_str) moved to runlog_static.c;
	(run_is_failed_attempt) the same;
	(run_is_valid_test_status) the same;
	(run_is_team_report_available) the same;
	(run_is_report_available) the same;
	(run_str_short_to_status) the same;
	(run_is_valid_status) the same;
	(run_is_valid_user_status) the same;
	(run_is_source_available) the same.

	* userlist_proto.c:
	new error message.

	* userlist-server.c:
	default_get_user_info_? can fail with an error;
	user login is used if user name is not set.

2008-09-20 (r5082) Alexander Chernov  <cher@ejudge.ru>

	* runlog_static.c, rldb_plugin_file.c, rldb_plugin.h:
	initial revision

2008-09-10 (r5044) Alexander Chernov  <cher@ejudge.ru>

	* charsets.h:
	(charset_html_select) new function prototype.

	* clarlog.h:
	unused defines are removed.

	* new-server.h:
	NEW_SRV_ACTION_PRIV_SUBMIT_RUN_COMMENT is added.

	* charsets.c:
	(charset_html_select) new function.

	* clarlog.c:
	(clar_add_record_new) utf-8 fixes.

	* new_server_html.c:
	(priv_submit_run_comment) new function;
	run comments are supported.

	* new_server_html_2.c:
	(ns_write_priv_source) viewing run in different charsets is supported;
	run commenting is supported.

	* uldb_plugin_xml.c:
	(unlock_user_func) new function is added.

	* userlist-server.c:
	`default_unlock_user' is used.

2008-09-07 (r5021) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h:
	new method `set_member_serial'.

	* userlist.h:
	(struct userlist_user_info) new fields `b', `contest_id';
	  field `filled' is removed.
	(struct userlist_cntsinfo) removed;
	(struct userlist_user) `i' field is replaced with `cnts0' field.

	* clean-users.c, edit-userlist.c, new_server_html.c, new_server_html_2.c, new_server_html_5.c, reports.c, serve_2.c, sformat.c, super_html_3.c, teamdb.c, userlist.c, userlist-server.c, userlist_xml.c, uldb_plugin_xml.c:
	new structure of the default userlist_user_info in userlist_user.

	* filter_eval.c, printing.c: copyright notice is updated;
	new structure of the default userlist_user_info in userlist_user
	  is supported.

2008-09-04 (r5010) Alexander Chernov  <cher@ejudge.ru>

	* ej_limits.h:
	definition of EJ_MAX_GRADE added.

	* userlist.h:
	(userlist_members_reserve) new function prototype.

	* userlist.c:
	(userlist_members_reserve) new function.

	* userlist-server.c:
	(do_list_users) a minor memory leak is fixed.

2008-09-03 (r5001) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h: copyright notice is updated;
	(struct userlist_member) `team_role' field is added;
	(struct userlist_members) `team_role' field is added;
	(struct userlist_new_members) new structure;
	(struct userlist_user_info) `members' field is removed, `new_members'
	  is added;
	(userlist_members_count) new function prototype;
	(userlist_members_get_first) new function prototype;
	(userlist_members_get_nth) new function prototype.

	* edit-userlist.c, new_server_html_5.c, userlist-server.c, userlist_check.c, new_server_html_2.c:
	function interface is used to access the members instead of
	direct access to fields.

	* reports.c, sformat.c: copyright notice is updated;
	function interface is used to access the members instead of
	direct access to fields.

	* userlist.c: copyright notice is updated;
	new members layout is supported.
	(userlist_members_count) new function;
	(userlist_members_get_first) new function;
	(userlist_members_get_nth) new function.

	* userlist_xml.c, uldb_plugin_xml.c:
	new member layout is supported.

2008-08-12 (r4995) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(new_write_user_clar) removed;
	(new_write_user_source_view) removed;
	(write_user_run_status) removed;
	(new_write_user_report_view) removed;
	(write_team_page) removed;
	(write_master_page) removed;
	(write_priv_standings) removed;
	(write_priv_all_runs) removed;
	(write_priv_source) removed;
	(write_new_run_form) removed;
	(write_priv_report) removed;
	(write_priv_clar) removed;
	(write_priv_users) removed;
	(write_priv_user) removed;
	(write_virtual_standings) removed;
	(write_raw_standings) removed;
	(write_raw_source) removed;
	(write_raw_report) removed;
	(write_tests) removed;
	(write_audit_log) removed;
	(html_write_user_problems_summary) removed.

	* html.c:
	(html_write_user_problems_summary) removed;
	(new_write_user_clar) removed;
	(new_write_user_source_view) removed;
	(write_user_run_status) removed;
	(new_write_user_report_view) removed;
	(print_nav_buttons) removed;
	(time_to_str) removed;
	(write_team_page) removed;
	(write_virtual_standings) removed.

	* master_html.c:
	(print_nav_buttons) removed;
	(parse_error_func) removed;
	(print_raw_record) removed;
	(write_priv_all_runs) removed;
	(write_all_clars) removed;
	(write_master_page) removed;
	(write_priv_standings) removed;
	(write_priv_source) removed;
	(write_new_run_form) removed;
	(write_priv_report) removed;
	(write_priv_clar) removed;
	(write_priv_users) removed;
	(write_priv_user) removed;
	(write_raw_standings) removed;
	(write_raw_source) removed;
	(write_raw_report) removed;
	(write_tests) removed;
	(write_audit_log) removed.

2008-08-12 (r4994) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(load_cs_languages) new script directory layout is supported;
	(get_compiler_path) `config' parameter is added;
	  computation of script_dir is fixed;
	(recompile_checker) `config' parameter is added;
	  calls of `get_compiler_path' are updated.

2008-08-06 (r4983) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_edited_cnts_dialog) new function prototype.

	* super-serve.h:
	(struct http_request_info) new fields `ssl_flag', `self_url',
	  `session_id' are added.

	* super-serve.c:
	(cmd_main_page) attempt to edit already edited contest just continues
	  the editing;
	  attempt to edit a contest when another contest is edited displays
	  reasonable dialog.

	* super_html.c:
	(super_html_edited_cnts_dialog) case when existing contest is being
	  opened while another is already opened is supported.
	

	* super_html_4.c:
	<stdlib.h> is included;
	<stdarg.h> is included;
	(refresh_page) new function;
	(cmd_edited_cnts_back) new function;
	(cmd_edited_cnts_continue) new function;
	(cmd_edited_cnts_start_new) new function;
	(super_html_http_request) self_url and session_id are parsed.

2008-08-05 (r4981) Alexander Chernov  <cher@ejudge.ru>

	* prepare_dflt.h:
	default charset is utf-8.

	* super_proto.h:
	editing of `standings_charset', `stand2_charset', `plog_charset'
	  is supported.

	* prepare_out.c:
	(prepare_unparse_global) `standings_charset', `stand2_charset',
	  `plog_charset' are unparsed.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `standings_charset', `stand2_charset', `plog_charset'
	  is supported.

2008-08-05 (r4980) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_public_log) `charset_id' parameter is added.

	* prepare.h:
	(struct section_global_data) new fields `stand2_charset' and
	  `plog_charset' are added.

	* html.c:
	(write_public_log) `charset_id' parameter is added;
	  arbitrary output charset is supported.

	* prepare.c:
	global variables `stand2_charset' and `plog_charset' are added.

	* serve_2.c:
	(serve_update_standings_file) `stand2_charset' is supported;
	(serve_update_public_log_file) `plog_charset' is supported.

2008-08-05 (r4979) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(do_write_moscow_standings) `charset_id' parameter is added.

	* html.c:
	(do_write_moscow_standings) `charset_id' parameter is added;
	  arbitrary output charset support is implemented;
	(write_standings)
	  calls of `do_write_moscow_standings' are updated.

	* master_html.c, new_server_html.c, new_server_html_2.c:
	calls of `do_write_moscow_standings' are updated.

2008-08-04 (r4975) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_standings) `charset_id' parameter is added;
	(do_write_kirov_standings) `charset_id' parameter is added.

	* prepare.h:
	`standings_charset' is enabled again.

	* html.c:
	"charsets.h" are included;
	(do_write_kirov_standings) `charset_id' parameter is added;
	(write_standings) `charset_id' parameter is added.

	* new_server_html.c:
	(unpriv_view_standings) calls of `do_write_kirov_standings' updated.

	* new_server_html_2.c:
	(ns_write_priv_standings) call of `do_write_kirov_standings' updated.

	* master_html.c:
	(write_priv_standings) call of `do_write_kirov_standings' is updated;
	(write_raw_standings) the same.

	* prepare.c:
	`standings_charset' is enabled again.

	* serve_2.c:
	"charsets.h" are included;
	(serve_update_standings_file) `standings_charset' is supported;
	  calls of `write_standings' are updated.

2008-08-04 (r4973) Alexander Chernov  <cher@ejudge.ru>

	* charsets.h:
	(*_recode*) functions are renamed to *_decode;
	(charset_encode) new function;
	(charset_encode_heap) new function;
	(charset_encode_to_heap) new function.

	* charsets.c:
	(*_recode*) functions are renamed to *_decode;
	(charset_encode) new function;
	(charset_encode_heap) new function;
	(charset_encode_to_heap) new function.

	* clarlog.c:
	(clar_get_subject) _recode_ renamed to _decode_.

	* new_server_html.c:
	(priv_clar_reply) _recode_ renamed to _decode_.

	* new_server_html_2.c:
	(ns_write_priv_clar) _recode_ renamed to _decode_.

	* new_server_html_4.c:
	(cmd_clar_operation) _recode_ renamed to _decode_.

	* parsecfg.c:
	(copy_param) _recode_ renamed to _decode_.

2008-08-03 (r4959) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) `start_cmd' default path is changed;
	(prepare_tester_refinement) `start_cmd' default path is changed.

2008-08-03 (r4954) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h:
	(lang_configure_screen) `working_dir' parameter is added;
	(lang_configure_batch) `working_dir' parameter is added;
	(lang_config_menu) `working_dir' parameter is added.

	* ejudge-configure-compilers.c:
	<errno.h> is included;
	(create_tmp_dir) new function to create a temp dir;
	(main) temp dir is created and then removed.

	* ejudge-setup.c:
	temporary directory path is passed to `lang_configure_screen'.

	* lang_config_vis.c:
	(reconfigure_language) `working_dir' parameter is added;
	  the current directory changed to working_dir;
	(reconfigure_all_languages) `working_dir' parameter is added;
	(lang_configure_screen) `working_dir' parameter is added;
	(lang_configure_batch) `working_dir' parameter is added;
	(lang_config_menu) `working_dir' parameter is added.

2008-08-03 (r4952) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rule for building libserve_clnt.a is removed.

	* files.make:
	serve_clnt is removed.

	* ejudge-setup.c:
	(generate_install_script) `serve' probe run is restored.

	* serve.c:
	removed most of stuff, only "initializing" mode support remains.

2008-08-03 (r4951) dk

	* ejudge-setup.c:
	Fixed bug with wrong file modes of language scripts

2008-08-01 (r4947) Alexander Chernov  <cher@ejudge.ru>

	* html.h: copyright notice is updated;
	(generate_daily_statistics) `utf8_mode' parameter is added.

	* serve_state.h:
	(serve_check_stat_generation) `utf8_mode' parameter is added.

	* master_html.c:
	(generate_daily_statistics) `utf8_mode' parameter is added;
	UTF8 support is added.

	* new_server_html.c:
	(ns_unload_contest) `utf8_mode' parameter is added.

	* serve.c:
	(do_loop) call of `serve_check_stat_generation' is updated;
	(main) the same as above.

	* serve_2.c:
	(generate_statistics_email) `utf8_mode' parameter is added;
	(serve_check_stat_generation) `utf8_mode' parameter is added.

2008-07-30 (r4941) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h: copyright notice is updated;
	(html_armor_reserve) prototype is added.

	* charsets.c:
	(charset_recode) `html_armor_reserve' is used in two cases instead
	  of `html_armor_extend'.

	* misctext.c:
	(html_armor_reserve) this function does not preserve the buffer
	  contents;
	(html_armor_extend) this function preserve the buffer contents.

	* runlog_xml.c:
	(encode_file) `html_armor_reserve' is used instead of
	  `html_armor_extend'.

2008-07-29 (r4935) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	"ejudge_cfg.h" is included;
	(main) "-x" option is supported to specify path of ejudge.xml;
	"ejudge.xml" is loaded;
	path to compile.cfg is no longer necessary, a default is used.

2008-07-29 (r4933) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	"ej_types.h" is included;
	(clar_add_record) removed;
	(clar_get_record) removed;
	(clar_get_user_usage) renamed from `clar_get_team_usage'.

	* clarlog.c:
	(clar_add_record) removed;
	(clar_get_record) removed;
	(clar_get_user_usage) renamed from `clar_get_team_usage'.

	* clean-users.c: copyright notice is updated;
	(main) `clar_get_record_new' is used instead of `clar_get_record'.

	* html.c, master_html.c, serve.c:
	`clar_get_record_new' is used instead of `clar_get_record';
	`clar_add_record_new' is used instead of `clar_add_record';
	`clar_get_user_usage' is used instead of `clar_get_team_usage'.

	* new_server_html_2.c:
	`clar_get_user_usage' is used instead of `clar_get_team_usage'.

	* serve_2.c:
	(serve_check_clar_quota) `clar_get_user_usage' used instead of
	  `clar_get_team_usage'.

2008-07-29 (r4931) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	`new-client' program is now installed as `register', `team', `judge',
	and `master' program as well.

	* ej_limits.h:
	`EJ_MAX_TESTER' limit is increased to 100000.

	* ejudge_cfg.h:
	(struct ejudge_cfg) new field `enable_contest_select' is added.

	* contests.c:
	"managed" is now an alias of "new_managed" attributed.

	* ejudge_cfg.c:
	added support for "enable_contest_select" attribute.

	* new_server_html.c:
	(unprivileged_entry_point) the list of available contests is displayed
	for clients without contest_id if `enable_contest_select' attribute
	is set;
	(ns_handle_http_request) CGI-names `master', `judge', `register'
	are supported.

	* super_html.c:
	(super_html_edit_contest_page) editing of `managed' attribute is
	commented out.

	* testing_report_xml.c:
	(parse_testing_report) `EJ_MAX_SCORE' constant is used.

2008-07-12 (r4923) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h:
	(lang_configure_screen) `in_dirs' parameter is added;
	(lang_configure_batch) `in_dirs' parameter is added;
	(lang_config_menu) `in_dirs' parameter is added.

	* ejudge-configure-compilers.c:
	(visual_setup) compilation script templates are searched
	  in several dirs.

	* ejudge-setup.c:
	"fileutl.h" is included;
	(do_preview_menu) script templates are searched in the
	  ejudge system script dir;
	(generate_install_script) compilation scripts are included into
	  the install script;
	(preview_install_script) call of `lang_configure_screen'
	  is updated;
	(save_install_script) the same;
	(do_main_menu) call of `lang_config_menu' is updated;
	(create_tmp_dir) new function;
	(main) temporary directory is created.

	* lang_config_vis.c:
	(parse_lang_id_file) a default version of id file is loaded
	  from ${prefix}/libexec/ejudge/lang/lang_ids.cfg;
	(update_language_script) `in_dirs' parameter is added;
	(reconfigure_all_languages) `in_dirs' parameter is added;
	(lang_configure_screen) `in_dirs' parameter is added;
	(lang_configure_batch) `in_dirs' parameter is added;
	(lang_config_menu) `in_dirs' parameter is added.

	* prepare.c:
	(set_defaults) the compilation scripts are started from
	  ${compile_home_dir}/scripts.

	* runlog.c:
	(run_add_record) constants from "ej_limits.h" are used.

2008-07-04 (r4919) Alexander Chernov  <cher@ejudge.ru>

	* ej_limits.h:
	limit on the number of languages and the number of problems is
	increased to 999999.

	* serve_state.h:
	(struct serve_state) arrays `langs', `probs', and `testers' are now
	  dynamic. Their size is calculated in `collect_sections'.

	* prepare.c:
	(collect_sections) arrays of languages, problems, and testers now
	have flexible sizes.

	* serve_state.c:
	(serve_state_destroy) arrays of langs, probs, and testers are freed.

2008-07-04 (r4917) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_state) `abstr_probs' and `abstr_testers' are
	  now variable-sized arrays.

	* prepare.c:
	(collect_sections) limitation on the number of abstract problems
	  and abstract testers is removed.

	* serve_state.c:
	(serve_state_destroy) `abstr_probs' and `abstr_testers' are freed.

2008-07-03 (r4915) Alexander Chernov  <cher@ejudge.ru>

	* ej_limits.h:
	USEC_MAX, NSEC_MAX are added.

	* contests.c:
	"ej_limits.h" is included;
	constants from "ej_limits.h" are used instead of literal values.

	* contest_tmpl.c, lang_config_vis.c, serve-control.c: copyright notice is updated;
	"ej_limits.h" is included;
	constants from "ej_limits.h" are used instead of literal values.

	* compile_packet_1.c, compile_packet_4.c, compile_packet_5.c, new_server_html.c, runlog.c, super_html.c, super_html_3.c:
	constants from "ej_limits.h" are used instead of literal values.

2008-07-03 (r4913) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_4.c:
	(smd_submit_run) run_id is reported to the client.

2008-06-30 (r4912) Alexander Chernov  <cher@ejudge.ru>

	* master.c, register.c, serve.c, serve-cmd.c, team.c: removed.

2008-06-25 (r4910) Alexander Chernov  <cher@ejudge.ru>

	* ej_byteorder.h: initial revision.

	* ej_limits.h: copyright notice is updated;
	limits from `compile_packet_priv.h' and `run_packet_priv.h'
	  are moved here.

	* compile_packet_priv.h, run_packet_priv.h: copyright notice is updated;
	conversion and alignment macros are moved to `ej_byteorder.h';
	limit macros are moved to `ej_limits.h'.

	* compile_packet_1.c, compile_packet_2.c, compile_packet_4.c, compile_packet_5.c, run_packet_1.c, run_packet_2.c, run_packet_4.c, run_packet_5.c, run_packet_7.c: copyright notice is updated;
	"ej_byteorder.h" is included;
	limits from `ej_limits.h' are used instead of hardcoded constants;
	error handling is reimplemented.

	* testing_report_xml.c:
	limits from `ej_limits.h' are used instead of hardcoded constants.

2008-04-29 (r4906) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_4.c:
	(do_dump_master_runs) rewritten.

2008-04-29 (r4904) Alexander Chernov  <cher@ejudge.ru>

	* new-server-cmd.c:
	some commands are renamed.

	* new_server_html_4.c:
	(do_dump_master_runs) fixes.

2008-04-28 (r4902) Alexander Chernov  <cher@ejudge.ru>

	* misctext.c: copyright notice is updated;
	(duration_str) trailing space is removed.

2008-04-18 (r4899) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare_parse_variant_map) variant number mismatch is handled
	  gracefully.

2008-04-11 (r4887) Alexander Chernov  <cher@ejudge.ru>

	* l10n.c:
	(l10n_prepare) `LC_ALL' environment variable is cleared.

2008-04-07 (r4878) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(check_config) no error if there are no problems to test.

2008-04-06 (r4867) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	Test contest is updated.

2008-04-06 (r4866) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_language_data) `insecure' field is added.

	* super_proto.h:
	editing of `insecure' language configuration variable is supported.

	* lang_config_vis.c:
	(lang_config_generate_compile_cfg) `arch' value is put in quotes.

	* new_server_html.c:
	(unpriv_submit_run) `insecure' language attribute is supported.

	* prepare.c:
	`insecure' language attribute is added.

	* prepare_out.c:
	(prepare_unparse_lang) only non-empty `arch' and `exe_sfx' are
	  generated;
	  `insecure' attribute is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `insecure' language configuration variable is supported.

2008-04-05 (r4863) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-configure-compilers.c:
	(is_comment_line) new function;
	(fgets_no_cmt) new function;
	(is_file_changed_no_cmt) new function;
	(save_compile_cfg) comments are ignored when files are compared.

2008-04-05 (r4861) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	stringset.[ch] are added.

	* lang_config_vis.h:
	(lang_config_get_sorted) new function prototype;
	(lang_config_generate_compile_cfg) new function prototype.

	* shellcfg_parse.h:
	(shellconfig_get) new function prototype.

	* ejudge-configure-compilers.c:
	saving of `compile.cfg' is supported.

	* ejudge-setup.c:
	compiler support is improved.

	* lang_config_vis.c:
	many new features implemented.

	* shellcfg_parse.c:
	(shellconfig_parse) '#' inside strings is allowed;
	(shellconfig_get) new function.

2008-04-04 (r4851) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.c:
	language id setup is implemented.

2008-04-04 (r4850) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h:
	(struct lang_config_info) `id' field is added.

	* ejudge-setup.c:
	(generate_install_script) `new-register' symlink is installed.

	* shellcfg_parse.c:
	(shellcfg_parse) '-' and '+' are allowed in variable names.

2008-04-03 (r4847) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	EJUDGE_LIBEXEC_DIR generation is added;
	compiler script generation is removed.

2008-04-01 (r4842) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h: copyright notice is updated;
	(struct ejudge_cfg) `disable_cookie_ip_check' field is added.

	* runlog.h:
	(run_get_saved_times) `p_saved_finish_time' parameter is added;
	(struct run_header) `saved_finish_time' field is added.

	* compile.c:
	(main) `lang_config_configure' logging output is directed to a
	temporary buffer instead of stderr.

	* ejudge_cfg.c: copyright notice is updated;
	support for "disable_cookie_ip_check" is added.

	* l10n.c: copyright notice is updated;
	(l10n_prepare) `LANGUAGE' and `LC_MESSAGES' environment variables
	  are cleared.

	* new_server_html.c:
	(priv_upsolving_operation) finish time is cleared upon upsolving;
	  `run_get_saved_times' call is updated;
	(unpriv_page_header) "Problems" link is preserved in problem_navigation
	  mode.

	* prepare.c:
	less debugging output.

	* runlog.c:
	(run_get_saved_times) `p_saved_finish_time' parameter is added;
	(run_save_times) finish time is saved.

	* serve_state.c:
	(serve_state_set_config_path) `run_get_saved_times' call is updated.

	* userlist_check.c: copyright notice is updated;
	valid charsets for names are changed.

	* userlist-server.c:
	`disable_cookie_ip_check' configuration attribute is supported.

2008-04-01 (r4840) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: reverted previous change.

2008-04-01 (r4838) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	--disable-cookie-ip-check option is added.

2008-03-31 (r4835) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rules for ejudge-configure-compilers are added.

	* files.make:
	new files added: `lang_config.c', `lang_config_vis.[ch]',
	  `shellcfg_parse.[ch]', `ejudge-configure-compilers.c'.

	* prepare.h:
	(struct section_global_data) `lang_config_dir' field is added;
	(struct section_language_data) `disabled_by_config' field is added;
	(lang_config_configure) new function prototype.

	* compile.c: copyright notice is updated;
	(filter_languages) languages disabled by shell config files are skipped;
	(main) `lang_config_configure' is called.

	* ejudge-configure-compilers.c:
	basically completed.

	* ejudge-setup.c:
	programming language configuration is reimplemented.

	* prepare.c:
	new global configuration variable `lang_config_dir' is added;
	`problem_navigation' is set to 1 for new contests;
	`enable_full_archive' is set to 0 for new contests.

	* runlog.c: copyright notice is updated;
	(check_msg) format specifications are added;
	multiple format specification problems are fixed.

	* shellcfg_parse.c:
	include directive fix.

2008-03-30 (r4833) Alexander Chernov  <cher@ejudge.ru>

	* lang_config_vis.h, ejudge-configure-compilers.c, lang_config.c, lang_config_vis.c:
	initial revision

2008-03-29 (r4828) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	`--enable-lang-config-dir' option is added instead of
	  `--enable-lang-script-dir';
	`--with-<COMPILER>' options now cause error;
	compiler configure code is removed;
	compiler-related configuration variables are no longer exported.

2008-03-17 (r4813) Alexander Chernov  <cher@ejudge.ru>

	* INSTALL.RUS, config.h.in, ejudge-setup.c, configure.ac, INSTALL:
	MBAS renamed to VBNC

2008-03-16 (r4806) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	new options added: --enable-preserve-scripts, --enable-lang-script-dir.

2008-03-16 (r4805) Alexander Chernov  <cher@ejudge.ru>

	* scripts:
	copyright notice is updated;
	scripting model is changed.

2008-03-09 (r4796) Alexander Chernov  <cher@ejudge.ru>

	* collect-emails.c: copyright notice is updated;
	<stdarg.h> is included;
	(fatal) new function;
	(process_keywords) new function;
	(main) "-k" option is added.

2008-03-09 (r4795) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(is_empty_string) new function;
	(priv_submit_clar) either user_id, or user_login must be specified.

2008-03-09 (r4780) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_loop_callback) last_access_time is updated when reading
	  compile or run packet.

2008-03-08 (r4778) Alexander Chernov  <cher@ejudge.ru>

	* new-server.c, userlist-server.c:
	(check_restart_permissions) new function to check the permissions
	  to restart the program;
	(cmd_control_server) `check_restart_permissions' is used.

2008-03-08 (r4772) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-control.c:
	(main) slave mode is supported for "stop" command.

2008-03-08 (r4770) Alexander Chernov  <cher@ejudge.ru>

	* compile-control.c:
	compile-control.c: copyright notice is updated;
	(main) `killall' is used instead of writing a packet into the
	  spool directory.

2008-03-08 (r4766) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	new element <keywords> is added.

	* super_proto.h:
	editing of the new <keywords> element is supported.

	* contests.c:
	new element <keywords> is added.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of the new <keywords> element is supported.

2008-03-07 (r4763) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac, config.h.in, ejudge-setup.c:
	gfortran compiler is supported.

2008-03-07 (r4762) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.in: copyright notice is updated;
	gfortran is added.

	* gfortran.in, gfortran-version.in:
	initial revision.

2008-03-06 (r4760) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	"disable_password_change" attribute of <contest> is added.

	* super_proto.h:
	editing of `disable_password_change' contest flag is supported.

	* contests.c:
	"disable_password_change" attribute of <contest> is added.

	* filter_scan.lex: copyright notice is updated;
	a gcc warning is fixed.

	* new_server_html.c:
	(unpriv_main_page) `disable_password_change' contest flag is supported.

	* new_server_html_5.c: copyright notice is updated;
	(main_page_view_settings) `disable_password_change' contest flag is
	  supported.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of `disable_password_change' contest attribute is supported.

2008-03-06 (r4756) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(parse_run_id) more verbose diagnostics.

	* new_server_proto.c: copyright notice is updated;
	multiple bugs are fixed.

2008-03-05 (r4754) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`server_start_time' global variable is added.

	* serve_state.h:
	(struct serve_state) `load_time' field is added.

	* new-server.c: copyright notice is updated;
	(main) server start time is saved.

	* new_server_html.c:
	(priv_main_page) more server info is shown.

	* serve_state.c:
	(serve_state_load_contest) `load_time' is initialized.

2008-03-05 (r4750) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(do_write_standings) transient, failed and disqualified runs
	  are displayed in corresponding attributes.

	* new_server_html_2.c:
	(ns_get_user_problems_summary) RUN_ACCEPTED is treated as pending
	  run in ACM mode.

2008-03-05 (r4748) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	RUN_ACCEPTED is a valid status in all contests.

	* master_html.c: copyright notice is updated;
	RUN_ACCEPTED is a valid status in all contests.

	* new_server_html_4.c:
	RUN_ACCEPTED is a valid KIROV contest status.

	* serve_2.c: copyright notice is updated;
	(serve_is_valid_status) RUN_ACCEPTED is always valid;
	(serve_read_run_packet) `use_ac_not_ok' problem variable is honored.

2008-03-05 (r4747) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h, prepare_dflt.h:
	new global configuration variable `use_ac_not_ok' is added;
	new problem configuration variable `use_ac_not_ok' is added.

	* super_proto.h:
	editing of `use_ac_not_ok' variables is supported.

	* prepare.c, prepare_out.c:
	new global configuration variable `use_ac_not_ok' is added;
	new problem configuration variable `use_ac_not_ok' is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `use_ac_not_ok' variables is supported.

2008-03-05 (r4745) Alexander Chernov  <cher@ejudge.ru>

	* archive_paths.c, nsdb_plugin_files.c, team_extra.c: copyright notice is updated;
	directory creation permissions are relaxed: group write is enabled.

	* ejudge-setup.c, new_server_html_2.c, prepare.c, serve.c, server_framework.c, super_html_2.c, super-serve.c:
	directory creation permissions are relaxed: group write is enabled.

2008-03-04 (r4734) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright notice is updated;
	NEW_SRV_ACTION_PRIV_SUBMIT_PAGE is added.

	* new_server_html.c:
	(priv_submit_run) problem identification passing is reworked;
	(priv_submit_page) new function to handle the submit dialog;
	(priv_main_page) hyperlink to submit page is added to the top;
	(unparse_statement) renamed from `unpriv_unparse_statement';
	(unparse_answers) renamed from `unpriv_unparse_answers'.

2008-03-02 (r4732) Alexander Chernov  <cher@ejudge.ru>

	* new-server-cmd.c:
	`schedule' command is implemented.

	* new_server_html_4.c:
	(do_schedule) new function;
	(cmd_operation) SCHEDULE request is handled.

2008-03-02 (r4728) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_serve_unparse_and_save) `charset' parameter is added.

	* super_html_2.c:
	(super_html_commit_contest) call of `super_html_serve_unparse_and_save'
	  is updated.

	* super_html_3.c:
	(super_html_serve_unparse_and_save) `charset' parameter is added;
	  the '# -*- ..." signature line is written;
	(super_html_get_serve_header_and_footer) the "# -*- ..." signature
	  line is stripped off.

2008-03-02 (r4726) Alexander Chernov  <cher@ejudge.ru>

	* contests.h: copyright notice is updated;
	(contests_unparse_and_save) `charset' parameter is added.

	* contests.c: copyright notice is updated;
	(contests_unparse_and_save) `charset' parameter is added;
	  the "<?xml..." signature line is always written.

	* super_html_2.c:
	(get_contest_header_and_footer) "<?xml..." signature is stripped off;
	(super_html_commit_contest) call of `contests_unparse_and_save' is
	  updated.

	* super_html_3.c:
	(super_html_update_variant_map) the output format is updated.

2008-03-02 (r4722) Alexander Chernov  <cher@ejudge.ru>

	* charsets.h:
	(charset_recode_heap) new function prototype;
	(charset_recode_to_heap) new function prototype.

	* charsets.c:
	(charset_recode_heap) new function;
	(charset_recode_to_heap) new function.

	* parsecfg.c: copyright notice is updated;
	"charsets.h" is included;
	(struct parsecfg_state) `charset_id' field is added;
	(read_first_line) new function;
	(read_comment) special comment "-*- coding: CHARSET -*-" is handled;
	(copy_param) recoding to the internal charset is implemented.

2008-03-02 (r4714) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h: copyright notice is updated;
	(struct clar_entry_v1) `charset' field is added;
	(clar_add_record_new) `charset' parameter is added;
	(clar_get_charset_id) new function prototype;
	(clar_get_subject) new function prototype.

	* clarlog.c:
	"charsets.h" is included;
	<ctype.h> is included;
	the local charset is stored in the clar information structure;
	(clar_add_record_new) `charset' parameter is added;
	(extend_charset_ids) new function to reallocate local charset array;
	(clar_get_subject) new function to return the subject (in correct
	  charset);
	(clar_get_charset_id) new function to return the charset id of the
	  given clar.

	* new_server_html.c: copyright notice is updated;
	"charsets.h" is included;
	(priv_submit_clar) call of `clar_add_record_new' is updated;
	(priv_clar_reply) recoding to the current charset is supported;
	  call of `clar_add_record_new' is updated;
	(unpriv_view_clar) recoding to the current charset is supported.

	* new_server_html_2.c: copyright notice is updated;
	"charsets.h" is included;
	(ns_write_all_clars) subject is recoded to the local charset;
	(ns_write_priv_clar) subject and text is recoded to the local
	  charset.

	* new_server_html_4.c:
	"charsets.h" is included;
	(cmd_clar_operation) recoding to the current charset is supported.

2008-02-29 (r4711) Alexander Chernov  <cher@ejudge.ru>

	* clntutil.c, cgi.c, master.c, team.c: copyright notice is updated;
	default charset is set to "utf-8" instead of "iso8859-1".

	* charsets.c, configure.ac, register.c, serve-control.c:
	default charset is set to "utf-8" instead of "iso8859-1".

2008-02-29 (r4710) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	charsets.[ch] is added.
	
	clarlog.c: copyright notice is updated;
	(clar_add_record_new) UTF-8 handling is fixed.

2008-02-29 (r4706) Alexander Chernov  <cher@ejudge.ru>

	* charsets.c, charsets.h:
	initial revision

2008-02-25 (r4701) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h: copyright notice is updated;
	RESTART capability is added.

	* runlog.h: copyright notice is updated;
	(struct run_xml_helpers) new structure for XML parsing;
	(parse_runlog_xml) new parameter `helper' is added.

	* super_proto.h: slave mode error is added.

	* edit-userlist.c: copyright notice is updated;
	(display_member_gender_menu) fix.

	* opcaps.c: copyright notice is updated;
	RESTART capability is added.

	* runlog_import.c:
	new attribute parsing is supported.

	* runlog_xml.c:
	new attributes "login", "lang_short", "prob_short" are added;
	(process_run_elements) `helper' parameter is added;
	  new attributes are handled;
	(process_runlog_element) `helper' parameter is added;
	(parse_runlog_xml) `helper' parameter is added;
	(unparse_runlog_xml) in source mode textual representations
	  of login, problem and language are generated.

	* serve-control.c:
	RESTART capability is added.

	* super_html.c:
	RESTART capability is added.

	* super-serve.c:
	some requests are disabled in slave mode;
	RESTART permission is required for restart;
	in "slave" mode the control socket is created, but most requests
	(except restart) are not handled.

2008-02-18 (r4693) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	support for --help and --version options is added.

2008-02-17 (r4690) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) `run_check_dir' is set depending on EJUDGE_LOCAL_DIR;
	(create_dirs) `run_check_dir' is created recursively.

2008-02-17 (r4688) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) `run_work_dir' and `check_dir' is set depending
	  on EJUDGE_LOCAL_DIR;
	(create_dirs) `run_work_dir' is created recursively;
	(prepare_tester_refinement) `check_dir' is set depending
	  on EJUDGE_LOCAL_DIR.

2008-02-17 (r4686) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(set_defaults) EJUDGE_LOCAL_DIR is used;
	(create_dirs) `compile_work_dir' creation is updated.

2008-02-17 (r4684) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-control.c: copyright notice is updated;
	(command_start) `slave_mode', `all_run_serve', `master_mode'
	  new parameters added;
	  master_mode, slave_mode are supported;
	(main) "-s", "-r", "-m" options are supported.

	* super-serve.c:
	(prepare_run_serving) `master_mode', `manage_all_runs' are supported;
	(acquire_contest_resources) new modes are supported;
	(main) "-r", "-m" options are supported.

2008-02-17 (r4682) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_4.c:
	many new commands are implemented.

2008-02-17 (r4680) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	EJUDGE_LOCAL_DIR is supported.

	* new_server_html_4.c: copyright notice is updated;
	(parse_int) bug fixed;
	(cmd_login) bug fixed.

2008-02-17 (r4677) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.c: copyright notice is updated;
	(nsf_prepare) socket directory is created.

	* super-serve.c:
	(prepare_sockets) socket directory is created.

	* userlist-server.c:
	(do_work) socket directory is created.

2008-02-16 (r4675) Alexander Chernov  <cher@ejudge.ru>

	* new-server-cmd.c: copyright notice is updated;
	many new commands are added.

2008-02-16 (r4673) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `stand_use_login' field is added.

	* prepare_dflt.h: copyright notice is updated;
	`stand_use_login' global configuration variable is added.

	* super_proto.h:
	editing of the `stand_use_login' global configuration variable
	  is supported.

	* html.c:
	XHTML fixes;
	`stand_use_login' global variable is supported.

	* prepare.c, prepare_out.c:
	new global configuration variable `stand_use_login' is added.

	* runlog_import.c: copyright notice is updated;
	wrong error message is fixed.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `stand_use_login' global configuration variable
	  is supported.

2008-02-16 (r4669) Alexander Chernov  <cher@ejudge.ru>

	* super_clnt.h: copyright notice is updated;
	(super_clnt_http_request) new function prototype.

	* super_html.h: copyright notice is updated;
	(super_html_http_request) new function prototype.

	* super_proto.h:
	new request SSERV_CMD_HTTP_REQUEST;
	new subcommands type;
	new error code SSERV_ERR_PARAM_OUT_OF_RANGE;
	(struct prot_super_pkt_http_request) new packet structure.

	* super-serve.h: copyright notice is updated;
	(struct super_http_request_info) new structure.

	* execute.c: copyright notice is updated;
	`security_violation' defition is put under conditional compilation.

	* expat_iface.c, register.c, run.c, runlog_xml.c, serve.c, super_html_2.c, team_extra_xml.c, testing_report_xml.c, users.c: copyright notice is updated;
	"ej_limits.h" is included.

	* html.c:
	"ej_limits.h" is included.

	* serve-control.c:
	(action_http_request) new function;
	(main) `SSERV_CMD_HTTP_REQUEST' is handled.

	* super_html.c: copyright notice is updated;
	(super_html_main_page) CGI_PROG_SUFFIX is supported correctly;
	(super_html_contest_page) CGI_PROG_SUFFIX is supported correctly;
	  link to "Test details" page is added.

	* super_proto.c:
	new error code description is added.

	* super-serve.c:
	(cmd_http_request) new function to handle the new request.

	* userlist-server.c: copyright notice is updated.

2008-02-15 (r4668) Alexander Chernov  <cher@ejudge.ru>

	* super_html_4.c:
	initial revision

2008-02-15 (r4663) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: copyright notice is updated;
	--enable-local-dir option is added;
	--enable-werror option is added.

2008-01-17 (r4661) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	(do_loop) directory check interval decreased to 10 seconds.

2008-01-16 (r4659) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(html_write_user_problems_summary) `score_latest' problem configuration
	  variable is supported;
	(do_write_kirov_standings) the same.

2008-01-16 (r4658) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	new problem configuration variable `score_latest' is added.

	* super_proto.h:
	editing of the `score_latest' problem configuration variable
	is supported.

	* prepare.c, prepare_out.c:
	new problem configuration variable `score_latest' is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `score_latest' problem configuration variable
	is supported.

2008-01-16 (r4656) Alexander Chernov  <cher@ejudge.ru>

	* copyright.c: copyright notice is updated.

2008-01-16 (r4655) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h: copyright notice is updated;
	(struct serve_state) `has_olympiad_mode' field is added.

	* html.c: copyright notice is updated;
	(write_xml_team_accepting_report) obsoleted action numbers are fixed.

	* serve_state.c: copyright notice is updated;
	(serve_state_load_contest) `has_olympiad_mode' flag is set.

2008-01-13 (r4653) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright notice is updated;
	`olympiad_mode' problem configuration variable is added.

	* super_proto.h: copyright notice is updated;
	editing of `olympiad_mode' problem configuration variable is supported.

	* prepare.c, prepare_out.c: copyright notice is updated;
	`olympiad_mode' problem configuration variable is added.

	* serve-control.c, super_html_3.c, super_serve.c: copyright notice is updated; editing of
	`olympiad_mode' problem configuration variable is supported.

2008-01-07 (r4648) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(generate_serve_cfg) bug is fixed.

2007-12-24 (r4643) Alexander Chernov  <cher@ejudge.ru>

	* contest_plugin.h:
	(struct contest_plugin_iface) `generate_html_standings' member
	  is added.

	* prepare.h:
	(struct section_problem_data) `stand_last_column' field is added;
	`stand_last_column' problem configuration variable is added.

	* super_proto.h:
	editing of `stand_last_column' problem configuration variable is
	supported.

	* html.c:
	(do_write_kirov_standings) `stand_last_column' problem configuration
	  variable is supported.

	* prepare.c, prepare_out.c:
	`stand_last_column' problem configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `stand_last_column' problem configuration variable is
	supported.

2007-12-23 (r4641) Alexander Chernov  <cher@ejudge.ru>

	* diff.c:
	(compare_runs) "-Bb" options are added.

2007-12-23 (r4639) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c: sample contest is updated.

2007-12-22 (r4630) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(run_tests) input_file and output_file are passed in
	  "INPUT_FILE" and "OUTPUT_FILE" env vars to the start helper
	  program.

2007-12-21 (r4628) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(score_view_display) non-matching scores are printed as numbers.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) filter expression length is increased.

2007-12-17 (r4623) Alexander Chernov  <cher@ejudge.ru>

	* contest_plugin.h:
	(struct contest_plugin_iface) `generate_html_user_runs' function is added.

	* new_server_html:
	(unpriv_main_page) `generate_html_user_runs' contest plugin function is supported.

2007-12-16 (r4621) Alexander Chernov  <cher@ejudge.ru>

	* contest_plugin.h:
	(struct contest_plugin_iface) new member
	  `generate_html_user_problems_summary' is added.

	* html.h:
	(score_view_display) function prototype is added.

	* html.c:
	(calc_kirov_score) `score_view_display' is called;
	(score_view_display) the pointer to the original buffer is returned.

	* new_server_html.c:
	(unpriv_main_page) `generate_html_user_problems_summary' contest
	  plugin function is supported.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) `score_view_display' is used;
	(ns_write_user_problems_summary) `score_view_display' is used.

2007-12-13 (r4613) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `stand_ignore_score' field is added.

	* super_proto.h:
	`stand_ignore_score' editing is supported.

	* html.c:
	(do_write_kirov_standings) `stand_ignore_score' is supported.

	* prepare.c, prepare_out.c:
	`stand_ignore_score' problem configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	`stand_ignore_score' editing is supported.

2007-12-13 (r4612) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `score_view',
	  `score_view_score', `score_view_text' are added.

	* super_proto.h:
	editing of `score_view' problem configuration variable is supported.

	* html.c:
	(score_view_display) new function;
	(do_write_kirov_standings) `score_view' problem configuration variable
	  is supported.

	* prepare.c, prepare_out.c:
	new problem configuration variable `score_view' is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `score_view' problem configuration variable is supported.

2007-12-13 (r4610) Alexander Chernov  <cher@ejudge.ru>

	* userlist_xml.c:
	(parse_cookies) for privileged cookies default contest_id is 0.

2007-12-13 (r4606) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `stand_disq_attr' field is added.

	* super_proto.h:
	editing of the `stand_disq_attr' GCV is supported.

	* html.c:
	(struct standings_style) `disq_attr' field is added;
	(setup_standings_style) `stand_disq_attr' GCV is supported;
	(do_write_kirov_standings) `stand_fail_attr' and `stand_disq_attr'
	  GCV are supported.

	* prepare.c, prepare_out.c:
	`stand_disq_attr' global configuration variable is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `stand_disq_attr' GCV is supported.

2007-12-11 (r4599) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`settings.h' is removed.

	* ej_limits.h:
	`EJ_MAX_CONTEST_ID' is renamed from `MAX_CONTEST_ID';
	`EJ_MAX_TESTER' is added;
	`EJ_INTERNAL_CHARSET' is added;
	`EJ_SERVE_PACKET_NAME_SIZE' is added;
	`EJ_MAX_CGI_VALUE_LEN' is added;
	`EJ_MAX_SERVE_PACKET_LEN' is added;
	`EJ_MAX_USERLIST_PACKET_LEN' is added.

	* serve_state.h:
	"settings.h" include is removed;
	`EJ_MAX_TESTER' is used instead of `MAX_TESTER'.

	* compile-control.c: copyright notice is updated;
	"settings.h" include is removed;
	`EJ_SERVE_PACKET_NAME_SIZE' is used instead `SERVE_PACKET_NAME_SIZE'.

	* compile_packet_1.c, compile_packet_2.c: compile_packet_4.c, compile_packet_5.c, run_packet_4.c, run_packet_5.c: copyright notice is updated;
	`EJ_MAX_CONTEST_ID' is used instead of `MAX_CONTEST_ID'.

	* cgi.c: copyright notice is updated;
	"ej_limits.h" is included;
	constants are updated.

	* ejudge-control.c, job-server.c, new-client.c, new-server.c, serve-control.c, new-server-cmd.c,  new_server_html_2, new_server_html_4.c, new_server_html_5.c, new_server_proto.c, new_server_tables.c, plugin.c, prepare_serve.c, reports.c, serve-cmd.c, server_framework.c, startstop.c:
	"settings.h" include is removed.

	* new_server_html.c:
	"settings.h" include is removed;
	`EJ_MAX_CONTEST_ID' is used instead of `MAX_CONTEST_ID'.

	* expat_iface.c, new_server_html_3.c, register.c, runlog_xml.c, team_extra_xml.c, testing_report_xml.c:
	"settings.h" include is removed;
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET'.

	* super_html_2.c, run.c:
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET'.

	* job-server-cmd.c, job-server-control.c, new-server-control.c, send_job_packet.c, super-serve-control.c, userlist-server-control.c: copyright notice is updated;
	"settings.h" include is removed.

	* prepare.c:
	"settings.h" include is removed;
	`EJ_MAX_TESTER' is used instead of `MAX_TESTER'.

	* serve.c:
	"settings.h" include is removed;
	`EJ_MAX_SERVE_PACKET_LEN' is used instead of `MAX_SERVE_PACKET_LEN';
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET'.

	* run_packet_1.c, run_packet_2.c, userlist.c:
	`EJ_MAX_CONTEST_ID' is used instead of `MAX_CONTEST_ID'.

	* serve_2.c:
	`EJ_SERVE_PACKET_NAME_SIZE' is used instead `SERVE_PACKET_NAME_SIZE'.

	* userlist-server.c:
	"settings.h" is removed;
	"ej_limits.h" is added;
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET';
	`EJ_MAX_USERLIST_PACKET_LEN' is used instead of
	  `MAX_USERLIST_PACKET_LEN'.

	* userlist_xml.c:
	"settings.h" is removed;
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET';
	`EJ_MAX_CONTEST_ID' is used instead of `MAX_CONTEST_ID'.

	* html.c, users.c: copyright notice is updated;
	"settings.h" include is removed;
	`EJ_INTERNAL_CHARSET' is used instead of `EJUDGE_INTERNAL_CHARSET'.

2007-12-10 (r4589) Alexander Chernov  <cher@ejudge.ru>

	* ej_limits.h: copyright notice is updated;
	EJ_MAX_PROB_ID is added.

	* serve_state.h:
	"ej_limits.h" is included;
	EJ_MAX_LANG_ID is used instead of MAX_LANGUAGE;
	EJ_MAX_PROB_ID is used instead of MAX_PROBLEM.

	* settings.h:
	MAX_LANGUAGE, MAX_PROBLEM definitions are removed.

	* prepare.c:
	EJ_MAX_LANG_ID is used instead of MAX_LANGUAGE;
	EJ_MAX_PROB_ID is used instead of MAX_PROBLEM.

2007-12-09 (r4585) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	enumeration for XML generation flags is added;
	(userlist_unparse_user) `flags' parameter is added;
	(userlist_real_unparse_user) `memb_force_flag' renamed to `flags';
	(userlist_unparse_for_standings) commented out.

	* userlist-server.c:
	code cleanups.

	* userlist_xml.c:
	(userlist_real_unparse_user) `force_first_member' parameter is renamed
	  to `flags';
	(userlist_unparse_user) `flags' parameter is added.

2007-12-08 (r4577) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_team_cookie) `p_contest_id' parameter is added;
	(userlist_clnt_priv_login) `priv_level' parameter is removed.

	* userlist_proto.h:
	(struct userlist_pk_check_cookie) `priv_level' field now has type int.

	* new_server_html.c:
	(privileged_page_login) call of `userlist_clnt_priv_login' is updated.

	* new_server_html_4.c:
	(cmd_login) call of `userlist_clnt_priv_login' is updated.

	* master.c, serve-control.c, team.c:
	(authentificate) `userlist_clnt_team_cookie' call is updated.

	* userlist-server.c:
	code improvements.

2007-12-06 (r4575) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h:
	`set_cookie_team_login' function pointer is added.

	* new_server_html.c:
	(unpriv_submit_run) `ignore_duplicated_runs' global configuration
	  variable is honored.

	* uldb_plugin_xml.c:
	(set_cookie_team_login_func) new function is added.

	* userlist-server.c:
	(struct client_state) fields `contest_id', `cnts_login' are added;
	(full_get_contest) check for contest_id == 0 is added;
	(cmd_team_login) contest_id check is reworked;
	(cmd_priv_login) contest_id check is reworked;
	(cmd_priv_check_user) contest_id check is reworked;
	(cmd_team_check_cookie) contest_id check is reworked;
	(cmd_priv_cookie_login) contest_id check is reworked.

2007-12-03 (r4570) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h:
	(copy_user_info) `copy_passwd_flag' parameter is added.

	* ejudge-setup.c:
	(generate_contest_xml) capability bits are updated;
	(generate_ejudge_xml) capability bits are updated.

	* uldb_plugin_xml.c:
	(copy_user_info_func) `copy_passwd_flag' parameter is added.

	* userlist-server.c:
	(is_judge_or_same_user) new function;
	(is_privileged_cnts2_user) new function;
	(cmd_priv_delete_member) permission checks are redone;
	(cmd_create_member) permission checks are redone;
	(cmd_copy_user_info) permission checks are redone;
	(cmd_move_member) permission checks are redone.

2007-12-02 (r4564) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	numerous changes in permission handling.

2007-12-02 (r4560) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `dbcaps' field is added.

	* opcaps.h:
	`GENERATE_TEAM_PASSWORDS' capability bit is removed;
	`EDIT_PASSWD', `PRIV_EDIT_PASSWD' capability bits are added.

	* new_server_html.c:
	(priv_password_operation) permission checks change.

	* new_server_html_2.c:
	(ns_user_info_page) permission checks change.

	* opcaps.c, serve-control.c, super_html.c:
	`GENERATE_TEAM_PASSWORDS' capability bit is removed;
	`EDIT_PASSWD', `PRIV_EDIT_PASSWD' capability bits are added.

	* userlist-server.c:
	(is_admin) new function;
	(is_dbcnts_capable) new function;
	(cmd_generate_register_passwords) permission check is changed;
	(cmd_generate_register_passwords_2) permission check is changed;
	(cmd_generate_team_passwords) permission check is changed;
	(cmd_generate_team_passwords_2) permission check is changed;
	(cmd_clear_team_passwords) permission check is changed;
	(cmd_user_op) permission check is changed.

2007-12-01 (r4559) Alexander Chernov  <cher@ejudge.ru>

	* opcaps.h:
	capabilities LIST_CONTEST_USERS and LIST_ALL_USERS are replaced by
	  LIST_USERS.

	* opcaps.c, serve.c, serve-control.c, super_html.c, userlist-server.c:
	capabilities LIST_CONTEST_USERS and LIST_ALL_USERS are replaced by
	  LIST_USERS.

2007-11-29 (r4553) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	installation of filter_expr.html is added.

	* filter_scan.lex:
	aliases for some operations are added:
	  user_id is an alias for uid;
	  prob_id is an alias for prob;
	  lang_id is an alias for lang.

2007-11-29 (r4548) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	(write_priv_all_runs) "Help" link is added for filter exprs.

	* new_server_html.c:
	(priv_main_page) "Problems" link is added.

2007-11-29 (r4545) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	user role constants are conditionally compiled.

	* opcaps.h: copyright notice is updated;
	`OPCAP_PRIV_EDIT_REG' capability bit is added.

	* userlist_clnt.h:
	(userlist_clnt_team_cookie) `locale_id', `p_contest_id' parameters
	  are removed;
	(userlist_clnt_register_contest) `ip', `ssl_flag' parameters are
	  added;
	(userlist_clnt_priv_cookie) `locale_id' parameter is removed;
	(userlist_clnt_priv_cookie_login) `priv_level' parameter is removed.

	* userlist_proto.h:
	(struct userlist_pk_check_cookie) `locale_id' field is removed;
	(struct userlist_pk_cookie_login) new structure;
	(struct userlist_pk_register_contest) `new fields `ip', `ssl_flag'
	  are added.

	* edit-userlist.c:
	calls of `userlist_clnt_register_contest' are updated.

	* ejudge-setup.c:
	(generate_contest_xml) `PRIV_EDIT_REG' bit is added.

	* master.c:
	calls of `userlist_clnt_priv_cookie' are updated.

	* new_server_html.c:
	calls of `userlist_clnt_priv_cookie_login' are updated;
	calls of `userlist_clnt_register_contest' are updated.

	* new_server_html_5.c:
	calls of `userlist_clnt_register_contest' are updated.

	* opcaps.c: copyright notice is updated;
	`PRIV_EDIT_REG' capability bit is added.

	* register.c:
	calls of `userlist_clnt_register_contest' are updated.

	* serve-cmd.c:
	calls of `userlist_clnt_team_cookie' are updated;
	calls of `userlist_clnt_priv_cookie' are updated.

	* serve-control.c:
	calls of `userlist_clnt_priv_cookie' are updated;
	bitmask for master capabilities is updated.

	* super_html.c:
	comment for `PRIV_EDIT_REG' capability is added.

	* super_html_2.c:
	calls of `userlist_clnt_register_contest' are updated.

	* team.c:
	calls of `userlist_clnt_team_cookie' are updated.

	* userlist-server.c:
	(cmd_check_cookie) `locale_id' in input packet is removed;
	(cmd_team_check_cookie) `locale_id' in input packet is removed;
	(cmd_priv_check_cookie) `locale_id' in input packet is removed;
	(cmd_priv_cookie_login) input packet now has type
	  `userlist_pk_cookie_login';
	(cmd_register_contest_2) IP-addresses are checked;
	(cmd_create_member) the serial of the new member is returned.

2007-11-25 (r4541) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h: copyright notice is updated;
	(clar_add_record_new) `utf8_mode' parameter is added.

	* clarlog.c: copyright notice is updated;
	(clar_add_record_new) `utf8_mode' parameter is added;
	  UTF-8 handling is improved.

	* new_server_html.c:
	`clar_add_record_new' calls are updated.

	* userlist-server.c:
	(cmd_get_user_info) packet user_id == 0 is handled.

2007-11-20 (r4535) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_lookup_user) `contest_id' parameter is added.

	* new_server_html.c, super_html_2.c:
	calls of `userlist_clnt_lookup_user' are updated.

2007-11-20 (r4527) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`NEW_SRV_ACTION_VIEW_EXAM_INFO' is added;
	(ns_write_exam_info) new function prototype is added.

	* new_server_html.c:
	(priv_view_exam_info) new function is added;
	(priv_main_page) link to "Examination information" page is added.

	* new_server_html_2.c:
	(ns_write_exam_info) new function.

2007-11-20 (r4524) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	python/Makefile is added to the output list.

2007-11-20 (r4522) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/team_login.c' is removed.

	* userlist.h:
	(userlist_str_to_user_field_code) new function prototype.

	* userlist_clnt.h:
	(userlist_clnt_register_new_2) `p_user_id' parameter is added;
	(userlist_clnt_team_login) removed;
	(userlist_clnt_create_user) `login' parameter is added.

	* userlist_proto.h:
	(userlist_str_to_request) new function prototype.

	* new_server_html.c, new_server_html_4.c, team.c:
	`userlist_clnt_login' is used instead of `userlist_clnt_team_login'.

	* edit-userlist.c, new_server_html_5.c, register.c:
	use of `userlist_clnt_create_user' is updated.

	* userlist.c:
	(userlist_str_to_user_field_code) new function.

	* userlist_proto.c:
	<string.h> is included;
	(userlist_str_to_request) new function.

	* userlist-server.c:
	(cmd_create_user) `login' field is handled.

2007-11-10 (r4508) Alexander Chernov  <cher@ejudge.ru>

	* contest_plugin.h:
	(struct contest_plugin_iface) new member `print_user_reports' added.

	* new_server_html.c:
	(priv_print_users_exam_protocol) contest plugin member
	  `print_user_reports' is called.

2007-11-09 (r4502) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(find_user_variant) new function prototype.

	* sformat.h:
	(struct sformat_extra_data) `variant' field is added.

	* html.c:
	(do_write_kirov_standings) user variant is supported;
	(do_write_moscow_standings) user variant is supported;
	(do_write_standings) user variant is supported.

	* prepare_serve.c:
	(find_user_variant) new function.

	* sformat.c:
	(sformat_message) `variant' field from extra data is printed.

2007-11-08 (r4500) Alexander Chernov  <cher@ejudge.ru>

	* runlog_xml.c:
	(unparse_runlog_xml) fog_time, unfog_time, sched_start_time,
	   stop_time are generated.

2007-11-04 (r4488) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(generate_serve_cfg) "detect_violations" flag is set;
	  java language id is 18 instead of 17;
	(generate_compile_cfg) "txt" language is removed;
	  java language id is 18 instead of 17.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) HTML generation improvements;
	(ns_write_priv_standings) HTML generation improvements.

	* serve_2.c:
	(serve_run_request) `security_violation' support is added.

2007-10-31 (r4487) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `detect_violations' field is added.

	* run_packet.h:
	(struct run_request_packet) `security_violation' field is supported.

	* run_packet_priv.h:
	`FLAGS_SECURITY_VIOLATION' is added.

	* super_proto.h:
	editing of `detect_violations' global configuration variable
	  is supported.

	* prepare.c, prepare_out.c:
	global variable `detect_violations' is supported.

	* run.c:
	security violation support is improved.

	* run_packet_1.c:
	(run_request_packet_read) `security_violation' field is supported.

	* run_packet_2.c:
	(run_request_packet_write) `security_violation' field is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `detect_violations' global configuration variable
	  is supported.

2007-10-30 (r4486) Alexander Chernov  <cher@ejudge.ru>

	* execute.c:
	--security-violation option is added.

2007-10-30 (r4484) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	detection of `task_EnableSecurityViolationError' is added.

	* config.h.in:
	`HAVE_TASK_ENABLESECURITYVIOLATIONERROR' added.

2007-10-30 (r4479) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	detection of task_IsSecurityViolation is added.

	* config.h.in:
	HAVE_TASK_ISSECURITYVIOLATION is added.

	* Makefile.unix.in:
	report_plugin.h is installed to `include' directory.

	* prepare.c:
	`report_plugin_file' global configuration variable is added.

	* execute.c:
	(run_program) security violation detection code is added,
	  the kernel support is required, though...

	* run.c:
	(run_tests) security violation detection code is added,
	  the kernel support is required, though...

2007-10-30 (r4477) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `report_plugin_file' field is added.

	* report_plugin.h:
	(struct report_plugin_iface) new function pointers
	  `generate_tex_user_report', `generate_tex_full_user_report',
	  `generate_tex_problem_report' are added.

	* serve_state.h:
	"report_plugin.h" is included;
	(struct serve_state) new fields `report_plugin', `report_plugin_data'.

	* prepare.c:
	(set_defaults) `report_plugin_file' is handled.

	* prepare_out.c:
	(prepare_unparse_unhandled_global) `report_plugin_file' variable
	  is added.

	* reports.c:
	(tex_fix_unhandled_utf8) renamed from `fix_tex_utf8';
	(tex_armor_verbatim) `static' is removed;
	(tex_armor_verbatim_2) `static' is removed;
	(user_report_generate) parameter list is reorganized;
	(full_user_report_generate) parameter list is reorganized;
	(invoke_latex) `static' is removed;
	(invoke_dvips) `static' is removed;
	(ns_print_user_exam_protocol) report plugin is supported;
	(ns_print_user_exam_protocols) report plugin is supported;
	(problem_report_generate) `static' is added;
	  parameter list is reorganized.

	* serve_state.c:
	(serve_state_destroy) report plugin is unloaded;
	(serve_state_load_contest) report plugin is loaded.

2007-10-29 (r4476) Alexander Chernov  <cher@ejudge.ru>

	* report_plugin.h:
	initial revision

2007-10-28 (r4439) Alexander Chernov  <cher@ejudge.ru>

	* edit-userlist.c:
	(display_registered_users) buffer size increased to 256.

	* new_server_html.c:
	(priv_assign_cyphers_1) completed;
	(priv_assign_cyphers_2) completed;
	(priv_main_page) link to cypher assignment page is added.

	* new_server_tables.c:
	`NEW_SRV_ACTION_ASSIGN_CYPHERS_2' button label is added.

2007-10-27 (r4435) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c, filter_expr.y, filter_scan.lex:
	support for "judge_id" primary expression is implemented.

2007-10-27 (r4434) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_move_files_to_insert_run) cases when the source is removed
	  are excluded.

	* master_html.c:
	(write_priv_all_runs) judged virtual stop events are marked with "!".

	* filter_eval.c, filter_expr.y, filter_scan.lex:
	"missingsource" primary expression is handled.

2007-10-23 (r4432) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_event_queue) `real_time' field is added.

	* new_server_html.c:
	(priv_force_start_virtual) fix.

	* serve_2.c: fixes.

	* serve_state.c:
	(serve_event_add) `real_time' is assigned as well as `time'.

2007-10-23 (r4427) Alexander Chernov  <cher@ejudge.ru>

	* serve_2.c:
	(serve_move_files_to_insert_run) fixes;
	(serve_squeeze_runs) function returns immediately.

2007-10-08 (r4407) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(url_armor_needed) new function prototype.

	* ncurses_utils.h:
	(ncurses_getch) new function prototype;
	(ncurses_getkey) new function prototype.

	* edit-userlist.c:
	utf-8 handling is imporved: russian labels on keys are handled;
	`ncurses_getkey' is used instead of `getch';
	extra whitespace is ignored in contest names.

	* ncurses_utils.c:
	(ncurses_getch) new function;
	(ncurses_getkey) new function.

	* register.c:
	(redirect_to_new_client) new function, which redirects the client
	  to the `new-register', if the `new_managed' contest flag is set.

2007-10-04 (r4405) Alexander Chernov  <cher@ejudge.ru>

	* userlist.c:
	(userlist_clone_user_info) only required members are copied.

2007-09-30 (r4399) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `prev_runs_to_show' field is added.

	* html.c:
	(new_write_user_runs) `prev_runs_to_show' is handled.

	* prepare.c, prepare_out.c:
	new problem configuration variable `prev_runs_to_show' is handled.

2007-09-29 (r4385) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `enable_text_form',
	  `group_name'.

	* super_proto.h:
	editing of the `enable_text_form' problem configuration variable
	  is supported.

	* new_server_html.c:
	(unpriv_submit_run) support for `enable_text_form' problem
	  configuration variable is implemented;
	(unpriv_main_page) support for `enable_text_form' and
	  `group_name' problem configuration variables is implemented.

	* prepare.c:
	`enable_text_form' and `group_name' problem configuration
	  variables are added.

	* prepare_out.c:
	(prepare_unparse_prob) `enable_text_form' is handled;
	(prepare_unparse_unhandled_prob) `group_name' is handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `enable_text_form' problem configuration variable
	  is supported.

	* super_html.c:
	(super_html_edit_contest_page) `allow_reg_data_edit' editing form
	  is moved to a different place.

2007-09-27 (r4379) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	new attribute "allow_reg_data_edit" is added.

	* new-server.h:
	`NEW_SRV_ACTION_REG_DATA_EDIT' is added.

	* super_proto.h:
	editing of the new "allow_reg_data_edit" contest attribute
	  is supported.

	* contests.c:
	new attribute "allow_reg_data_edit" is added.

	* new_server_html.c:
	(unpriv_page_header) link to the registration form is added;
	(get_register_url) new function.

	* serve-control.c, super-serve.c, super_html.c, super_html_2.c:
	editing of the new "allow_reg_data_edit" contest attribute
	  is supported.

2007-09-24 (r4364) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(check_str_2) `utf8_flag' parameter is added;
	(utf8_to_ucs4_buf) new function prototype;
	(utf8_to_ucs4_str) new function prototype;
	(ucs4_to_utf8_size) new function prototype;
	(ucs4_to_utf8_str) new function prototype.

	* misctext.c:
	(check_str_2) `utf8_flag' parameter is added;
	  UTF8 charset is supported;
	(utf8_to_ucs4_buf) new function;
	(utf8_to_ucs4_str) new function;
	(ucs4_to_utf8_size) new function;
	(ucs4_to_utf8_str) new function.

	* new_server_html_5.c:
	(info_table_row) call of `check_str_2' is updated;
	(display_grade_changing_dialog) new function;
	(edit_member_form) grade is changed through pull-down menu.

2007-09-21 (r4357) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	`CONTEST_F_AREA' is added.

	* userlist.h:
	<area> element is supported;
	`USERLIST_NC_AREA' is added;
	(struct userlist_user_info) `area' field is added.

	* contests.c, edit-userlist.c, new_server_html_5.c, super_html.c, userlist.c, userlist_check.c, userlist-server.c, userlist_xml.c, uldb_plugin_xml.c:
	new user info field `area' is supported.

2007-09-20 (r4346) Alexander Chernov  <cher@ejudge.ru>

	* contests.h, userlist.h:
	user information fields `field0' ... `field9' are supported.

	* contests.c, edit-userlist.c, new_server_html_5.c, super_html.c, uldb_plugin_xml.c, userlist.c, userlist_check.c, userlist-server.c, userlist_xml.c:
	user information fields `field0' ... `field9' are supported.

2007-09-20 (r4342) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_5.c:
	minor bugfixes.

	* userlist.c, userlist-server.c, uldb_plugin_xml.c:
	-1 value is allowed for `grade' member field.

2007-09-20 (r4339) Alexander Chernov  <cher@ejudge.ru>

	* userlist_xml.c:
	<instnum> handling is improved.

2007-09-20 (r4337) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	`instnum' user information field is supported.

	* userlist.h:
	<instnum> element is supported.

	* contests.c:
	`instnum' user information field is supported.

	* edit-userlist.c, new_server_html_5.c:
	editing of the `instnum' field is supported.

	* super_html.c:
	editing of the `instnum' editing settings is supported.

	* userlist.c:
	<ctype.h>, <errno.h> are included;
	`instnum' field of the contest-specific user info is supported.

	* userlist-server.c, userlist_xml.c, uldb_plugin_xml.c, userlist_check.c:
	`instnum' field is supported.

2007-09-20 (r4335) Alexander Chernov  <cher@ejudge.ru>

	* userlist_check.c:
	any characters are acceptable for gender and status

2007-09-20 (r4333) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	(userlist_get_member_field_str) `use_locale' parameter is added.

	* edit-userlist.c:
	use of `userlist_get_member_field_str' is updated.

	* new_server_html_5.c:
	use of `userlist_get_member_field_str' is updated.

	* userlist.c:
	"config.h" is included;
	<libintl.h> is included;
	(userlist_get_member_field_str) `use_locale' parameter is added.

	* userlist_check.c:
	use of `userlist_get_member_field_str' is updated.

	* userlist-server.c:
	use of `userlist_get_member_field_str' is updated.

2007-09-20 (r4331) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_5.c:
	field order is changed for personal contests.

2007-09-19 (r4328) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_field) `legend' field is added.

	* contests.c:
	`legend' for contest fields is supported.

	* new_server_html_5.c:
	`legend' for contest fields is supported.

2007-09-15 (r4325) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	"gender" user member info field is supported.

	* userlist.h:
	"gender" user member info field is supported.

	* contests.c:
	"gender" user member info field is supported.

	* edit-userlist.c:
	editing of "gender" field is supported.

	* ejudge_cfg.c:
	(ejudge_cfg_parse) plugins are moved to `plugins' subdirectory.

	* new_server_html_5.c, super_html.c:
	editing of "gender" field is supported.

	* userlist.c, userlist-server.c, userlist_xml.c, userlist_check.c:
	"gender" user member info field is supported.

	* plugin.c, uldb_plugin_xml.c:
	minor plugin rename.

2007-09-01 (r4321) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for "zip", "street" contestant fields is added;
	support for "discipline" member field is added.

	* userlist.h:
	support for "zip", "street" contestant elements is added;
	support for "discipline" member element is added;
	(struct userlist_member) `discipline' field is added;
	(struct userlist_user_info) `zip', `street' fields are added.

	* contests.c, super_html.c:
	support for "zip", "street" contestant fields is added;
	support for "discipline" member field is added.

	* edit-userlist.c, new_server_html_5.c, userlist.c, userlist-server.c, userlist_xml.c, uldb_plugin_xml.c, userlist_check.c:
	support for "zip", "street" contestant elements is added;
	support for "discipline" member element is added.

2007-08-19 (r4314) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(run_tests) `secure_exec_type' bug is fixed.

2007-08-19 (r4312) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(generate_serve_cfg) `problem_navigation' flag is set.

2007-08-18 (r4310) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	"Team standings" -> "Standings".

	* team.c:
	"Team standings" -> "Standings".

2007-08-17 (r4308) Alexander Chernov  <cher@ejudge.ru>

	* cher-configure: --enable-hidden-server-bins option is added.

	* new-server.c, userlist-server.c:
	(load_plugins) call of `ejudge_cfg_unparse_plugins' is commented out.

	* tsc.c: copyright notice is updated;
	(tsc_init) debug message is commented out.

2007-08-12 (r4306) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(print_global) function is removed;
	(print_problem) function is removed;
	(print_all_problems) function is removed;
	(print_language) function is removed;
	(print_all_languages) function is removed;
	(print_tester) function is removed;
	(print_all_testers) function is removed.

	* prepare.c:
	(print_global) function is removed;
	(print_problem) function is removed;
	(print_all_problems) function is removed;
	(print_language) function is removed;
	(print_all_languages) function is removed;
	(print_tester) function is removed;
	(print_all_testers) function is removed.

	* compile.c, run.c, serve.c:
	`-T' option is removed.

	* struct-sizes.c:
	"prepare.h" is included;
	(main) sizes of `struct section_*_data' are printed.

2007-08-09 (r4304) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	string sizes are increased.

2007-08-08 (r4301) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	all binaries are separated in two groups: user-visible
	  (installed into bin) and user-hidden (installed into the
	  directory depending on the --enable-hidden-server-bins configure
	  option value;
	header files are installed to `${includedir}/ejudge'.

	* ejudge-config.v.in: copyright year is updated;
	include directory is now ${includedir}/ejudge.

	* config.h.in:
	`EJUDGE_SERVER_BIN_PATH' is added.

	* ejudge-control.c:
	`EJUDGE_SERVER_BIN_PATH' is used instead of `EJUDGE_PREFIX_DIR'.

	* ejudge-setup.c:
	directory structure is updated.

	* prepare.c:
	(set_defaults)
	  `ejudge_checkers_dir' is now in checkers subdir of EJUDGE_SCRIPT_DIR;
	  language scripts are now in `lang' subdir of `script_dir'.

	* prepare_out.c:
	(generate_abstract_tester) `libdropcaps.so' is now located in
	  `${script_dir}/lang/libdropcaps.so'.

	* run.c:
	(run_tests) `libdropcaps.so' is now located in
	  `${script_dir}/lang/libdropcaps.so'.

	* super_html_3.c:
	  checker include directry is updated to ${includedir}/ejudge;
	  language scripts are now in `lang' subdir of `script_dir'.

2007-08-08 (r4299) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	new option `--enable-hidden-server-bins' is added;
	the path to the ejudge internal binaries is updated depending
	whether the abovementioned option is set.

2007-08-07 (r4293) Alexander Chernov  <cher@ejudge.ru>

	* sformat.h: copyright notice is updated;
	(struct contest_desc) `sid' field is added.

	* new_server_html.c:
	"sformat.h" is included;
	(unpriv_page_header) `standings_url' is supported.

	* sformat.c:
	(sformat_message) "%VS" transformation (print SID) is supported.

2007-08-06 (r4290) Alexander Chernov  <cher@ejudge.ru>

	* pathutl.h:
	(path_add_dir) 64-bit fix;
	(path_normalize) prototype is added;
	(path_make_relative) prototype is added.

	* pathutl.c:
	<reuse/xalloc.h> is added;
	(path_split) completed;
	(path_split_free) new function;
	(path_normalize_split) new function;
	(path_normalize) new function;
	(path_is_prefix) new function;
	(do_relative) new function;
	(path_make_relative) new function.

	* prepare.c:
	`compile_dir' is always normalized.

	* prepare_out.c:
	`compile_dir' variable is written in the relative form.

	* super_html_3.c:
	(super_html_read_serve) `compile_dir' is properly handled.

2007-08-06 (r4287) Alexander Chernov  <cher@ejudge.ru>

	* pathutl.h: copyright notice is updated;
	(pathmake4) prototype removed.

	* prepare.h:
	definition of `ejudge_config' is added;

	* contests.c:
	(parse_contest) fix;
	(contests_unparse) `root_dir' and `conf_dir' are written in
	  minimal form (i. e. avoid full absolute path as long as possible).

	* pathutl.c: copyright notice is updated;
	(start_from_dot) function is removed;
	(pathmake2) `start_from_dot' call is removed;
	(pathmake4) function removed;
	(path_add_dir) 64-bit fix;
	(path_split) new function, unfinished.

	* prepare.c:
	(set_defaults) handling of `root_dir', `conf_dir' is updated;
	  64-bit fixes in pathmake* functions;
	  pathmake2 is used instead of pathmake4.

	* prepare_out.c:
	"ejudge_cfg.h" is included;
	(prepare_unparse_global) `root_dir' and `conf_dir' are written in
	  minimal form (i. e. avoid full absolute path as long as possible).

	* run.c:
	(run_tests) 64-bit fixes: NULL is used instead of 0 in va-functions
	  for null pointer.

	* super_html_3.c:
	(super_html_read_serve) handling of `root_dir', `conf_dir' is updated.

2007-08-06 (r4285) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	definition of `ejudge_config' global variable is added.

	* contests.c:
	"config.h" is included;
	"ejudge_cfg.h" is included;
	(parse_contest) undefined or relative `root_dir' is supported.

	* ejudge-setup.c:
	(xml_armor_2) new function;
	(generate_serve_cfg) relative path is generated for `root_dir';
	(generate_contest_xml) relative path is generated for `root_dir'.

2007-08-05 (r4283) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_unparse_testers) `contests_home_dir' parameter is added.

	* ejudge-setup.c:
	"misctext.h", "pathutl.h" is included;
	(c_armor_2) new function;
	(generate_serve_cfg) `check_dir' is generated as relative path,
	  if its prefix equals to `contests_home_dir'.

	* prepare.c:
	(set_defaults) if the tester `check_dir' variable is relative,
	  it is prefixed with EJUDGE_CONTESTS_HOME_DIR;
	(prepare_tester_refinement) the same as above.

	* prepare_out.c:
	(c_armor_2) new function;
	(generate_abstract_tester) `contests_home_dir' parameter is added;
	  `check_dir' is generated as relative path instead of absolute if
	  the path prefix equals to `contests_home_dir';
	(prepare_unparse_testers) `contests_home_dir' parameter is added;
	  `contests_home_dir' is passed to `generate_abstract_tester'.

	* super_html_3.c:
	(unparse_serve_cfg) call of `prepare_unparse_testers' is updated.

2007-08-05 (r4281) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(get_variant_map_version) header generation is improved;
	(prepare_parse_variant_map) bug is fixed.

	* prepare_out.c:
	(prepare_unparse_unhandled_prob) `xml_file' configuration variable
	  is handled;
	(prepare_unparse_variants) version 2 variant file is generated.

	* super_html_3.c:
	(parse_variant_map) removed, the `prepare_parse_variant_map' from
	  `prepare.c' should be used instead;
	(super_html_update_variant_map) `prepare_parse_variant_map' is used
	  instead of local `parse_variant_map';
	  user general variants are supported.

2007-08-05 (r4280) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	(generate_serve_cfg)
	`secure_run' global configuration variable is set if
	  `CONF_HAS_SECURE_EXEC' is defined in config.h.

2007-08-05 (r4278) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	ac_cv_no_kernel is never set to 1, so capexec and libdropcaps
	are always compiled;
	CONF_HAS_LIBCAP is set to 1, if `libcap' library is available;
	CONF_HAS_SECURE_EXEC is set to 1, if any kind of secure execution is
	available.

	* config.h.in:
	CONF_HAS_SECURE_EXEC is added.

2007-08-04 (r4274) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	bug in secure exec types parsing is fixed.

2007-08-04 (r4272) Alexander Chernov  <cher@ejudge.ru>

	* fileutl.h: copyright notice is updated;
	(scan_dir) new parameter `res_size' is added to allow specifying
	  of the buffer size.

	* prepare.h:
	`SEXEC_*' secure run enum type is added;
	(struct section_tester_data) `secure_exec_type', `secure_exec_type_val'
	  fields are added;
	(prepare_parse_secure_exec_type) new function prototype;
	(prepare_parse_variant_map) new function prototype.

	* run_packet.h:
	(struct run_request_packet) `secure_run' flag is added.

	* run_packet_priv.h:
	`FLAGS_SECURE_RUN' is added.

	* tsc.h:
	rdtscl, rdtsc macros are removed;
	rdtscll macro is updated to the current linux kernel version;
	version for x86_64 is added.

	* compile.c:
	(do_loop) `scan_dir' call is updated.

	* ejudge-setup.c:
	(generate_serve_cfg) `secure_exec_type' tester variable is used
	  instead of direct specification of secure invocation tools.

	* job-server.c: copyright year is updated;
	(do_work) call of `scan_dir' is updated.

	* new_server_html.c:
	(ns_loop_callback) call of `scan_dir' is updated.

	* prepare.c:
	<errno.h> is included;
	new tester parameter `secure_exec_type' is added;
	(get_variant_map_version) `log_f', `head_f' parameters are added;
	(parse_vm_v1) `state' parameter is removed;
	  `log_f', `foot_f' parameters are added;
	(parse_vm_v2) the same, as above;
	(prepare_parse_variant_map) renamed from `parse_variant_map';
	  `log_f', `p_header_txt', `p_footer_txt' parameters are added;
	(prepare_parse_secure_exec_type) new function;
	(set_defaults) call of `prepare_parse_variant_map' is updated.

	* prepare_out.c:
	(generate_abstract_tester) `secure_exec_type' variable is used instead
	  of direct specification of secure invocation tools.

	* serve.c:
	(do_loop) `scan_dir' calls are updated.

	* serve_2.c:
	(serve_run_request) `secure_run' flag is passed to the tester.

	* run.c:
	(run_tests) new tester `secure_exec_type_val' tester configuration
	  variable is handled;
	(do_loop) call of `scan_dir' is updated;
	  the resources are freed better;
	(process_default_testers) minor memory leak is fixed.

	* run_packet_1.c:
	(run_request_packet_read) `secure_run' flag is handled.

	* run_packet_2.c:
	(run_request_packet_write) `secure_run' flag is handled.

2007-08-04 (r4270) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	  `extra/captest' directory is added to the `distclean' rule.

2007-08-04 (r4268) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	`-lcap' library presence is configured;
	extra/captest directory is added to processed dirs.

2007-08-04 (r4264) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_main_page) gcc compilation warnings are fixed.

	* new_server_html_5.c:
	(main_page) gcc compilation warnings are fixed.

	* prepare.c:
	(set_defaults) gcc compilation warnings are fixed.

	* problem_xml.c:
	(parse_answer_variants) gcc compilation warnings are fixed.

	* run.c:
	(process_default_testers) gcc compilation warnings are fixed.

	* startstop.c:
	(start_switch_user) gcc compilation warnings are fixed.

	* userlist-server.c:
	(cmd_import_csv_users) gcc compilation warnings are fixed.

2007-08-02 (r4262) Alexander Chernov  <cher@ejudge.ru>

	* l10n.c:
	"en", "en_US", "English" and
	"ru", "ru_RU", "Russian" locale names are supported.

	* reports.c:
	(full_user_report_generate) the total score is printed both for
	  named and for cyphered protocols;
	  the score is generated correctly for RUN_OK submits (i. e.
	  `full_score' is used unless `variable_full_score' is set).

	* userlist-server.c:
	"transitive contest sharing" error is detected in all situations.

2007-08-02 (r4260) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	new kernel secure execution interface (ptrace-based) is supported;
	`task_fPrintArgs' function is detected;
	HAVE_CAP_SYS_OPERATIONS is set in config.h if this capability works.

	* config.h.in:
	`HAVE_CAP_SYS_OPERATIONS' is added;
	`HAVE_TASK_FPRINTARGS' is added.

2007-07-31 (r4252) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new actions are added.

	* prepare.h:
	new global variables `full_exam_protocol_header_file',
	  `full_exam_protocol_footer_file' are added.

	* html.c:
	(do_write_kirov_standings) full_score is assigned to the score
	  if the status is OK in OLYMPIAD mode.

	* new_server_html.c:
	(priv_edit_run) score is always allowed to edit;
	(priv_view_users_page) "Print UFC protocol" button is added;
	(priv_print_user_exam_protocol) `NEW_SRV_ACTION_PRINT_UFC_PROTOCOL'
	  is supported;
	(priv_print_users_exam_protocol) the same as above.

	* new_server_html_2.c:
	(ns_user_info_page) "Print UFC protocol" button is added.

	* new_server_tables.c:
	new button labels are added.

	* prepare.c, prepare_out.c:
	new global variables `full_exam_protocol_header_file',
	  `full_exam_protocol_footer_file' are added.

	* reports.c:
	(full_user_report_generate) cyphered protocol is supported.

2007-07-29 (r4249) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new actions NEW_SRV_ACTION_PRINT_USER_FULL_PROTOCOL,
	  NEW_SRV_ACTION_PRINT_SELECTED_USER_FULL_PROTOCOL
	  are added;
	(ns_print_user_exam_protocol) `full_report', `use_cypher'
	  parameters are added;
	(ns_print_user_exam_protocols) the same.

	* new_server_html.c:
	(priv_view_users_page) "Print full examination protocols"
	  button is added;
	(priv_print_user_exam_protocol) full protocol mode is supported;
	(priv_print_users_exam_protocol) full protocol mode is supported;
	(virtual_stop_callback) call of `ns_print_user_exam_protocol'
	  is updated;
	(unpriv_command) the same.

	* new_server_html_2.c:
	(ns_user_info_page) "Print full user protocol" button is added.

	* new_server_tables.c:
	new button labels are added.

	* reports.c:
	(tex_armor_needed) commented out;
	(full_user_report_generate) new function;
	(ns_print_user_exam_protocol) `full_report', `use_cypher' parameters
	  are added;
	(ns_print_user_exam_protocols) the same as above.

2007-07-29 (r4248) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_contest_operation) "Testing finished" button now works
	  for virtual olympiad contests;
	(priv_main_page) the same;
	(unpriv_view_report) virtual olympiad contest support is improved;
	(unpriv_main_page) the same.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) virtual olympiad contest support is
	  improved.

2007-07-29 (r4246) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_force_start_virtual) bug fixed: the usec time was not
	  multiplied by 1000.

2007-07-28 (r4244) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	(write_runs_dump) EMPTY, VIRTUAL START, VIRTUAL STOP, and invalid
	  entries are handled correctly.

2007-07-28 (r4242) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	(distclean) rule now works correctly.

	* new-server.h:
	(ns_print_user_exam_protocol) `phr' parameter is removed;
	(ns_print_user_exam_protocols) the same;
	(ns_print_prob_exam_protocol) the same.

	* prepare.h, prepare_dflt.h:
	`enable_auto_print_protocol' global configuration variable is added.

	* serve_state.h:
	(struct serve_event_queue) `handler' field is added;
	(serve_event_add) `handler' parameter is added.

	* super_proto.h:
	editing of the `enable_auto_print_protocol' global configuration
	  variable is supported.

	* new_server_html.c:
	(priv_print_user_exam_protocol) call of `ns_print_user_exam_protocol'
	  is updated;
	(priv_print_users_exam_protocol) call of
	  `ns_print_user_exam_protocols' is updated;
	(priv_print_problem_exam_protocol) call of
	  `ns_print_prob_exam_protocol' is updated;
	(virtual_stop_callback) new function to print the user protocol
	  on "virtual stop" event;
	(unpriv_command) calls of `serve_event_add' are updated;
	  the user protocol is printed on "virtual stop" event.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) hyperlink to user info is generated for
	  virtual stop entries.

	* prepare.c, prepare_out.c:
	`enable_auto_print_protocol' global configuration variable is added.

	* reports.c:
	(tex_armor_verbatim_2) bug is fixed;
	VERBATIM_WIDTH constant (70) is used instead of width value
	  on calls of `tex_armor_verbatim_2';
	(user_report_generate) `phr' parameter is removed;
	(ns_print_user_exam_protocol) `phr' parameter is removed;
	(ns_print_user_exam_protocols) `phr' parameter is removed;
	(problem_report_generate) `phr' parameter is removed;
	(ns_print_prob_exam_protocol) `phr' parameter is removed.

	* run.c:
	(invoke_valuer) all signals are enabled `task_EnableAllSignals';
	(run_tests) the same.

	* serve_2.c:
	(serve_collect_virtual_stop_events) call of `serve_event_add' is
	  updated;
	(handle_virtual_stop_event) `cnts' parameter is added;
	  call of `serve_event_add' is updated;
	  the event handler provided by `serve_event_add' is invoked;
	(handle_judge_olympiad_event) the event handler provided by
	  `serve_event_add' is invoked;
	(serve_handle_events) call of `handle_virtual_stop_event' is updated.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `enable_auto_print_protocol' global configuration
	  variable is supported.

	* serve_state.c:
	(serve_event_add) `handler' parameter is added.

2007-07-26 (r4237) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h:
	(teamdb_lookup_cypher) new function prototype;
	(teamdb_get_cypher) new function prototype;
	(teamdb_get_userlist) new function prototype.

	* filter_eval.c:
	"userlist.h" is included;
	`cypher' and `curcypher' tokens are supported.

	* filter_expr.y:
	"cypher", "curcypher" expressions are supported.

	* filter_scan.lex:
	`cypher', `curcypher' tokens are supported.

	* new_server_html_2.c:
	(ns_upload_csv_runs) "cypher" column is supported.

	* prepare.c:
	(prepare_global_free_func) the protocol header and footer texts are
	  freed.

	* serve_2.c:
	(serve_rejudge_run) `manual_checking' and `disable_testing' runs
	  are skipped.

	* reports.c:
	(tex_armor_verbatim) the long lines are printed into several output
	  lines;
	(chop2) new function;
	(write_xml_tex_testing_report) new function;
	(problem_report_generate) basically completed.

	* teamdb.c:
	(teamdb_lookup_cypher) new function;
	(teamdb_get_cypher) new function;
	(teamdb_get_userlist) new function.

2007-07-25 (r4235) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`NEW_SRV_ACTION_PRINT_PROBLEM_PROTOCOL' action is added;
	(ns_print_prob_exam_protocol) new function prototype.

	* prepare.h:
	new `prob_exam_protocol_header_file', `prob_exam_protocol_header_file'
	  global configuration variables are added.

	* new_server_html.c:
	(priv_print_problem_exam_protocol) new function to handle
	  `PRIV_PROBLEM_PROTOCOL' request.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) "Print problem protocol" control is added.

	* new_server_tables.c:
	label for `NEW_SRV_ACTION_PRINT_PROBLEM_PROTOCOL' button is added.

	* prepare.c, prepare_out.c:
	new `prob_exam_protocol_header_file', `prob_exam_protocol_header_file'
	  global configuration variables are added, these variables are
	  treated as unhandled global variables for now.

	* reports.c:
	"random.h" is included;
	(tex_armor_verbatim_2) new function, which passes through characters
	  with code >= 0x7f;
	(user_report_generate) TARMOR is used for surname, etc;
	  `tex_armor_verbatim_2' is called for PROB_TYPE_TEXT_ANSWER problems;
	(ns_print_user_exam_protocol) `.noprint' and `.noclean' special files
	  are honored in the print working directory;
	(ns_print_user_exam_protocols) the same as above;
	(problem_report_generate) new function, not yet completed;
	(ns_print_prob_exam_protocol) new function.

2007-07-24 (r4233) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(check_config) test counting in output-only variant problems is
	  fixed.

2007-07-23 (r4231) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_olympiad_final_user_report) new function prototype.

	* new_server_html.c:
	(unpriv_main_page) support for `disable_virtual_auto_judge'
	  global configuration variable is implemented;
	(do_xml_user_state) `disable_virtual_auto_judge' is honored.

	* reports.c:
	(ns_olympiad_final_user_report) new function.

	* run.c:
	(check_config) bug with incorrect counting of the number of tests
	  for output-only problems is fixed.

2007-07-23 (r4229) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/import_csv_users.c' file is added.

	* new-server.h:
	new commands `NEW_SRV_ACTION_FORCE_START_VIRTUAL',
	  `NEW_SRV_ACTION_PRINT_SELECTED_USER_PROTOCOL' are added;
	(ns_print_user_exam_protocol) `use_user_printer' parameter is added;
	(ns_print_user_exam_protocols) new function prototype.

	* prepare.h, prepare_dflt.h:
	`disable_virtual_start', `disable_virtual_auto_judge' global
	  configuration variables are added.

	* super_proto.h:
	editing of the `disable_virtual_start' and `disable_virtual_auto_judge'
	global configuration variables is supported.

	* userlist_clnt.h:
	(userlist_clnt_import_csv_users) new function prototype.

	* userlist_proto.h:
	`ULS_IMPORT_CSV_USERS' command code is added;
	`ULS_TEXT_DATA_FAILURE' responce code is added;
	`ULS_ERR_TRANSITIVE_SHARING' error code is added.

	* edit-userlist.c:
	(display_registered_users) CSV importing is supported ('v' command).

	* new_server_html.c:
	(priv_force_start_virtual) new function that handles
	  `NEW_SRV_ACTION_FORCE_START_VIRTUAL';
	(priv_view_users_page) "Force virtual start" and "Print protocols"
	  buttons are added;
	(priv_print_user_exam_protocol) permission check is added;
	  call of `ns_print_user_exam_protocol' is updated;
	(priv_print_users_exam_protocol) new function that handles
	  `NEW_SRV_ACTION_PRINT_SELECTED_USER_PROTOCOL';
	(unpriv_print_status) `disable_virtual_start' global configuration
	  variable is honored;
	(unpriv_command) the same;
	(unpriv_page_header) the same;
	(unpriv_main_page) the same.

	* new_server_tables.c:
	new button labels are added.

	* prepare.c, prepare_out.c:
	`disable_virtual_start', `disable_virtual_auto_judge' global
	  configuration variables are added.

	* reports.c:
	(ns_print_user_exam_protocol) `use_user_printer' parameter is added;
	  the printer defined in the user database is used in this case;
	(ns_print_user_exam_protocols) new function, which prints the
	  protocol for the given users.

	* serve_2.c:
	(handle_virtual_stop_event) `disable_virtual_auto_judge' global
	  configuration variable is honored.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `disable_virtual_start' and `disable_virtual_auto_judge'
	global configuration variables is supported.
	

	* userlist_proto.c:
	new error description is added.

	* userlist-server.c:
	"csv.h" is included;
	(cmd_import_csv_users) new function to handle CSV import request.

2007-07-21 (r4227) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_get_checker_comment) new function prototype is added;
	(ns_print_user_exam_protocol) new function prototype;
	`utf8_mode' global variable is added.

	* userlist.h:
	(userlist_real_unparse_user) new paramer `force_first_member' is added;
	(userlist_unparse_for_standings) the same as above.

	* new-server.c:
	`utf8_mode' global variable is added, it is set to 1, if the
	  current locale is UTF-8 based locale.

	* new_server_html.c:
	(priv_print_user_exam_protocol) new command handled.

	* new_server_html_2.c:
	(ns_user_info_page) `Print user protocol' button is added;
	(ns_get_checker_comment) renamed from `get_checker_comment';
	  `need_html_armor' parameter is added;
	(ns_write_olympiads_user_runs) call of `ns_get_checker_comment'
	  is updated.

	* new_server_tables.c:
	`NEW_SRV_ACTION_PRINT_USER_PROTOCOL' is added.

	* reports.c:
	the user examination report is basically completed.

	* run.c:
	(prepare_checker_comment) UTF-8 is handled correctly.

	* sformat.c:
	"%%" is handled correctly.

	* userlist-server.c:
	(cmd_list_standings_users) the first contestant is unparsed
	  (new `force_first_member' parameter is used) for personal contests.

	* userlist_xml.c:
	(userlist_real_unparse_user) `force_first_member' parameter is added;
	  if this parameter is true, the first contestant is unparsed;
	(userlist_unparse_user) call of `userlist_real_unparse_user' updated;
	(userlist_unparse) the same as above;
	(userlist_unparse_for_standings) `force_first_member' parameter is
	  added and passed to `userlist_real_unparse_user'.

2007-07-18 (r4224) Alexander Chernov  <cher@ejudge.ru>

	* reports.c:
	initial revision

2007-07-18 (r4223) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	reports.c is added.

	* misctext.h:
	(get_nth_alternative) function prototype is added.

	* prepare.h:
	(struct section_global_data) new fields
	  `user_exam_protocol_header_file', `user_exam_protocol_footer_file',
	  `user_exam_protocol_header_txt', `user_exam_protocol_footer_txt'.

	* problem_xml.h:
	  "tex" attribute is supported.

	* misctext.c:
	(get_nth_alternative) new function copied here from
	  `new_server_html_2.c'.

	* new_server_html_2.c:
	(get_nth_alternative) function moved to `misctext.c'.

	* prepare.c:
	`user_exam_protocol_header_file', `user_exam_protocol_footer_file'
	  global configuration variables are added.

	* prepare_out.c:
	(prepare_unparse_global) `user_exam_protocol_header_file',
	  `user_exam_protocol_footer_file' are added to the list of unsupported
	  global variables.

	* problem_xml.c:
	  "tex" attribute is supported.

2007-07-17 (r4220) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	some previously forgotten object files are cleared on `clean'.

	* contests.h:
	support for <user_contest> element is added.

	* misctext.h:
	(utf8_cnt) `p_w' parameter is added.

	* super-proto.h:
	editing of <user_contest> element is supported.

	* contests.c:
	support for <user_contest> element is added.

	* contest_tmpl.c:
	(contest_tmpl_clone) `main_url' and `standings_url' elements
	  are updated to the new contest number.

	* edit-userlist.c:
	UTF-8 support is improved.

	* ejudge-control.c: copyright year is updated;
	(command_start) `force_mode' parameter is added;
	  force mode (-f) is supported;
	(main) `-f' option (force_mode) is supported;
	  use of `command_start' is updated.

	* html.c, master_html.c, new_server_html_2.c:
	use of `run_status_str' is updated: buffer size is specified in
	  all calls;
	buffer size for status string is increased to 128 bytes.

	* misctext.c:
	(utf8_cnt) `p_rem' parameter is added;
	  the remaining screen width is returned.

	* new_server_html.c:
	(priv_view_users_page) contest users sharing is supported;
	(anon_select_contest_page) new function to select contest if
	  no contest_id is specified;
	(unprivileged_entry_point) call of `anon_select_contest_page'
	  is added but is commented out for now.

	* run.c:
	(html_print_by_line) utf-8 output armoring is supported;
	(prepare_checker_comment) XML armoring is hardened.
	(main) utf-8 mode is activated, if ejudge charset is UTF-8.

	* runlog.c:
	(run_status_str) `snprintf' is used instead of `strncpy'.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of <user_contest> element is supported.

	* teamdb.c:
	<user_contest> element is supported.

	* userlist-server.c:
	<user_contest> element is supported in most of commands.

2007-07-10 (r4218) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	(struct userlist_user_info) new fields `exam_id' and `exam_cypher'
	  are added.

	* edit-userlist.c, uldb_plugin_xml.c, userlist_xml.c:
	new fields `exam_id' and `exam_cypher' are supported.

	* sformat.c, userlist.c: copyright year is updated;
	new fields `exam_id' and `exam_cypher' are supported.

2007-07-10 (r4216) Alexander Chernov  <cher@ejudge.ru>

	* ncurses_utils.h: copyright notice is updated;
	(ncurses_edit_string) `utf8_mode' parameter is added;
	(ncurses_choose_file) `utf8_mode' parameter is added.

	* edit-userlist.c:
	"ncurses_utils.h" is included;
	(edit_string) removed, `ncurses_edit_string' is used instead;
	`ncurses_edit_string' is used instead of `edit_string'.

	* ejudge-setup.c:
	<langinfo.h> is included;
	use of `ncurses_edit_string' and `ncurses_choose_file' are updated;
	(main) utf-8 charset is detected and the flag is set.

	* ncurses_utils.c: copyright notice is updated;
	"misctext.h" is included;
	(ncurses_edit_string) `utf8_mode' parameter is added;
	  utf-8 charset is properly supported;
	(do_choose_file) `utf8_mode' parameter is added;
	(ncurses_choose_file) `utf8_mode' parameter is added.

2007-07-09 (r4214) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	"w" suffix is added to ncurses library in case of UTF-8 charset.

	* misctext.h:
	(utf8_fix_string) new function prototype is added;
	(utf8_cnt) new function prototype is added.

	* edit-userlist.c:
	"misctext.h" is included;
	<langinfo.h> is included;
	UTF-8 is handled correctly in all functions;
	ESC ('\033') is handled as escape command.

	* misctext.c:
	(utf8_fix_string) new function;
	(utf8_cnt) new function.

2007-07-09 (r4212) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	"w" suffix is added for ncurses libraries in case of
	UTF-8 charset

2007-07-08 (r4210) Alexander Chernov  <cher@ejudge.ru>

	* csv.c:
	(csv_parse) empty CSV detection bug is fixed.

	* runlog.c:
	(runlog_check) ssl_flag and ipv6_flag are cleared before check.

2007-07-07 (r4208) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	`PREPARE_FIELD_PROB_XML_FILE' is added.

	* prepare.c:
	(prepare_set_prob_value) `xml_file' problem variable is supported.

	* super_html_3.c:
	(super_html_check_tests) select-one XML-specified problems are
	  skipped.

2007-07-07 (r4206) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(invoke_valuer) the execution times is added to the score file.

2007-07-05 (r4199) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for <slave_rules>, <run_managed_on> is implemented.

	* problem_xml.h:
	support for <notes> element is added.

	* contests.c:
	support for <slave_rules>, <run_managed_on> is implemented.

	* expat_iface.c:
	(xml_unparse_raw_tree) element text is subject for variable
	  substitution.

	* new_server_html.c:
	(unpriv_unparse_statement) ${input_file}, ${output_file} are supported;
	  <notes> element is supported.

	* problem_xml.c:
	support for <notes> element is added.

	* super-serve.c:
	slave mode (-s) support is implemented.

2007-07-01 (r4197) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new fields `valuer_cmd',
	  `valuer_env' are added.

	* problem_xml.h:
	(struct problem_desc) `package' field is added.

	* serve_state.h:
	(serve_judge_built_in_problem) new function prototype.

	* super_proto.h:
	editing of `valuer_cmd', `valuer_env' variables is supported.

	* testing_report_xml.h: copyright year is updated;
	(struct testing_report_xml) new fields `valuer_comment',
	  `valuer_judge_comment', `valuer_errors' are added.

	* expat_iface.c:
	(start_hnd) bug is fixed.

	* master_html.c:
	valuer information is displayed.

	* new_server_html.c:
	(unpriv_submit_run) problem XML is supported;
	  `serve_judge_built_in_problem' is called;
	(unpriv_unparse_statement) XML problem support is improved;
	(unpriv_main_page) bug is fixed.

	* new_server_html_2.c:
	(get_source) bug is fixed.

	* prepare.c, prepare_out.c:
	support for `valuer_cmd' and `valuer_env' is improved.

	* problem_xml.c:
	  support for "package" attribute is added.

	* run.c:
	(generate_xml_report) new parameters are added: `valuer_comment',
	  `valuer_judge_comment', `valuer_errors';
	  these values are written to XML report;
	(read_checker_score) `what' parameter is added;
	(invoke_valuer) new function to invoke the score valuer;
	(run_tests) parameters of `read_checker_score' are updated;
	  `invoke_valuer' is called;
	  parameters of `generate_xml_report' are updated.

	* runlog.c:
	(run_count_all_attempts) virtual events are ignored;
	(run_has_transient_user_runs) bug is fixed.

	* serve_2.c:
	(serve_judge_built_in_problem) bug fixes.

	* serve-control.c, super-serve.c, super_html_3.c:
	editing of `valuer_cmd', `valuer_env' variables is supported.

	* testing_report_xml.c: copyright year is updated;
	new elements <valuer_comment>, <valuer_judge_comment>,
	  <valuer_errors> are supported.

2007-06-22 (r4195) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_state_destroy) `cnts' parameter is added;
	(serve_rejudge_run) `cnts' parameter is added;
	(serve_rejudge_by_mask) `cnts' parameter is added;
	(serve_rejudge_problem) `cnts' parameter is added;
	(serve_judge_suspended) `cnts' parameter is added;
	(serve_rejudge_all) `cnts' parameter is added;
	(serve_handle_events) `cnts' parameter is added;
	(serve_judge_virtual_olympiad) `cnts' parameter is added.

	* new_server_html.c:
	(ns_client_destroy_callback) call of `serve_judge_suspended' updated;
	(ns_unload_contest) call of `serve_state_destroy' is updated;
	(handle_pending_xml_import) `cnts' parameter is added;
	  call of `serve_judge_suspended' is updated;
	(ns_check_contest_events) call of `serve_handle_events' is updated;
	(priv_change_status) call of `serve_rejudge_run' is updated;
	(priv_rejudge_displayed) call of `serve_rejudge_by_mask' is updated;
	(priv_rejudge_problem) call of `serve_rejudge_problem' is updated;
	(priv_rejudge_all) call of `serve_judge_suspended' is updated;
	  call of `serve_rejudge_all' is updated.

	* new_server_html_4.c:
	(cmd_operation) call of `serve_judge_suspended' is updated.

	* serve.c:
	(cmd_rejudge_by_mask) call of `serve_rejudge_by_mask' is updated;
	(cmd_priv_command_0) call of `serve_rejudge_all' is updated;
	  call of `serve_judge_suspended' is updated;
	  call of `serve_rejudge_problem' is updated;
	(cmd_edit_run) call of `serve_rejudge_run' is updated.

	* serve_2.c:
	(serve_rejudge_run) `cnts' parameter is added;
	  rejuding of the select-one problems with XML-specified answers
	  is supported;
	(serve_rejudge_by_mask) `cnts' parameter is added;
	  call of `serve_rejudge_run' is updated;
	(serve_rejudge_problem) `cnts' parameter is added;
	  calls of `serve_rejudge_run' are updated;
	(serve_judge_suspended) `cnts' parameter is added;
	  call of `serve_rejudge_run' is updated;
	(serve_rejudge_all) `cnts' parameter is added;
	  calls of `serve_rejudge_run' are updated;
	(handle_judge_olympiad_event) `cnts' parameter is added;
	  call of `serve_judge_virtual_olympiad' is updated;
	(serve_handle_events) `cnts' parameter is added;
	  call of `handle_judge_olympiad_event' is updated;
	(serve_judge_virtual_olympiad) `cnts' parameter is added;
	  call of `serve_rejudge_run' is updated.

	* serve_state.c:
	(serve_state_destroy) `cnts' parameter is added;
	  call of `serve_judge_suspended' is updated;
	(serve_state_load_contest) call of `serve_state_destroy' is updated.

2007-06-22 (r4194) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(get_source) support for answers in problem XML file is added.

	* run.c:
	(prepare_checker_comment) declared as `static';
	(check_config) select-one problems with answers specified in XML
	  file are ignored.

	* serve_2.c:
	"config.h", "misctext.h" are included;
	(serve_judge_built_in_problem) new function to handle select-one
	  answers in XML file.

2007-06-18 (r4185) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.h:
	(xml_unparse_raw_tree) `vars', `vals' parameters repace
	  `varsubst' parameter.

	* mime_type.h: copyright year is updated;
	(mime_type_parse_suffix) new function prototype is added.

	* new-server.h:
	new command `NEW_SRV_ACTION_GET_FILE' is added.

	* new_server_proto.h:
	new error code `NEW_SRV_ERR_INV_FILE_NAME' is added.

	* prepare.h:
	(find_variant) `p_virtual_variant' parameter is added.

	* prepare_serve.h: copyright year is updated;
	(find_variant) `p_virtual_variant' parameter is added.

	* expat_iface.c:
	(do_subst) variable substitution is implemented;
	(xml_unparse_raw_tree) `vars', `vals' parameters repace
	  `varsubst' parameter.

	* filter_eval.c, html.c, master_html.c:
	uses of `find_variant' are updated.

	* mime_type.c: copyright year is updated;
	(mime_type_parse_suffix) new function.

	* new_server_html.c:
	use of `find_variant' are updated;
	(unpriv_unparse_statement) support for variable substitutions
	  in problem XML statement is added;
	(unpriv_get_file) new function to handle `GET_FILE' request.

	* new_server_html_2.c, new_server_html_4.c:
	uses of `find_variant' are updated.

	* new_server_proto.c:
	new error code is handled.

	* prepare.c:
	(get_variant_map_version) new function;
	(parse_vm_v1) new function;
	(parse_vm_v2) new function;
	(parse_variant_map) variant map version 1 and 2 are supported.

	* prepare_serve.c: copyright year is updated;
	(find_variant) `p_virtual_variant' parameter is added for virtual
	  variant support.

	* printing.c:
	(print_banner_page) use of `find_variant' is updated;
	  virtual variants are supported.

	* serve.c:
	uses of `find_variant' are updated.

	* serve_2.c:
	(serve_run_request) use of `find_variant' is updated.

2007-06-13 (r4180) Alexander Chernov  <cher@ejudge.ru>

	* settings.h: copyright notice is updated;
	MAX_CGI_VALUE_LEN increased to 2MiB.

	* new_server_html.c:
	(priv_contest_operation) `run_set_finish_time' is called.

	* runlog.c:
	RUNLOG_MAX_SIZE increased to 2MiB.

2007-06-09 (r4174) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_handle_http_request) CGI_PROG_SUFFIX is supported.

2007-06-01 (r4164) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	gcc 4.2 warnings are fixed.

2007-05-18 (r4162) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.h:
	(xml_unparse_raw_tree) new function prototype.

	* problem_xml.h: progress...

	* expat_iface.c:
	"misctext.h" is included;
	(xml_unparse_raw_tree) new function.

	* problem_xml.c: progress...

2007-05-18 (r4160) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	problem_common.[hc], problem_xml.[hc] are added.

	* prepare.h:
	"problem_common.h" is included;
	problem type enumeration moved to `problem_common.h'.

	* problem_common.h: initial revision.

	* problem_xml.h: progress...

	* prepare.c:
	(parse_problem_type) moved to `problem_common.c' as
	  `problem_parse_type';
	(prepare_unparse_problem_type) moved to `problem_common.c'
	  as `problem_unparse_type'.

	* prepare_out.c, super_html_3.c:
	`prepare_unparse_problem_type' renamed to `problem_unparse_type'.

	* problem_common.c: initial revision.

	* problem_xml.c: progress...

2007-05-11 (r4159) Alexander Chernov  <cher@ejudge.ru>

	* problem_xml.c, problem_xml.h:
	initial revision

2007-05-11 (r4153) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `online_users' field is added;
	  "Testing finished" flag manipulation commands are added.

	* protocol.h:
	(struct prot_serve_status_v2) `testing_finished' field is added.

	* serve_state.h:
	(struct serve_state) `testing_finished' field is added.

	* new_server_html.c:
	(priv_contest_operation) setting and clearing "Testing finished"
	  flag is supported;
	(unpriv_print_status) "Testing finished" flag is honored;
	  on-line users count is printed;
	(priv_main_page) "Testing finished" flag is honored;
	  "Testing finished" control buttons are added;
	(unpriv_page_header) "Testing finished" flag is honored.

	* new_server_tables.c:
	button labels are added.

	* serve_2.c:
	(serve_update_status_file) `testing_finished' flag is saved;
	(serve_load_status_file) `testing_finished' flag is loaded.

2007-05-07 (r4149) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.h: copyright notice is updated;
	(struct xml_parse_spec) new fields `text_elem' and `unparse_entity'
	  are added.

	* expat_iface.c:
	(start_hnd) `text_elem' parameter is supported;
	(chardata_hnd) `unparse_entity' parameter is supported;
	(xml_skipped_entity_handler) new function;
	(xml_build_tree) skipped entity handler is set;
	(xml_build_tree_str) the same;
	(xml_build_tree_file) the same.

2007-05-07 (r4147) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_edit_run) bug in setting run user_id is fixed.

2007-05-05 (r4144) Alexander Chernov  <cher@ejudge.ru>

	* protocol.h:
	(struct prot_serve_status_v2) new fields `max_online_count',
	  `max_online_time' are added.

	* serve_state.h:
	(struct serve_state) new fields `max_online_count',
	  `max_online_time' are added.

	* new_server_html.c:
	(priv_main_page) maximal number of online users is reported;
	(unpriv_main_page) maximal number of online users is counted.

	* serve_2.c:
	(serve_update_status_file) `max_online_count', `max_online_time'
	  vars are written;
	(serve_load_status_file) `max_online_count', `max_online_time'
	  are read.

2007-05-04 (r4140) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct last_access_info) new type;
	(struct last_access_array) new type;
	(struct last_access_idx) new type;
	(struct contest_extra) new fields `user_access', `user_access_idx';
	(ns_write_online_users) new function prototype.

	* new_server_html.c:
	(ns_unload_contests) online user info is freed;
	(priv_view_online_users) new function;
	(priv_main_page) the number of online users is calculated;
	(unpriv_main_page) online user info is updated.

	* new_server_html_2.c:
	(ns_write_online_users) new function.

2007-05-04 (r4138) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `next_run_id' field is removed;
	  `next_extra' is added.

	* new-server.c:
	(cmd_http_request) `next_run_id' field is removed.

	* new_server_html.c:
	(priv_user_toggle_flags) new function;
	`next_extra' is used instead of `next_run_id';
	toggle actiosn are implemented.

	* new_server_html_2.c:
	(ns_user_info_page) top menu is added.

2007-05-03 (r4137) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	problem plugin related headers are installed to `include' directory.

2007-05-03 (r4136) Alexander Chernov  <cher@ejudge.ru>

	* problem_plugin_impl.h:
	initial revision

2007-05-03 (r4134) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(do_write_kirov_standings) problems are not shown before
	  their start date;
	(do_write_moscow_standings) the same;
	(do_write_standings) the same.

2007-04-27 (r4127) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(check_config) support for output-only problems is improved.

2007-04-27 (r4126) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `team_menu_3_file' field is added.

	* new-server.h:
	(struct contest_extra) new fields `menu_3', `menu_3_txt' are added.

	* super_proto.h:
	editing of <team_menu_3_file> is supported.

	* super-serve.h:
	(struct sid_state) `team_menu_3_text' is added.

	* contests.c, contest_tmpl.c:
	support for <team_menu_3_file> element is added.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of <team_menu_3_file> is supported.

2007-04-27 (r4124) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_status_str) `var_score' parameter is added.

	* master_html.c, html.c, new_server_html_2.c:
	calls of `run_status_str' are updated.

	* printing.c:
	(print_banner_page) call of `run_status_str' is updated.

	* runlog.c:
	(run_status_str) `var_score' parameter is added.

	* runlog_import.c:
	(runlog_import_xml) call of `run_status_str' is updated.

2007-04-27 (r4123) Alexander Chernov  <cher@ejudge.ru>

	* csv.c:
	(csv_parse) handling of empty fields is improved.

	* html.c:
	(do_write_kirov_standings) bugs fixed.

	* new_server_html_2.c:
	(ns_upload_csv_results) bugs fixed.

2007-04-27 (r4121) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `ignore_penalty' field is added.

	* html.c:
	(do_write_kirov_standings) `ignore_penalty' is handled.

	* prepare.c:
	new problem configuration variable `ignore_penalty' is added.

	* prepare_out.c:
	(prepare_unparse_unhandled_prob) `ignore_penalty' is handled.

2007-04-27 (r4119) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_upload_csv_results) new function prototype.

	* teamdb.h:
	(teamdb_lookup_name) new function prototype.

	* new_server_html.c:
	(priv_upload_runlog_csv_1) "Import results for existing runs" option is added;
	(priv_upload_runlog_csv_2) new option mentioned above is supported.

	* new_server_html_2.c:
	(ns_upload_csv_results) new function.

	* teamdb.c:
	(teamdb_lookup_name) new function.

2007-04-26 (r4117) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h:
	`DISQUALIFIED' user flag is supported.

	* new-server.h:
	new command codes are added;
	(ns_html_err_disqualified) new function prototype.

	* teamdb.h:
	`TEAM_DISQUALIFIED' flag is added.

	* team_extra.h: copyright year is updated;
	<disq_comment> element is supported.

	* userlist.h:
	"disqualified" attribute is supported.

	* edit-userlist.c:
	editing of the "disqualified" attribute is supported.

	* filter_eval.c:
	(do_eval) `userdisqualified' token is supported.

	* filter_expr.y:
	"userdisqualified" token is supported.

	* filter_scan.lex:
	"userdisqualified" token is supported.

	* html.c:
	disqualified users are now shown in standings.

	* new_server_html.c:
	(priv_registration_operation) user disqualification is supported;
	(priv_user_disqualify) new function;
	(priv_view_users_page) user disqualification is supported;
	(unpriv_main_page) user disqualification is supported.

	* new_server_html_2.c:
	(ns_user_info_page) user disqualification is supported.

	* new_server_html_3.c:
	"team_extra.h" is included;
	(ns_html_err_disqualified) new function.

	* new_server_tables.c:
	new button labels are added.

	* teamdb.c:
	DISQUALIFIED user flag is supported.

	* team_extra.c: copyright year is updated;
	<disq_comment> element is supported.

	* team_extra_xml.c:
	<disq_comment> element is supported.

	* userlist-server.c:
	(do_get_database) user disqualification is supported.

	* userlist_xml.c:
	"disqualified" attribute is supported.

2007-04-23 (r4115) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) new fields `disable_language',
	  `disable_prob_long_name', `disable_passed_tests' are added.

	* serve_2.c:
	(is_generally_rejudgable) output-only problems are supported.

	* super_proto.h:
	editing of `disable_language' global configuration variable
	  is supported.

	* new_server_html.c:
	(unpriv_page_header) <table><tr> formatting is moved to template.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) visual improvements;
	(ns_write_user_problems_summary) visual improvements.

	* new_server_html_3.c:
	<table><tr> formatting is moved to template.

	* prepare.c:
	`disable_language' global configuration variable is added;
	`disable_prob_long_name', `disable_passed_tests' flags are
	  calculated.

	* prepare_out.c:
	`disable_language' global configuration variable is added.

	* run.c:
	(run_tests) scoring checking results are stored for individual test.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `disable_language' global configuration variable
	  is supported.

2007-04-20 (r4113) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `problem_tab_size' field is added.

	* new_server_html.c:
	(html_error_status_page) `format' argument is added;
	(write_alternatives_file) `next_prob_id' argument is added;
	(unpriv_submit_run) next problem calculation is improved;
	  the current prob_id is passed to `html_error_status_page'
	  to make the "back" link work correctly;
	(unpriv_command) the first problem calculation is improved;
	(user_main_page) the next problem calculation is improved;
	  `problem_tab_size' global configuration variable is handled.

	* prepare.c:
	`problem_tab_size' global configuration variable is added.

	* prepare_out.c:
	(prepare_unparse_unhandled_global) `problem_tab_size' global
	  configuration variable is handled.

	* serve_2.c:
	(serve_load_status_file) the `accepting_mode' variable is always 1
	  in OLYMPIAD virtual contests.

2007-04-19 (r4110) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) team_menu_1_file', `team_menu_2_file'
	  elements are added.

	* new-server.h:
	(struct contest_extra) `menu_1', `menu_2', `menu_1_txt',
	  `menu_2_txt' fields are added.

	* super_proto.h:
	<team_1_menu>, <team_2_menu> contest XML element editing is supported.

	* super-serve.h:
	(struct sid_state) `team_menu_1_text', `team_menu_2_text'
	  field is added.

	* contests.c, contest_tmpl.c:
	<team_menu_1_file>, <team_menu_2_file> elements are added.

	* new_server_html.c:
	(unpriv_page_header) reworked.

	* new_server_html_3.c:
	`ns_fancy_unpriv_contest_header' is added.

	* serve_2.c:
	(is_generally_rejudgable) new function;
	(serve_rejudge_by_mask) reworked;
	(serve_rejudge_problem) reworked;
	(serve_judge_suspended) reworked;
	(serve_rejudge_all) reworked.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	<team_menu_1_file>, <team_menu_2_file> contest XML element editing is
	  supported.

2007-04-17 (r4108) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(filename_armor_bytes) new function prototype.

	* misctext.c:
	(filename_armor_bytes) new function.

	* new_server_html_2.c:
	(ns_download_runs) user name in filenames are armored.

2007-04-17 (r4106) Alexander Chernov  <cher@ejudge.ru>

	* filter_eval.c:
	"name" expression is supported.

	* filter_expr.y:
	"name" expression is supported.

	* filter_scan.lex:
	"name" expression is supported.

	* new_server_html.c:
	(priv_download_runs_confirmation) support for user names is added;
	(priv_download_runs) support for user names is added.

	* new_server_html_2.c:
	(ns_download_runs) support for user names is added.

2007-04-16 (r4104) Alexander Chernov  <cher@ejudge.ru>

	* contest.h:
	(struct contest_desc) `welcome_file' field is added.

	* misctext.h:
	(text_input_process_string) new function prototype;
	(text_area_process_string) new function prototype.

	* new-server.h:
	(struct contest_extra) `welcome' field is added.

	* prepare.h:
	(struct section_global_data) new fields `vertical_navigation',
	  `stand_collate_name', `stand_enable_penalty' are added.

	* super_proto.h:
	editing of the <welcome_text> contest XML element is supported;
	editing of the `stand_collate_name', `stand_enable_penalty' global
	  configuration variables is supported.

	* super-serve.h:
	(struct sid_state) `welcome_text' field is added.

	* contests.c:
	<welcome_file> element is supported.

	* html.c:
	(do_write_kirov_standings) `stand_collate_name' and
	  `stand_enable_penalty' global configuration variables are
	  supported.

	* misctext.c:
	(text_input_process_string) new function implemented;
	(text_area_process_string) new function implemented.

	* new_server_html.c:
	(ns_unload_contest) `welcome' field is freed;
	(load_problem_plugin) fixes;
	(priv_main_page) the problem answer form starts before the text
	  in CUSTOM problems;
	(user_main_page) vertical problem tabbing i supported;
	  the problem answer form starts before the text in CUSTOM problems.

	* new_server_html_3.c:
	(ns_html_err_no_perm) error message os corrected.

	* prepare.c, prepare_out.c:
	`vertical_navigation', `stand_collate_name', `stand_enable_penalty'
	  global configuration variables are supported.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c, super-serve.c:
	editing of the <welcome_text> contest XML element is supported;
	editing of the `stand_collate_name', `stand_enable_penalty' global
	  configuration variables is supported.

2007-04-12 (r4102) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	"-rdynamic" added to `new-server' build;
	"-ldl" added to `serve' build.

	* ejudge_plugin.h: copyright notice is updated;
	(plugin_unload) new function prototype.

	* new_server_proto.h:
	new error code is added.

	* problem_plugin.h:
	mostly implemented.

	* serve_state.h:
	"problem_plugin.h" is included;
	(struct problem_extra_info) problem plugin fields
	  `plugin_error', `plugin', `plugin_data' are added.

	* new_server_html.c:
	(load_problem_plugin) new function;
	(priv_submit_run) support for problem plugins is added;
	(unpriv_submit_run) support for problem plugins is added.

	* new_server_proto.c:
	new error description is added.

	* plugin.c: copyright notice is updated;
	(plugin_unload) new function.

	* serve_state.c:
	"ejudge_plugin.h" is included;
	(serve_state_destroy) problem plugin unloading is supported.

2007-04-11 (r4100) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	`plugin_file' problem configuration variable is added.

	* super_proto.h:
	editing of `plugin_file' is supported.

	* prepare.c, prepare_out.c:
	`plugin_file' problem configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `plugin_file' is supported.

2007-04-11 (r4098) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h, prepare_dflt.h:
	new `plugin_dir' global configuration variable is added.

	* super_proto.h:
	editing of the new `plugin_dir' global configuration variable
	  is supported.

	* prepare.c, prepare_out.c:
	new `plugin_dir' global configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new `plugin_dir' global configuration variable
	  is supported.

2007-04-10 (r4095) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	problem type "custom" is supported.

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c, prepare.c:
	problem type "custom" is supported.

2007-04-10 (r4093) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	new `team_separator_file' element is supported.

	* super_proto.h, super-serve.h:
	editing of the new `team_separator_file' contest XML element
	  is supported.

	* new-server.h:
	(struct contest_extra) `separator' field is added.

	* contests.c:
	new `team_separator_file' element is supported.

	* new_server_html.c, new_server_html_3.c, new_server_html_5.c:
	`team_separator_file' contest XML element is used.

	* contest_tmpl.c, serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of the new `team_separator_file' contest XML element
	  is supported.

2007-04-10 (r4091) Alexander Chernov  <cher@ejudge.ru>

	* userlist_check.c:
	(userlist_count_info_errors) personal contest support is improved.

2007-04-09 (r4089) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`NEW_SRV_ACTION_CHANGE_RUN_IS_EXAMINABLE' added.

	* runlog.h:
	(struct run_entry) `is_examinable', `examiners' and
	  `exam_score' fields are added;
	(run_count_examinable_runs) function prototype is added.

	* filter_eval.c:
	(do_eval) `examinable' and `examinator' expressions are supported.

	* filter_expr.y:
	"examinable" and "examinator" expressons are supported.

	* filter_scan.lex:
	"examinable" and "examinator" tokens are supported.

	* new_server_html.c:
	`examinable' flag of the run entries is editable.

	* new_server_html_2.c:
	(ns_write_priv_runs) `is_examinable' flag is displayed as "!";
	(ns_examiners_page) more info.

	* runlog.c:
	(run_set_entry) `examinable' field is settable;
	(run_count_examinable_runs) new function.

	* runlog_xml.c:
	"is_examinable" attribute is supported.

2007-04-09 (r4085) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-setup.c:
	"startstop.h" is included;
	(main) `-C', `-u', `-g' options are parsed and passed to the
	  `start_prepare' function.

	* startstop.c: copyright year is updated;
	(start_switch_user) all situations are handled correctly;
	(start_prepare) `start_switch_user' is called even in case of
	  non-root user.

2007-04-08 (r4082) Alexander Chernov  <cher@ejudge.ru>

	* copyright.c:
	(get_copyright) buffer size is increased to 8192.

2007-04-07 (r4076) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	`CHARSET_UPPERCASE' is setup.

	* Makefile.unix.in:
	support for arbitrary russian charsets is implemented.

	* l10n.c:
	<ctype.h> is included;
	(l10n_setlocale) automatic setup of russian locale name based
	  on the default charset name is implemented.

2007-04-06 (r4073) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	examiners assignment actions are added;
	(nsdb_find_chief_examiner) new function prototype;
	(nsdb_assign_chief_examiner) the same;
	(nsdb_assign_examiner) the same;
	(nsdb_remove_examiner) the same;
	(nsdb_get_examiner_user_id_iterator) the same;
	(nsdb_get_examiner_count) the same.
	(ns_cgi_param_int) the same.
	(ns_examiners_page) the same.

	* nsdb_plugin.h: copyright year is updated;
	(struct nsdb_plugin_iface) new function pointers are added:
	  `assign_examiner',
	  `assign_chief_examiner',
	  `remove_examiner',
	  `get_examiner_role',
	  `find_chief_examiner',
	  `get_examiner_user_id_iterator',
	  `get_examiner_count'.

	* contests.c:
	(contests_get) a memory leak is fixed.

	* contest_tmpl.c:
	(contest_tmpl_new) `new_managed' flag is by default 1,
	  `managed' is 0, and `disable_team_password' is 1.

	* new-server.c:
	(nsdb_find_chief_examiner) new function;
	(nsdb_assign_chief_examiner) new function;
	(nsdb_assign_examiner) new function;
	(nsdb_remove_examiner) new function;
	(nsdb_get_examiner_user_id_iterator) new function;
	(nsdb_get_examiner_count) new function.

	* new_server_html.c:
	(ns_cgi_param_int) function moved here from `new_server_html_5.c';
	(priv_examiners_page) new function;
	(priv_assign_chief_examiner) new function;
	(priv_assign_examiner) new function;
	(priv_unassign_examiner) new function.
	(priv_main_page) `Examiners assignment' link is added.

	* new_server_html_2.c:
	"userlist_clnt.h" is included;
	(ns_examiners_page) new function.

	* new_server_html_5.c:
	(cgi_param_int) moved to `new_server_html.c' as `ns_cgi_param_int';
	uses of `cgi_param_int' are updated.

	* new_server_tables.c:
	labels for examiner-related buttons are added.

	* nsdb_plugin_files.c: copyright year is updated;
	new functional members are added;
	(prob_asgn_flush) new function;
	(prob_asgn_close) new function;
	(prob_asgn_do_create) new function;
	(prob_asgn_do_open) new function;
	(prob_asgn_append) new function;
	(prob_asgn_remove) new function;
	(assign_examiner_func) new function;
	(assign_chief_examiner_func) new function;
	(remove_examiner_func) new function;
	(get_examiner_role_func) new function;
	(find_chief_examiner_func) new function;
	(examiner_user_id_iterator_has_next) new function;
	(examiner_user_id_iterator_get) new function;
	(examiner_user_id_iterator_next) new function;
	(examiner_user_id_iterator_destroy) new function;
	(get_examiner_user_id_iterator_func) new function;
	(get_examiner_count_func) new function.

	* prepare.c:
	(vinfo) new function, less verbose replacement of `info';
	the startup code generates much less info messages, than before;

	* userlist_xml.c:
	(elem_free) memory leak is fixed.

2007-04-04 (r4070) Alexander Chernov  <cher@ejudge.ru>

	* serve-control.c:
	(client_put_refresh_header) new HTTP headers are used, as in
	  `new-server'.

2007-04-03 (r4067) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	rule for building `struct-sizes' is added.

	* files.make:
	`struct-sizes.c' is added.

	* protocol.h:
	(struct prot_serve_status_v2) structure size is 128 bytes again.

	* struct-sizes.c: initial revision.

2007-04-03 (r4065) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`html_checkbox.c' is added.

	* mischtml.h:
	(html_checkbox) new function prototype.

	* new-server.h:
	upsolving-related actions are added.

	* protocol.h: copyright year is updated;
	(struct prot_serve_status_v2) upsolving-related fields are added.

	* runlog.h:
	(run_get_saved_times) new function prototype;
	(run_save_times) new function prototype;
	(struct run_header) new fields `saved_duration', `saved_stop_time'
	  are added.

	* serve_state.h:
	(struct serve_state) upsolving-related fields are added.

	* html_checkbox.c: initial revision.

	* new_server_html.c:
	all privileged page headers now include the contest number;
	contest upsolving is supported;
	(priv_upsolving_configuration_1) new function;
	(priv_upsolving_operation) new function.

	* new_server_tables.c:
	upsolving-related actions are added.

	* runlog.c:
	(run_get_saved_times) new function is implemented;
	(run_save_timeS) new function is implemented.

	* serve_2.c:
	(serve_update_status_file) upsolving configuration vars are saved;
	(serve_load_status_file) upsolving configuration vars are restored.

	* serve_state.c:
	(serve_set_upsolving_mode) new function;
	(serve_state_load_contest) call to `serve_set_upsolving_mode' is added.

2007-04-02 (r4063) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_5.c:
	various fixes.

	* userlist_check.c:
	(userlist_count_info_errors) check for role members overrun is added.

2007-04-02 (r4061) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/move_member.c' is added.

	* Makefile.unix.in:
	debug rules are added.

	* new-server.h:
	`NEW_SRV_ACTION_REG_REGISTER' is added.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::move_member) new member added.

	* userlist_clnt.h:
	(userlist_clnt_move_member) new function prototype.

	* userlist_proto.h:
	`ULS_MOVE_MEMBER' is added;
	(struct userlist_pk_move_info) new packet structure.

	* userlist-server.c:
	(cmd_edit_field_seq) fixes;
	(cmd_move_member) new function to handle `ULS_MOVE_MEMBER' request.

	* new_register_5.c:
	basically completed.

	* uldb_plugin_xml.c:
	(move_member_func) new function.

2007-03-31 (r4055) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/edit_field_seq.c' is added.

	* userlist_clnt.h:
	(userlist_clnt_edit_field_seq) new function prototype is added.

	* userlist_proto.h:
	`ULS_EDIT_FIELD_SEQ' is added;
	`ULS_ERR_BAD_FIELD' is added;
	(struct userlist_pk_edit_field_seq) added.

	* userlist_proto.c:
	description for `ULS_ERR_BAD_FIELD' is added.

	* userlist-server.c:
	`ULS_EDIT_FIELD_SEQ' request is handled;
	(cmd_edit_field_seq) partially implemented.

2007-03-30 (r4052) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(check_str_2) new function prototype.

	* new-server.h:
	(ns_url_unescaped) prototype is added;
	(ns_refresh_page) prototype is added;
	(ns_refresh_page_2) prototype is added.

	* prepare.h:
	(struct section_problem_data) `ignore_compile_errors' field is added.

	* super_proto.h: editing of the new `ignore_compile_errors' problem
	  configuration variable is supported.

	* compile.c: copyright year is updated;
	"config.h" is included;
	<sys/stat.h>, <unistd.h> are included;
	(do_loop) max time instead of max real time limit is set for
	  compiler invocation;
	  all signals are enabled;
	  compilation logs longer than 1MB are truncated,
	  diagnostic message is appended, though.

	* contests.c:
	(fix_personal_contest) new function to fix member settings for
	  personal contests;
	(parse_contest) `fix_personal_contest' is called.

	* html.c:
	problem configuration variable `ignore_compile_errors' is used
	instead of the global configuration variable.

	* master_html.c:
	problem configuration variable `ignore_compile_errors' is used
	instead of the global configuration variable.

	* misctext.c:
	(check_str_2) new function;

	* new_server_html.c:
	(ns_refresh_page) renamed from `html_refresh_page';
	(ns_refresh_page_2) renamed from `html_refresh_page_2';
	(unpriv_view_report) if text report size is > 2MB, buffer space
	  is allocated on heap instead of stack.

	* new_server_html_2.c:
	problem configuration variable `ignore_compile_errors' is used
	instead of the global configuration variable;
	(ns_write_priv_report) if the text report size > 2MB, the buffer
	  is allocated on heap instead of stack.

	* new_server_html_5.c: progress...

	* prepare.c, prepare_out.c:
	new `ignore_compile_errors' problem configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	  editing of the new `ignore_compile_errors' problem
	  configuration variable is supported.

2007-03-30 (r4050) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	check for the new reuse function `task_EnableAllSignals' is added.

	* config.h.in:
	`HAVE_TASK_ENABLEALLSIGNALS' is added.

2007-03-27 (r4045) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h: copyright year is updated;
	check_user_reg_data function member is added.

	* userlist.h:
	(userlist_count_info_errors) new parameter `ui' is added.

	* uldb_plugin_xml.c: copyright year is updated;
	"misctext.h" is included;
	(check_user_reg_data_func) new function implemented.

	* userlist_check.c:
	(userlist_count_info_errors) `ui' parameter is added.

	* userlist-server.c:
	(cmd_set_user_info) user registration data is rechecked after the
	  command;
	(cmd_register_contest) the same;
	(cmd_register_contest_2) the same;
	(cmd_generate_register_passwords_2) GENERATE_TEAM_PASSWORDS
	  capability is checked for the contest rather than globally;
	(cmd_edit_registration) user registration data is rechecked after the
	  command;
	(cmd_priv_delete_member) the same;
	(cmd_delete_user_info) the same;
	(cmd_delete_fields) the same;
	(cmd_edit_field) the same;
	(cmd_create_member) the same;
	(cmd_copy_user_info) the same.

2007-03-26 (r4043) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_check.c' is added.

	* misctext.h:
	(check_str) function prototype is added.

	* new-server.h:
	(ns_html_err_registration_incomplete) new function prototype.

	* userlist.h:
	SMTH_accepting_chars global variables are added;
	`userlist_contest_field_ids', `member_contest_field_ids' variables
	  are added;
	(userlist_count_info_errors) prototype is added;
	(userlist_get_contest_accepting_chars) prototype is added;
	(userlist_get_member_accepting_chars) prototype is added.

	* misctext.c:
	(check_str) new function is added.

	* new_server_html.c:
	(unprivileged_page_login) "incomplete registration" error is handled;
	(unpriv_main_page) the same.

	* new_server_html_3.c:
	(ns_html_err_registration_incomplete) new function.

	* new_server_html_5.c:
	(check_str) moved to `userlist_check.c';
	`SMTH_accepting_chars' are moved to `userlist_check.c';
	field tables are reworked;
	(count_info_errors) moved to `userlist_check.c'.

	* register.c:
	smth_accept_chars variables are removed, functions from the
	  `userlist_check' module are used instead;
	(struct field_desc) `accept_chars' parameter is removed;
	(fix_string) function now accepts the map of valid characters instead of
	  the string of valid characters;
	(read_user_info_from_form) use of `fix_string' is updated.

	* super_html_2.c:
	`login_accepting_chars' is removed;
	(super_html_set_contest_var) `check_str' is used instead of `strspn'.

	* super_html_3.c:
	`login_accepting_chars' is removed;
	(super_html_prob_cmd) `check_str' is used instead of `strspn'.

	* userlist_check.c: initial revision.

2007-03-26 (r4041) Alexander Chernov  <cher@ejudge.ru>

	* ej_types.h: copyright notice is updated;
	INCOMPLETE registration flag is added.

	* new-server.h:
	editing of `INCOMPLETE' registration flag is supported.

	* teamdb.h: copyright year is updated;
	`TEAM_INCOMPLETE' constant is added.

	* userlist.h:
	support for "incomplete" attribute is added.

	* userlist_proto.h:
	error message code is added.

	* edit-userlist.c: copyright year is updated;
	editing of `INCOMPLETE' registration flag is supported.

	* filter_eval.c: copyright year is updated;
	(do_eval) evaluation of `incomplete' token is added.

	* filter_expr.y: copyright year is updated;
	support for "incomplete" primary expression is added.

	* filter_scan.lex: copyright year is updated;
	support for "incomplete" token is added.

	* new_server_html.c:
	(priv_registration_operation) changing the `INCOMPLETE' flag is
	  supported;
	(priv_view_users_page) viewing `INCOMPLETE' flag is supported;

	* new_server_html_2.c:
	(ns_user_info_page) editing of `INCOMPLETE' registration flag
	  is implemented.

	* new_server_html_4.c:
	(do_dump_master_runs) `INCOMPLETE' flag is supported.

	* new_server_tables.c:
	editing of `INCOMPLETE' registration flag is supported.

	* team.c:
	(error_registration_incomplete) new function;
	(authentificate) `registration incomplete' error is checked.

	* teamdb.c: copyright year is updated;
	(teamdb_get_flags) `INCOMPLETE' flag is supported;
	(teamdb_export_team) the same;
	(teamdb_get_user_status_map) the same.

	* userlist_proto.c: copyright notice is updated;
	error message text for `incomplete registration' is added.

	* userlist-server.c:
	(cmd_team_login) `INCOMPLETE' registration flag is checked;
	(cmd_team_check_user) the same as above;
	(cmd_team_check_cookie) the same as above;
	(cmd_get_cookie) the same as above.

	* userlist_xml.c:
	`INCOMPLETE' contest registration flag is supported.

2007-03-26 (r4039) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	"allowed_list.c" is added.

	* misctext.h: copyright year is updated;
	(allowed_list_parse) new function prototype;
	(allowed_list_free) new function prototype;

	* new-server.h:
	(struct session_info) `user_info' field is added.

	* allowed_list.c: initial revision.

	* new-server.c:
	"userlist.h" is included;
	(do_remove_session) user info field is freed.

	* new_server_html_5.c: progress...

	* new_server_tables.c: new actions are added.

	* register.c:
	(parse_allowed_list) moved to `allowed_list.c' as `allowed_list_parse';
	(map_user_languages) moved to `allowed_list.c' as `allowed_list_map';
	(initialize) uses of `allowed_list_parse' are updated;
	(display_edit_registration_data_page) use of `allowed_list_map'
	  are updated.

	* run.c:
	(process_default_testers) problems with `manual_checking' flag are
	  skipped;
	(check_config) the same.

2007-03-19 (r4031) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_standings) `force_fancy_style' parameter is added;
	(do_write_kirov_standings) the same as above;
	(do_write_standings) the same as above;
	(do_write_moscow_standings) the same as above;
	(write_virtual_standings) the same as above.

	* new-server.h:
	(ns_set_fancy_standings_style) function is removed.

	* html.c:
	(struct standings_style) new structure to store the tunable standings
	  style;
	(setup_standings_style) new function to setup the standings style;
	  this function handles `stand_fancy_style' variable;
	(write_standings_header) avoid using "Team" is headers;
	(write_kirov_page_table) `state' parameter is replaced with `pss'
	  (the standings style table pointer) parameter;
	(write_moscow_page_table) the same as above;
	(do_write_kirov_standings) `force_fancy_style' parameter is added;
	  `setup_standings_style' is called;
	  the local table of standings style (set up by
	  `setup_standings_style') is used instead of `global' configuration
	  variables;
	(do_write_moscow_standings) the same as above;
	(do_write_standings) the same as above;
	(write_standings) `force_fancy_style' parameter is added and passed to
	  `do_write_{,kirov,moscow}_standings' functions;
	(write_virtual_standings) `force_fancy_style' parameter is added and
	  passed to `do_write_standings'.

	* master_html.c:
	(write_priv_standings) calls of `do_write_{,kirov,moscow}_standings'
	  are updated;
	(write_raw_standings) the same as above.

	* new_server_html.c:
	(privileged_page) `ns_set_fancy_standings_style' call is removed;
	(unpriv_view_standings) calls of `do_write_{,kirov,moscow}_standings'
	  are updated;
	(unpriv_main_page) `ns_set_fancy_standings_style' call is removed.

	* new_server_html_2.c:
	(ns_write_priv_standings) calls of `do_write_{,kirov,moscow}_standings'
	  are updated.

	* new_server_html_3.c:
	(ns_set_fancy_standings_style) function is removed, fancy style
	  functionality is set up at the do_write_standings function; this
	  fixes "ugly" standings in default mode.

	* new_server_html_5.c: progress...

	* prepare_out.c:
	(prepare_unparse_unhandled_prob) `use_tgz' is removed.

	* serve.c:
	(cmd_team_show_item) call of `write_virtual_standings' is updated.

	* serve_2.c:
	(serve_update_standings_file) calls of `write_standings' are updated.

	* super_html_3.c:
	(super_html_global_param) support for `stand_fancy_style' is added.

2007-03-19 (r4030) Alexander Chernov  <cher@ejudge.ru>

	* runlog.c:
	(run_find_duplicate) check for empty runlog is added.

2007-03-19 (r4028) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	new global variable `stand_fancy_style' is added.

	* super_proto.h:
	editing of the `stand_fancy_style' new global variable is supported.

	* prepare.c, prepare_out.c:
	new global variable `stand_fancy_style' is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `stand_fancy_style' new global variable is supported.

2007-03-16 (r4025) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) new fields `reg_status', `reg_flags'
	  are added.

	* userlist_clnt.h:
	(userlist_clnt_get_cookie) `p_reg_status', `p_reg_flags' parameters
	  are added.

	* userlist_proto.h:
	(struct userlist_pk_login_ok) new fields `reg_status', `reg_flags'
	  are added.

	* new_server_html.c:
	(privileged_page) use of `userlist_clnt_get_cookie' is updated;
	(unpriv_main_page) the same as above.

	* new_server_html_4.c:
	(new_server_cmd_handler) use of `userlist_clnt_get_cookie' is updated.

	* userlist-server.c:
	(cmd_get_cookie) `reg_status', `reg_flags' fields of the reply
	  packet are filled.

2007-03-16 (r4024) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	AUTOASSIGNED_ACCOUNT action codes are removed.

	* userlist_proto.h:
	ULS_TEAM_GET_COOKIE - new name for ULS_GET_COOKIE;
	ULS_REGISTER_CONTEST_2 - new action;
	ULS_GET_COOKIE - new action.

	* new_server_html.c:
	(unprivileged_page_login_page) `new-register' action name
	  is updated;
	(unpriv_main_page) `ULS_GET_COOKIE' is replaced with
	  `ULS_TEAM_GET_COOKIE'.

	* userlist-server.c:
	(cmd_check_user) `simple_registration' flag is checked;
	(cmd_register_contest_2) new function;
	(cmd_get_cookie) `ULS_GET_COOKIE' requiest is handled.

2007-03-16 (r4022) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_register_new_2) parameters `action', `self_url'
	  are added.

	* register.c:
	(action_register_new_user) use of `userlist_clnt_register_new_2'
	  is updated.

	* userlist-server.c:
	(cmd_register_new_2) `action' and `self_url' from the request
	  packet are handled.

2007-03-14 (r4020) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	installation of `new-register' is added.

	* execute.c: copyright notice is updated;
	help message is fixed.

	* new-client.c, testinfo.c: copyright year is updated;
	"gcc-4.1.2 -O2 -Wall" warnings are fixed.

	* new_server_html.c, new_server_html_2.c, new_server_html_4.c, prepare.c, runlog.c:
	"gcc-4.1.2 -O2 -Wall" warnings are fixed.

2007-03-14 (r4018) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`new-register' actions are renamed.

	* userlist_clnt.h:
	(userlist_clnt_register_new_2) `p_login' parameter is added.

	* register.c:
	(action_register_new_user) use of `userlist_clnt_register_new_2'
	  is updated.

	* new_server_html.c:
	(unprivileged_page_login_page) "Register" link is updated.

	* new_server_html_5.c:
	restructurizations and changes.

	* userlist-server.c:
	(cmd_register_new_2) user login is sent back as well as the password;
	(cmd_login) renamed from `cmd_do_login'.

2007-03-12 (r4016) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_get_cookie) `p_team_login' parameter is added.

	* userlist_proto.h:
	(struct userlist_pk_login_ok) `team_login' field is added.

	* new_server_html.c:
	(privileged_page) `userlist_clnt_get_cookie' usage is updated;
	(unpriv_main_page) the same as above.

	* new_server_html_4.c:
	(new_server_cmd_handler) `userlist_clnt_get_cookie' usage is updated.

	* userlist-server.c:
	(cmd_recover_password) use of `default_new_cookie' is updated;
	(cmd_do_login) the same;
	(cmd_check_user) the same;
	(cmd_team_login) the same;
	(cmd_team_check_user) the same;
	(cmd_priv_login) the same;
	(cmd_priv_check_user) the same;
	(cmd_check_cookie) `team_login' field of the cookie is honored;
	(cmd_team_check_cookie) the same.

2007-03-12 (r4014) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h: copyright year is updated;
	(struct uldb_plugin_iface::new_cookie) `team_login' parameter is added.

	* userlist.h: copyright year is updated;
	(struct userlist_cookie) `team_login' field is added.

	* uldb_plugin_xml.c: copyright year is updated;
	(new_cookie_func) new parameter `team_login' is added.

	* userlist_xml.c: copyright year is updated;
	new "team_login" attribute of the <cookie> element is supported.

2007-03-11 (r4011) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(user_main_page) user interface is improved.

	* prepare.c:
	(parse_variant_map) check for f == NULL in cleanup code is added.

	* run_packet_7.c: copyright notice is updated;
	(run_request_packet_quit) packet size is properly aligned.

2007-03-09 (r4010) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.c:
	(is_correct_utf8) `p_ucs32' parameter is added;
	(convert_utf8_to_local) unicode characters U+2400-U+241F, U+2421
	  are mapped to the control characters \0-\x1f, \x7f.

	* misctext.c: copyright year is updated;
	control characters \0-\x1f, \x7f are mapped to the unicode characters
	  U+2400-U+241F, U+2421.

2007-03-09 (r4006) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(new_write_user_runs) `prob_id' parameter is added.

	* prepare.h:
	`disable_tab', `restricted_statement' problem configuration variables
	  are supported;
	(struct section_problem_data) new fields `disable_tab',
	  `restricted_statement' are added.

	* super_proto.h:
	editing of the new problem configuration variables `disable_tab' and
	  `restricted_statement' is supported.

	* html.c:
	(new_write_user_runs) `prob_id' parameter is added.

	* new_server_html.c:
	(unpriv_page_header) "User stadings" are printed in `personal' contest
	  mode;
	(get_last_answer_select_one) defined `static';
	(is_judged_virtual_olympiad) defined `static';
	(get_problem_status) new function;
	(user_main_page) UI improvements.

	* prepare.c, prepare_out.c:
	`disable_tab', `restricted_statement' problem configuration variables
	  are supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new problem configuration variables `disable_tab' and
	  `restricted_statement' is supported.

2007-03-08 (r4002) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	new problem configuration variables `source_header', `source_footer'
	  are added;
	(struct section_problem_data) new fields `source_header',
	  `source_footer' are added.

	* serve_state.h:
	(serve_compile_request) new parameters `prob', `lang' are added.

	* super_proto.h:
	editing of the new problem configuration variables `source_header',
	  `source_footer' is supported.

	* new_server_html.c:
	(priv_submit_run) use of `serve_compile_request' is updated;
	(unpriv_submit_run) the same as above.

	* new_server_html_4.c:
	(cmd_submit_run) use of `serve_compile_request' is updated.

	* prepare.c, prepare_out.c:
	new problem configuration variables `source_header', `source_footer'
	  are added.

	* serve.c:
	(cmd_priv_submit_run) use of `serve_compile_request' is updated;
	(do_submit_run) the same as above.

	* serve_2.c:
	"sformat.h" is included;
	(serve_compile_request) new parameters `prob', `lang' are added;
	  `source_header', `source_footer' problem configuration variables
	  are supported;
	(serve_rejudge_run) use of `serve_compile_request' is updated.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new problem configuration variables `source_header',
	  `source_footer' is supported.

2007-03-06 (r3996) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_team_accepting_report) `exam_mode' parameter is added.

	* new-server.h:
	NEW_SRV_ACTION_UPDATE_ANSWER is added.

	* runlog.h:
	(run_count_all_attempts) new function prototype;
	(run_has_transient_user_runs) new function prototype;
	(run_is_source_available) new function prototype.

	* html.c:
	(write_xml_team_accepting_report) `exam_mode' parameter is added.

	* make-js-actions.c:
	NEW_SRV_ACTION_UPDATE_ANSWER is added.

	* new_server_html.c:
	(unprivileged_page_login) `orig_locale_id' parameter is added;
	(write_alternatives_file) new parameters `last_answer', `prob_id',
	  `enable_js' are added;
	(unpriv_load_html_style) XML state information is embedded into the
	  html document to avoid server request and race conditions;
	(unpriv_page_forgot_password_1) `orig_locale_id' parameter is added;
	(unpriv_page_forgot_password_2) `orig_locale_id' parameter is added;
	(unpriv_page_forgot_password_3) `orig_locale_id' parameter is added;
	(unprivileged_page_login_page) `orig_locale_id' parameter is added;
	(get_last_language) new function;
	(get_last_source) new function;
	(get_last_answer_select_one) new function;
	(is_judged_virtual_olympiad) new function;
	(user_main_page) more contrast colors are used;
	  exam_mode enhancements;
	(do_xml_user_state) new function;
	(unpriv_xml_update_answer) new function.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) exam_mode improvements.

	* runlog.c:
	(run_count_all_attempts) new function;
	(run_has_transient_user_runs) new function;
	(run_is_source_available) new function.

	* serve_2.c:
	(serve_judge_virtual_olympiad) virtual olympiad judging improved.

2007-03-04 (r3993) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	html_input_selection.c is added.

	* mischtml.h: copyright year is updated;
	(html_input_password) function prototype is added.

	* new_server_html.c:
	(priv_change_password) "&amp;" turned back to "&" because URL
	  is used in refresh request;
	(priv_logout) the same;
	(unpriv_change_password) the same;
	(unpriv_logout) the same.

	* new_server_html_5.c: progress...

2007-03-02 (r3991) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_login) `p_locale_id' parameter is removed;
	(userlist_clnt_team_login) `p_locale_id' parameter is removed;
	(userlist_clnt_priv_login) `p_locale_id' parameter is removed.

	* master.c:
	(authentificate) use of `userlist_clnt_priv_login' is updated.

	* new_server_html.c:
	(privileged_page_login) use of `userlist_clnt_priv_login' is updated;
	(unprivileged_page_login) use of `userlist_clnt_team_login' is updated;
	(ns_handle_http_request) raw `locale_id' is passed to "new-register"
	  handling.

	* new_server_html_4.c:
	(cmd_login) use of `userlist_clnt_team_login' is updated;
	  use of `userlist_clnt_priv_login' is updated.

	* register.c:
	(action_login) use of `userlist_clnt_login' is updated.

	* serve-cmd.c:
	(handle_login) use of `userlist_clnt_priv_login' is updated;
	(handle_team_login) use of `userlist_clnt_team_login' is updated.

	* serve-control.c:
	(authentificate) use of `userlist_clnt_priv_login' is updated.

	* team.c:
	(authentificate) use of `userlist_clnt_team_login' is updated.

2007-03-02 (r3989) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `default_locale', `default_locale_val'
	  fields are added.

	* l10n.h: copyright year is updated;
	(l10n_parse_locale) function prototype is added.

	* super_proto.h:
	editing of `default_locale' contest configuration variable is
	  supported.

	* contests.c:
	"l10n.h" is included;
	<default_locale> element is supported.

	* l10n.c:
	<string.h> is included;
	(l10n_parse_locale) function is added.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of `default_locale' contest configuration variable is
	  supported.

2007-03-01 (r3987) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h: copyright year is updated;
	(userlist_clnt_login) `p_locale_id' and `p_name' parameters
	  are exchanged.

	* userlist_proto.h:
	`ULS_CHECK_USER' renamed to `ULS_TEAM_CHECK_USER';
	`ULS_CHECK_USER' is added.

	* new_server_html.c:
	(unprivileged_page_login) use of `userlist_clnt_team_login'
	  is updated.

	* new_server_html_4.c:
	(cmd_login) use of `userlist_clnt_team_login' is updated.

	* new_server_html_5.c:
	progress...

	* register.c:
	(action_login) use of `userlist_clnt_login' is updated.

	* serve-cmd.c: copyright year is updated;
	(handle_team_login) use of `userlist_clnt_login' is updated.

	* userlist-server.c: copyright year is updated;
	(cmd_register_new) `self_url' and `action' fields of the command
	  packet are handled;
	(cmd_check_user) new function;
	(cmd_team_check_user) renamed from `cmd_check_user'.

2007-02-25 (r3981) Alexander Chernov  <cher@ejudge.ru>

	* ejudge-control.c:
	(op_error) attribute `unused' is added.

	* run.c:
	(run_tests) bug is fixed.

	* runlog_import.c:
	(runlog_import_xml) runs with source are not marked as `imported',
	  instead their status is changed to `pending'.

	* runlog_xml.c:
	fixes.

2007-02-25 (r3979) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_file) new structure;
	(struct run_data) new structure.
	(parse_runlog_xml) extra parameter is added for importing sources.

	* new_server_html.c:
	(unpriv_load_html_style) warning if no `--enable-ajax' is fixed.

	* runlog_import.c:
	(runlog_import_xml) support for importing source is added.

	* runlog_xml.c:
	parsing of the source and audit textx is supported.

2007-02-25 (r3977) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(html_armor_extend) new function prototype is added.

	* misctext.c:
	(html_armor_extend) new function.

	* runlog_xml.c: in progress of adding sources and audits.

2007-02-24 (r3973) Alexander Chernov  <cher@ejudge.ru>

	* runlog_xml.c:
	(unparse_runlog_xml) `full_archive' is written.

	* userlist_xml.c:
	(userlist_real_unparse_user) warning, produced by gcc-4.1.2
	  is fixed.

2007-02-24 (r3971) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(html_armor_buf_bin) new function prototype.

	* runlog.h:
	(run_write_xml) `source_mode' parameter is added;
	(unparse_runlog_xml) `source_mode' parameter is added.

	* misctext.c:
	(html_armor_needed_bin) new function;
	(html_armor_buf_bin) new function.

	* new_server_html.c:
	(priv_view_runs_dump) `NEW_SRV_ACTION_WRITE_XML_RUNS_WITH_SRC'
	  is implemented.

	* new_server_html_4.c:
	(cmd_dump_runs) `NEW_SRV_ACTION_WRITE_XML_RUNS_WITH_SRC'
	  is implemented.

	* runlog.c:
	(run_write_xml) `source_mode' parameter is added.

	* runlog_xml.c: copyright year is updated;
	"archive_paths.h", "fileutl.h" are included;
	(unparse_runlog_xml) `source_mode' parameter is added;
	  <source>, <audit>, <xml_report> elements are written in
	  `source_mode'.

	* serve.c:
	(cmd_view) `unparse_runlog_xml' use is updated.

	* serve_2.c:
	(do_update_xml_log) `unparse_runlog_xml' use is updated.

2007-02-24 (r3969) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `lang_time_adj_millis' field is added;
	(struct section_tester_data) `time_limit_adj_millis' field is added.

	* run_packet.h: copyright year is updated;
	(struct run_request_packet) `time_limit_adj_millis' field is added.

	* run_packet_priv.h: copyright notice is updated;
	(struct run_request_bin_packet) field `time_limit_adj_millis' is added.

	* super_proto.h:
	editing of `lang_time_adj_millis' problem configuration variable
	  is supported.

	* prepare.c:
	`lang_time_adj_millis' problem configuration variable is handled;
	`time_limit_adj_millis' tester configuration variable is handled.

	* prepare_out.c:
	  problem configuration variable `time_limit_adj_millis' is handled.

	* run.c:
	(run_tests) tester parameter `time_limit_adj_millis' is handled;
	  run request packet parameter `time_limit_adj_millis' is handled.

	* run_packet_1.c: copyright notice is updated;
	(run_request_packet_read) `time_limit_adj_millis' field is handled.

	* run_packet_2.c: copyright notice is updated;
	(run_request_packet_write) `time_limit_adj_millis' field is handled.

	* serve_2.c:
	(serve_run_request) `lang_time_adj_millis' problem configuration
	  variable is handled.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `lang_time_adj_millis' problem configuration variable
	  is supported.

2007-02-20 (r3963) Alexander Chernov  <cher@ejudge.ru>

	* new_server.h:
	new actions are added.

	* new_server_proto.h:
	new errors are added.

	* master_html.c:
	(write_xml_testing_report) "Max. CPU time" statistics is shown.

	* new_server_html.c:
	(priv_view_runs_dump) NEW_SRV_ACTION_WRITE_XML_RUNS_WITH_SRC is
	  handled (but as alias to NEW_SRV_ACTION_WRITE_XML_RUNS);
	(priv_main_page) write XML with source link is added;
	(unprivileged_page_login_page) `register' link is fixed to
	  redirect to `new-register' in the simplest case.

	* new_server_html_5.c: progress...

	* new_server_proto.c:
	new error descriptions are added.

2007-02-18 (r3961) Alexander Chernov  <cher@ejudge.ru>

	* misctext.h:
	(url_armor_buf) new function prototype.

	* new-server.h:
	new actions are added.

	* misctext.c:
	(url_armor_string_unchecked) new function;
	(url_armor_needed) new function;
	(html_armor_buf) buffer reallocation strategy is changed;
	(url_armor_buf) new function.

	* new_server_html.c:
	(ns_handle_http_request) `ns_register_pages' is called.

	* new_server_html_5.c: progress...

2007-02-16 (r3959) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `dir_mode', `dir_group', `file_mode',
	`file_group' fields are added.

	* super_proto.h:
	editing of <dir_mode>, <dir_group>, <file_mode>, <file_group>
	contest.xml elements is supported.

	* contests.c:
	support for <dir_mode>, <dir_group>, <file_mode>, <file_group>
	contest.xml elements is added.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of <dir_mode>, <dir_group>, <file_mode>, <file_group>
	contest.xml elements is supported.

2007-02-16 (r3955) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`new_server_html_5.c' is added.

	* new_server_html.c:
	(ns_handle_http_request) "new-register" is added.

	* new_server_html_5.c: initial revision.

2007-02-15 (r3953) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `personal' field is added.

	* super_proto.h:
	editing of the `personal' contest attribute is supported.

	* contests.c:
	support for "personal" attribute of the <contest> element.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of the `personal' contest attribute is supported.

2007-02-13 (r3949) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_url_unescaped) version of `ns_url', which generates URLS with
	  `&' instead of `&amp;';
	(html_refresh_page) `ns_url_unescaped' is used;
	(unpriv_command) SERVE_EVENT_VIRTUAL_STOP is added to the event queue.

	* new_server_html_2.c:
	(get_source) the answer number is also added (in italic).

2007-02-13 (r3947) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(html_refresh_page) "Location:" header is used;
	(html_refresh_page_2) "Location:" header is used;
	(unpriv_load_html_style) `self_url' is added to the JS part;
	(user_main_page) lower problem tabs also use JS.

	* make-js-actions.c:
	NEW_SRV_ACTION_VIEW_PROBLEM_SUBMIT is added.

2007-02-12 (r3945) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_view_standings) final standings are shown in OLYMPIAD mode;
	(unpriv_page_header) "Standings" tab is supported;
	(user_main_page) the problem tab is clickable in problem_navigation
	  mode (uses JS);
	(unpriv_xml_user_state) reply caching is disabled.

2007-02-10 (r3942) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) new field `advance_to_next' is added.

	* super_proto.h:
	editing of the new problem configuration variable `advance_to_next'
	is supported.

	* prepare.c, prepare_out.c:
	new problem configuration variable `advance_to_next' is supported.

	* new_server_html.c:
	(unpriv_submit_run) `advance_to_next' is supported.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the new problem configuration variable `advance_to_next'
	is supported.

2007-02-10 (r3938) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(get_accepting_passed_tests) new function;
	(ns_write_olympiads_user_runs) `min_tests_to_accept' and
	  `accept_partial' support is improved.

2007-02-10 (r3936) Alexander Chernov  <cher@ejudge.ru>

	* run.c:
	(run_tests) support for `min_tests_to_accept' is added.

2007-02-09 (r3934) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `min_tests_to_accept' field is added.

	* super_proto.h:
	editing of `min_tests_to_accept' problem configuration variable
	is supported.

	* prepare.c, prepare_out.c:
	new problem configuration variable `min_tests_to_accept' is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of `min_tests_to_accept' problem configuration variable
	is supported.

2007-02-07 (r3932) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_tester_data) `ignore_stderr' field is added.

	* prepare.c:
	`ignore_stderr' tester configuration variable is added.

	* prepare_out.c:
	(generate_abstract_tester) `ignore_stderr' is added for DOS.

	* run.c:
	(run_tests) `ignore_stderr' tester variable is handled.

2007-02-06 (r3927) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	--enable-style-prefix option is added.

	* config.h.in:
	CONF_STYLE_PREFIX definition is added.

	* new_server_html.c, new_server_html_3.c:
	CONF_STYLE_PREFIX is used instead of hard-coded "/ejudge/".

	* ejudge-setup.c:
	(generate_install_script) CONF_STYLE_PREFIX is used instead of
	  hard-coded "/ejudge/";
	  `new-server' is started in database initialization mode.

2007-01-26 (r3923) Alexander Chernov  <cher@ejudge.ru>

	* expat_iface.c: copyright year is updated;
	expat-2.0 compatibility fixes.

2007-01-24 (r3917) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(user_main_page) interface improvements.

2007-01-23 (r3915) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`ns_fancy_footer_2' variable is added;
	(ns_insert_variant_num) prototype is added.

	* new_server_html.c:
	(ns_insert_variant_num) renamed from `insert_variant_num' and
	  is exported;
	various design improvements;

	* new_server_html_2.c:
	<ctype.h> is included;
	(get_nth_alternative) new function;
	(get_source) new function;
	(ns_write_olympiads_user_runs) user source display is improved.

	* new_server_html_3.c:
	design improvements;

2007-01-21 (r3910) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: copyright year is updated;
	HTML style files are installed to ${prefix}/share/ejudge/style.

	* ejudge-setup.c:
	(generate_serve_cfg) Mono Visual Basic is commented out;
	  `statement_file' is generated to "serve.cfg";
	  contest 1 archive is updated;
	(generate_install_script) checks, that configuration files are
	  already exist, are added;
	  HTML style files are symlinked to HTML Document Root directory.

	* serve.c: copyright year is updated;
	(do_loop) `initialization mode' (-i) is supported better.

2007-01-21 (r3908) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_get_user_problems_summary) `attempts_flag' parameter is removed;
	  `all_attempts' parameter is added;
	(ns_write_user_problems_summary) `cnts' parameter is added.

	* new_server_html.c:
	(user_main_page) use of `ns_get_user_problems_summary' is updated;
	  use of `ns_write_user_problems_summary' is updated;
	  "Previous submissions" display is improved.

	* new_server_html_2.c:
	(ns_get_user_problems_summary) `attempts_flag' parameter is removed;
	  `all_attempts' parameter is added;
	(ns_write_user_problems_summary) `cnts' parameter is added;
	  `exam_mode' support is improved.

2007-01-21 (r3906) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	actions for new new commands "Clear displayed", "Ignore displayed",
	  "Disqualify displayed" are added.

	* serve_state.h:
	(serve_clear_by_mask) new function prototype;
	(serve_ignore_by_mask) new function prototype.

	* new_server_html.c:
	(priv_clear_run) all archive files are removed;
	(priv_clear_displayed) new function to handle "Clear displayed",
	  "Ignore displayed", "Disqualify displayed" commands;
	(priv_confirmation_page) new commands "Clear displayed",
	  "Ignore displayed", "Disqualify displayed" are handled;
	(user_main_page) design improvements.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) buttons "Clear displayed runs",
	  "Ignore displayed runs", "Disqualify displayed runs" are added.

	* new_server_tables.c: copyright year is updated;
	texts for new commands are added.

	* serve_2.c:
	(serve_clear_by_mask) new function;
	(serve_ignore_by_mask) new function.

2007-01-20 (r3895) Alexander Chernov  <cher@ejudge.ru>

	* register.c:
	(display_user_registered_page) `force_registration' contest flag
	  is properly handled.

2007-01-20 (r3893) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_get_user_problems_summary) new function prototype;
	(ns_write_user_problems_summary) new function prototype.

	* new_server_html.c:
	(unpriv_page_header) `exam_mode' support improvements.
	(user_main_page) `exam_mode' and `problem_navigation' support
	  improvements.

	* new_server_html_2.c:
	"sformat.h" is included;
	(ns_get_user_problems_summary) new function;
	(ns_write_user_problems_summary) new function.

2007-01-20 (r3882) Alexander Chernov  <cher@ejudge.ru>

	* new_server_proto.h:
	`NEW_SRV_CMD_STOP', `NEW_SRV_CMD_RESTART' are moved to the beginning
	  of the list.

	* super_proto.h:
	`SSERV_CMD_STOP', `SSERV_CMD_RESTART' are moved to the beginning of
	  the list.

	* userlist_proto.h: copyright year is updated;
	`ULS_STOP', `ULS_RESTART' are moved to the beginning of the list.

	* new_server_html.c:
	(unpriv_page_forgot_password_1) if the locale change dialog is
	  disabled, `locale_id' is passed as hidden variable;
	(unprivileged_page_login_page) the same as above.

2007-01-19 (r3881) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `copyright_file' field is added.

	* new-server.h:
	(struct contest_extra) `copyright', `copyright_txt' fields are
	  added;
	(ns_footer) `copyright' parameter is added.

	* super_proto.h:
	commands for editing `copyright_file' contest configuration variable
	  are added.

	* super-serve.h: copyright year is updated;
	(struct sid_state) `copyright_text' field is added.

	* contests.c:
	`copyright_file' element is supported;
	`disable_locale_change' attribute is supported.

	* contest_tmpl.c: copyright year is updated;
	`copyright_file' element is supported.

	* new_server_html.c, new_server_html_2.c, new_server_html_3.c:
	(ns_footer) new parameter `copyright' is added;
	use of `ns_footer' is updated;
	`copyright_file' contest configuration variable is honored.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	`copyright_file' contest configuration variable editing is supported.

2007-01-19 (r3880) Alexander Chernov  <cher@ejudge.ru>

	* files.make: copyright year is updated;
	`super_actions.h' is removed.

	* super_proto.h:
	`SSERV_CMD_LOGOUT' is added.

	* serve-control.c, super_html.c, super_html_2.c, super_html_3.c:
	super-serve protocol command codes are used directly instead
	  of super-serve action codes, which are rendered unused and removed.

2007-01-19 (r3878) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `disable_locale_change' field is added.

	* super_actions.h, super_proto.h:
	editing of the `disable_locale_change' contest option is supported.

	* new_server_html.c:
	(unpriv_page_forgot_password_1) `disable_locale_change' contest option
	  is honored;
	(unprivileged_page_login_page) the same as above;
	(user_main_page) the same as above.

	* serve-control.c, super_html.c, super_html_2.c, super-serve.c:
	editing of the `disable_locale_change' contest option is supported.

2007-01-19 (r3876) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: copyright year is updated;
	`--enable-ajax' option is added.

	* cher-configure, unicorn-configure:
	`--enable-ajax' option is added.

	* config.h.in:
	CONF_ENABLE_AJAX is added.

2007-01-18 (r3874) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `body_attr' field is added;
	(ns_header) `body_attr' parameter is added.

	* new-server.c:
	(cmd_http_request) `body_attr' field is freed.

	* new_server_html.c, new_server_html_2.c:
	use of `ns_header' is updated.

	* new_server_html_3.c:
	(process_template) `body_attr' parameter is added;
	(ns_header) `body_attr' parameter is added;
	use of `ns_header' is updated.

2007-01-18 (r3870) Alexander Chernov  <cher@ejudge.ru>

	* clntutil.c, html_date_select.c, html_input_text.c, html_hidden.c, html_start_form.c, l10n.c, master.c: copyright year is updated;
	XHTML generation fixes.

	* copyright.c, html.c, new_server_html.c, new_server_html_2.c, new_server_html_3.c, master_html.c, register.c, serve-control.c, super_html.c, super_html_3.c, team.c:
	XHTML generation fixes.

2007-01-17 (r3865) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `script_part' field is added.
	(ns_header) `script_part' parameter is added.

	* new-server.c:
	(cmd_http_request) `script_part' is freed.

	* new_server_html.c:
	use of `ns_header' is updated;
	(unpriv_load_html_style) `dojo' loading code is added;
	(unpriv_xml_current_time) new function.

	* new_server_html.c:
	use of `ns_header' us updated.

	* new_server_html_3.c: copyright year is updated;
	javascript part is added to the fancy_header;
	(process_template) `script_part' parameter is added;
	(ns_header) `script_part' parameter is added;
	use of `process_template' is updated for all functions.

2007-01-16 (r3860) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(do_dump_users) `email' is printed.

2007-01-16 (r3858) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_write_olympiads_user_runs) `prob_id' parameter is added.

	* new_server_html.c:
	(unpriv_command) the first problem is automatically displayed
	  after the virtual contest start in `problem_navigation' mode;
	(user_main_page) `problem_navigation' mode improvements.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) `prob_id' parameter is added.

2007-01-15 (r3856) Alexander Chernov  <cher@ejudge.ru>

	* html.c:
	(html_write_user_problems_summary) `hidden' problems are skipped
	  in summary table.

	* new_server_html.c:
	(unpriv_submit_run) if `problem_navigation' global configuration
	  variable is set, the submit dialog for the next problem is
	  automatically chosen instead of submit table;
	(html_problem_selection) problems with `disable_user_submit'
	  are not skipped;
	(user_main_page) `problem_navigation' global configuration variable
	  is supported.

2007-01-15 (r3853) Alexander Chernov  <cher@ejudge.ru>

	* runlog.c:
	(read_runlog) finish_time header field is updated, if different
	  time is specified in the parameters.

2007-01-14 (r3851) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) better coloring is implemented.

	* serve_2.c:
	(serve_judge_virtual_olympiad) bug fixed.

2007-01-14 (r3849) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_write_olympiads_user_runs) `all_runs' parameter is added.

	* runlog.h:
	(run_status_str) `prob_type' parameter is added.

	* html.c:
	(write_html_run_status) call of `run_status_str' is updated;
	(html_write_user_problems_summary) output-only problems in accepting
	  mode are supported;
	(new_write_user_runs) call of `run_status_str' is updated;
	(do_write_public_log) call of `run_status_str' is updated;
	(write_xml_team_testing_report) call of `run_status_str' is updated;
	(write_xml_team_output_only_acc_report) the same as above;
	(write_xml_team_accepting_report) the same as above.

	* master_html.c:
	(print_raw_record) call of `run_status_str' is updated;
	(write_priv_all_runs) the same as above;
	(write_priv_source) the same as above;
	(write_xml_testing_report) the same as above;
	(write_runs_dump) the same as above.

	* new_server_html.c:
	(user_main_page) `all_runs' flag is passed to
	  `ns_write_olympiads_user_runs'.

	* new_server_html_2.c:
	(ns_write_priv_all_runs) call of `run_status_str' is updated;
	(ns_write_priv_source) the same as above;
	(ns_upload_csv_runs) the same as above;
	(ns_write_olympiads_user_runs) `all_runs' parameter is added;
	  call of `run_status_str' is updated.

	* printing.c: copyright year is updated;
	(print_banner_page) call of `run_status_str' is updated.

	* runlog.c:
	(run_status_str) `prob_type' parameter is added.

	* runlog_import.c: copyright year is updated;
	(runlog_import_xml) call of `run_status_str' is updated.

	* serve_2.c:
	(serve_judge_virtual_olympiad) WA runs for output-only problems
	  are considered accepted.

2007-01-14 (r3847) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.c:
	(start_serve) `random_cleanup' is called to close "/dev/urandom";
	(do_loop) the same, as above.

	* team_extra_xml.c: copyright year is updated;
	(parse_viewed_clars) stupid bug, that causes abort, if the number of
	  clars >= 512 is fixed.

2007-01-14 (r3843) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `problem_navigation' field is added.

	* prepare_dflt.h: copyright year is updated;
	default value for `problem_navigation' is added.

	* super_actions.h, super_proto.h:
	editing of the `problem_navigation' global configuration variable
	  is supported.

	* new_server_html.c:
	(user_main_page) `exam_mode' contest flag support is improved.

	* prepare.c, prepare_out.c:
	`problem_navigation' global configuration variable is added.

	* serve-control.c, super_html_3.c, super-serve.c:
	editing of the `problem_navigation' global configuration variable
	  is supported.

2007-01-14 (r3842) Alexander Chernov  <cher@ejudge.ru>

	* html.h: copyright year is updated;
	(write_xml_testing_report) `accepting_mode' parameter is added;
	(html_write_user_problems_summary) the same as as above.

	* html.c:
	(html_write_user_problems_summary) `accepting_mode' parameter is added;
	(write_xml_testing_report) `accepting_mode' parameter is added;
	(new_write_user_report_view) call of `write_xml_testing_report'
	  is updated;
	(write_team_page) call of `html_write_user_problems_summary'
	  is updated.

	* master_html.c: copyright year is updated;
	(write_priv_report) call of `write_xml_team_testing_report' is
	  updated.

	* new_server_html.c:
	(unpriv_print_status) `exam_mode' contest flag is supported;
	(priv_main_page) virtual olympiad contests are supported;
	(unpriv_view_report) virtual olympiad contests are supported;
	(unpriv_page_header) virtual olympiad contests are supported;
	(user_main_page) virtual olympiad contests are supported.

	* new_server_html_2.c:
	(ns_write_priv_report) call of `write_xml_team_testing_report' updated;
	(get_checker_comment) new function;
	(ns_write_olympiads_user_runs) `get_checker_comment' is used.

2007-01-13 (r3838) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_state) `description' field is added.

	* new_server_html.c:
	(unpriv_print_status) `exam_mode' is partly supported;
	  `description_file' global config variable is handled.

	* runlog.c:
	(runlog_check) `judge_id' is cleared when virtual run is checked.

	* serve_state.c:
	(serve_state_destroy) `description' field is cleared.

2007-01-13 (r3836) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `description_file' field is added.

	* super_actions.h:
	actions for editing `description_file' global configuration variable
	  are added.

	* super_proto.h:
	commands for editing `description_file' global configuration variable
	  are added.

	* prepare.c, prepare_out.c:
	`description_file' global configuration variable is supported.

	* serve-control.c, super-serve.c, super_html_3.c:
	editing of the `description_file' global configuration variable is
	  supported.

2007-01-13 (r3835) Alexander Chernov  <cher@ejudge.ru>

	* contests.h: copyright year is updated;
	(struct contest_desc) `exam_mode' field is added.

	* super_actions.h: copyright year is updated;
	action for editing `exam_mode' contest attribute is added.

	* super_proto.h: copyright year is updated;
	command for editing `exam_mode' contest attribute is added.

	* contests.c: copyright year is updated;
	support for `exam_mode' contest attribute is added.

	* super-serve.c, serve-control.c, super_html.c, super_html_2.c: copyright year is updated;
	support for editing `exam_mode' contest attribute is added.

2007-01-12 (r3833) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_4.c:
	(do_dump_master_runs) 64-bit fixes.

2007-01-07 (r3831) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_is_imported) new function prototype.

	* serve_2.c:
	(serve_move_files_to_insert_run) several bugs are fixed;
	(check_file) commented out;
	(serve_collect_virtual_stop_events) file checking is commented out.

	* runlog.c:
	(run_is_imported) new function.

2007-01-07 (r3826) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_forced_set_judge_id) new function prototype.

	* new_server_html.c:
	(unpriv_command) `VIRTUAL_STOP' is properly handled.

	* runlog.c:
	(run_forced_set_judge_id) new function.

	* serve_2.c:
	(serve_judge_virtual_olympiad) `run_forced_set_judge_id' is called.

2007-01-07 (r3825) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(ns_write_olympiads_user_runs) new function prototype.

	* new_server_proto.h:
	`NEW_SRV_ERR_ANSWER_UNSPECIFIED' error code is added.

	* runlog.h: copyright year is updated;
	(run_get_virtual_start_entry) new function prototype;
	(run_get_virtual_info) new function prototype;
	(run_forced_clear_entry) new function prototype;
	(run_forced_set_hidden) new function prototype.

	* serve_state.h:
	(struct serve_event_queue) added;
	(struct serve_state) `event_first', `event_last' fields are added;
	(serve_event_add) new function prototype;
	(serve_event_remove) new function prototype;
	(serve_event_destroy_queue) new function prototype;
	(serve_event_remove_matching) new function prototype;
	(serve_collect_virtual_stop_events) new function prototype;
	(serve_handle_events) new function prototype;
	(serve_judge_virtual_olympiad) new function prototype.

	* html.c: copyright year is updated.

	* new_server_html.c:
	(ns_check_contest_events) `serve_handle_events' is called;
	(unpriv_submit_run) error reporting is improved.
	(unpriv_command) error reporting is improved;
	(user_main_page) localization is improved;
	  `ns_write_olympiads_user_runs' is called for OLYMPIAD contests.

	* new_server_html_2.c:
	(ns_write_olympiads_user_runs) new function.

	* new_server_proto.c:
	description for NEW_SRV_ERR_ANSWER_UNSPECIFIED is added.

	* register.c: copyright year is updated;
	(read_user_info_from_server) `region' field is read.

	* runlog.c:
	"random.h" is included;
	(run_init) `random_init' is called;
	(append_to_end) new function;
	(append_record) rewritten to handle nsec == -1 and RUN_EMPTY runs;
	(run_get_virtual_start_entry) new function;
	(run_get_virtual_stop_time) bug fixed???
	(run_virtual_stop) `nsec' check is removed;
	(run_forced_clear_entry) new function;
	(run_forced_set_hidden) new function;
	(run_get_virtual_info) new function.

	* serve_2.c: copyright year is updated;
	(serve_collect_virtual_stop_events) new function;
	(handle_virtual_stop_event) new function;
	(handle_judge_olympiad_event) new function;
	(serve_handle_events) new function;
	(serve_judge_virtual_olympiad) new function.

	* serve_state.c:
	<reuse/logger.h> is included;
	(serve_state_destroy) `serve_event_destroy_queue' is called;
	(serve_state_load_contest) virtual stop event collection is added;
	(serve_event_add) new function;
	(serve_event_remove) new function;
	(serve_event_destroy_queue) new function;
	(serve_event_remove_matching) new function.

2007-01-03 (r3823) Alexander Chernov  <cher@ejudge.ru>

	* team.c: copyright year is updated;
	(redirect_to_new_client) `locale_id' is parsed before redirecting.

2007-01-03 (r3817) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c: copyright year is updated;
	(super_html_print_problem) memory limit handling is improved;
	(super_html_read_serve) memory limit handling is improved.

2007-01-03 (r3815) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare_tester_refinement) `tester_init_func' is called to
	  properly initialize all fields.

	* run.c:
	(run_tests) debug output is fixed.

2007-01-03 (r3813) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: copyright year is updated;
	(struct section_problem_data) new field `max_data_size';
	(struct section_tester_data) new fields `memory_limit_type',
	  `memory_limit_type_val';
	(prepare_parse_memory_limit_type) function prototype is added.

	* ejudge-setup.c: copyright year is updated;
	(generate_serve_cfg) memory limit handling is updated.

	* prepare.c: copyright year is updated;
	new problem configuration variable `max_vm_size', `max_stack_size',
	  `max_data_size';
	new tester configuration variable `memory_limit_type';
	(prepare_parse_memory_limit_type) new function.

	* prepare_out.c: copyright year is updated;
	(prepare_unparse_prob) `max_vm_size', `max_data_size', `max_stack_size'
	  variables are unparsed;
	(generate_abstract_tester) `max_vm_size', `max_stack_size' parameters
	  are removed;
	  correct value of `memory_limit_type' is generated for all supported
	  abstract testers;
	(generate_concrete_tester) `max_vm_size', `max_stack_size' parameters
	  are removed;
	  the `max_vm_size', `max_stack_size' tester variables are not
	  generated, since they are superseded by the problem-specific
	  variables;
	(prepare_unparse_testers) all the `max_vm_size' and `max_stack_size'
	  handling stuff is commented out.

	* run.c: copyright year is updated;
	(size_t_to_size) function copied here from `prepare_out.c';
	(run_tests) new memory limit support is added: `max_vm_size',
	  `max_stack_size' are now problem-specific variables,
	  and tester-specific variable `memory_limit_type' determines
	  how the memory limit settings are handled;
	  legacy handling is supported, though.

2007-01-02 (r3808) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: copyright year is updated;
	(struct http_request_info) new fields `client_state' and `no_reply'
	  are added;
	new action codes are added;
	(ns_contest_unload_callback) new function prototype;
	(ns_client_destroy_callback) new function prototype;
	(ns_get_client_by_id) new function prototype;
	(ns_send_reply) new function prototype;
	(ns_new_autoclose) new function prototype.

	* new_server_proto.h: copyright year is updated;
	new error codes are added.

	* server_framework.h: copyright year is updated;
	(struct client_state) new fields `contest_id' and `destroy_callback'
	  are added;
	(nsf_get_client_by_id) new function prototype.

	* serve_state.h: copyright year is updated;
	(struct serve_state) new fields `saved_testing_suspended',
	  `client_id', `pending_xml_import', `destroy_callback'
	  are added.

	* copyright.c: copyright year is updated.

	* new-server.c: copyright year is updated;
	(ns_get_client_by_id) new function;
	(ns_send_reply) new function;
	(ns_new_autoclose) new function;
	(cmd_http_request) `client_state' field is filled;
	  `no_reply' flag is handled.

	* new-server-cmd.c: copyright year is updated;
	basically all stuff is implemented.

	* new_server_html.c: copyright year is updated;
	(ns_contest_unload_callback) new function;
	(ns_client_destroy_callback) new function;
	(ns_unload_contest) contests with pending XML imports are not
	  unloaded;
	(handle_pending_xml_import) new function;
	(ns_loop_callback) if there are no transient runs and there is
	  pending XML import, the corresponding function is called.

	* new_server_html_2.c: copyright year is updated;
	(ns_write_priv_report) `run_is_report_available' function is used.

	* new_server_html_4.c: copyright year is updated;
	all command line handling stuff is implemeted.

	* new_server_proto.c: copyright year is updated;
	new error descriptions.

	* runlog.c: copyright year is updated;
	(run_is_report_available) ignored, disqualified and pending runs
	  are marked as having no report available.

	* server_framework.c: copyright year is updated;
	(nsf_get_client_by_id) new function is added;
	(client_state_delete) destroy callback is called.

	* serve_state.c: copyright year is updated;
	(serve_state_destroy) destroy callback is called.

2006-12-31 (r3806) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`new_server_html_4.c' is added.

	* new-server.h:
	new actions for command line client are added;
	(new_server_cmd_handler) function prototype is added;
	(ns_cgi_param) function prototype is added;
	(ns_cgi_param_bin) function prototype is added;
	(ns_open_ul_connection) function prototype is added;
	(ns_list_all_users_callback) function prototype is added;
	(ns_check_contest_events) function prototype is added.

	* new_server_proto.h:
	error `NEW_SRV_ERR_INV_ANSWER' is added.

	* new-server-cmd.c: progress...

	* new_server_html.c:
	(ns_cgi_param) no longer `static';
	(ns_cgi_param_bin) no longer `static';
	(ns_open_ul_connection) renamed from `open_ul_connection' and no
	  longer `static';
	(ns_list_all_users_callback) renamed from `list_all_users_callback'
	  and no longer `static';
	(ns_check_contest_events) renamed from `check_contest_events'
	  and no longer `static';
	(parse_int) moved to `new_server_html_4.c';
	(cmd_login) the same as above;
	(cmd_logout) the same as above;
	(cmd_dump_runs) the same as above;
	(cmd_dump_problems) the same as above;
	(cmd_operation) the same as above;
	(cmd_run_operation) the same as above;
	(new_server_cmd_handler) the same as above.

	* new_server_html_4.c: initial revision.

2006-12-30 (r3804) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_text_run_status) function prototype is added.

	* master_html.c:
	(write_priv_clar) filter expressions for `user_id' fields are added.

	* new_server.h:
	new commands are added;
	(ns_write_user_run_status) new function prototype.

	* new_server_proto.h:
	`NEW_SRV_ERR_TRANSIENT_RUNS' error code is added.

	* runlog.h:
	(run_is_valid_status) new function prototype;
	(run_is_valid_user_status) new function prototype.

	* serve_state.h:
	(serve_count_transient_runs) new function prototype.

	* new-server-cmd.c: progress...

	* new_server_html.c:
	(cmd_dump_runs) new function;
	(cmd_dump_problems) new function;
	(cmd_operation) new function;
	(cmd_run_operation) new function;
	(cmd_actions_table) many new command-line client operations are added.

	* new_server_html_2.c:
	(ns_write_user_run_status) new functon.

	* runlog.c:
	(run_is_valid_status) new function;
	(run_is_valid_user_status) new function.

	* serve.c:
	(count_transient_runs) function moved to `serve_2.c' as
	  `serve_count_transient_runs'.

	* serve_2.c:
	(serve_count_transient_runs) function moved here from `serve.c'.

2006-12-27 (r3802) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.h:
	(nsf_close_client_fds) new function prototype is added.

	* new-server.c:
	(cmd_http_request) bug in freeing output buffer is fixed;
	  the pipe fds are closed if no output is produced.

	* server_framework.c:
	(nsf_close_client_fds) new function implemented.

2006-12-27 (r3800) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `allow_empty_output' field is added.

	* new-server.c:
	(cmd_http_request) `allow_empty_output' flag is supported.

	* new_server_html.c:
	(new_server_cmd_handler) `allow_empty_output' flag is set to 1.

2006-12-27 (r3798) Alexander Chernov  <cher@ejudge.ru>

	* new-server-cmd.c:
	(parse_session_id) new function;
	(prepare_logout) new function.

	* new_server_html.c:
	(cmd_logout) implemented;
	(new_server_cmd_handler) implemented.

2006-12-27 (r3796) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) `protocol_reply' field is added.

	* new_server_proto.h:
	new error codes are added;
	(ns_strerror_2) new function prototype is added.

	* new-server.c:
	(cmd_http_request) `protocol_reply' field is handled.

	* new-server-cmd.c: in progress...

	* new_server_html.c:
	(parse_int) new function;
	(cmd_login) new function to handle the `LOGIN' action for the
	  new-server-cmd;
	(new_server_cmd_handler) new function to handle the `new-server-cmd'
	  commands;
	(ns_handle_http_request) "new-server-cmd" commands are handled.

	* new_server_proto.c:
	new error descriptions are added;
	(ns_strerror_2) new function is added.

2006-12-27 (r3795) Alexander Chernov  <cher@ejudge.ru>

	* l10n.c:
	(l10n_prepare) "LANG" variable is removed from the environment.

2006-12-27 (r3787) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`NEW_SRV_ACTION_LOGIN' is added.

	* new_server_proto.h:
	EJUDGE_NEW_SERVER_SOCKET_DEFAULT is added.

	* new-client.c:
	(initialize) `EJUDGE_NEW_SERVER_SOCKET_DEFAULT' is used for the
	  default path to the new_server_socket.

	* new-server.c:
	(main) `EJUDGE_NEW_SERVER_SOCKET_DEFAULT' is used for the
	  default path to the new_server_socket.

	* new-server-cmd.c: progress...
	variants of `login' command are basically implemented.

	* new-server-control.c:
	"new_server_proto.h", <reuse/xalloc.h> are included;
	(main) new_server_socket path is setup correctly.

2006-12-25 (r3785) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_all_runs) "Merge runs in XML format link is added".

2006-12-25 (r3783) Alexander Chernov  <cher@ejudge.ru>

	* new_server.h:
	actions for uploading XML runlogs are added.

	* new_server_proto.h: new error is added.

	* new_server_html.c:
	XML runlog uploading is supported;
	(priv_upload_runlog_xml_1) new function;
	(priv_upload_runlog_xml_2) new function.

	* new_server_proto.c: new error is added.

2006-12-25 (r3781) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	(ns_write_priv_clar) construction of user-specific filter
	  expression is added.

2006-12-25 (r3779) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_view_users_page) view the specified user filter expression is
	  generated.

	* runlog_xml.c:
	(unparse_runlog_xml) boolean attributes are unparsed only if TRUE.

2006-12-25 (r3777) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: new commands are added.

	* new_server_proto.h: new error is added.

	* master_html.c:
	(write_runs_dump) printing of "short" status is added.

	* new_server_html.c:
	(priv_view_runs_dump) "export_xml_runs" and "write_xml_runs"
	  commands are supported;
	(priv_main_page) "Export runs in XML external format" and
	  "Write runs in XML internal format" links are added.

	* new_server_proto.c: new error is added.

	* runlog_xml.c:
	"mime_type.h" is included;
	(process_run_elements) `hidden', `ssl', `mime_type', `pages'
	  attribute are parsed;
	(unparse_runlog_xml) the new attributes are unparsed.

2006-12-25 (r3773) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	new action `NEW_SRV_ACTION_VIEW_RUNS_DUMP' is added.

	* master_html.c:
	"mime_type.h" is included;
	(write_runs_dump) header row is printed;
	  all new fields are printed.

	* new_server_html.c:
	(priv_view_runs_dump) new function to dump runs in CSV format;
	(priv_main_page) "Dump runs in CSV format" link is added.

2006-12-24 (r3771) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h:
	(struct ejudge_cfg) new fields `new_server_socket', `new_server_log'
	  are added.

	* ejudge_cfg.c:
	new elements <new_server_socket>, <new_server_log> are supported.

	* new-client.c:
	Support for config file is added. The config file is in conf format
	similar to the format of the `master' CGI-program.

	* new-server.c:
	Support for new elements <new_server_socket> and <new_server_log>
	is implemented.

	* startstop.c:
	<signal.h> is included;
	(start_set_self_args) the initial signal blocking mask is saved;
	(start_restart) the initial signal blocking mask is restored.

2006-12-24 (r3767) Alexander Chernov  <cher@ejudge.ru>

	* csv.h:
	(csv_parse) function prototype is added;
	(csv_free) function prototype is added.

	* new-server.h:
	new actions are added;
	(ns_upload_csv_runs) new function prototype.

	* new_server_proto.h:
	new errors are added.

	* csv.c:
	(csv_parse) fixes.

	* html_hidden.c:
	(html_hidden) buffer size is increased to 16K.

	* new_server_html.c:
	(priv_upload_runlog_csv_1) new function for importing runs in CSV
	  format;
	(priv_upload_runlog_csv_2) new function for importing runs in CSV
	  format;
	actions NEW_SRV_ACTION_UPLOAD_RUNLOG_CSV_1,
	  NEW_SRV_ACTION_UPLOAD_RUNLOG_CSV_2 are handled.

	* new_server_html_2.c:
	"csv.h", "sha.h" are included;
	(ns_write_priv_all_runs) "Add new runs in CSV format" button is added;
	(ns_download_runs) IGNORED and DISQUALIFIED runs are downloaded in
	  OK-only mode;
	(ns_upload_csv_runs) new function.

	* new_server_proto.c:
	new errors are added.

	* new_server_tables.c:
	texts for new actions are added.

2006-12-21 (r3765) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(graceful_exit) the main control socket is closed;
	(cleanup_clients) fixes.

2006-12-21 (r3763) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(graceful_exit) cleanup code is improved.

2006-12-21 (r3761) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(cleanup_clients) new function;
	(main) resources are better released upon exit or restart.

2006-12-20 (r3759) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	csv.h, csv.c are added.

	* csv.h: initial revision.

	* misctext.h:
	(dos2unix_buf) new function prototype.

	* csv.c: initial revision.

	* diff.c:
	"misctext.h" is included;
	(compare_runs) files are converted to Unix format before comparing.

	* dos2unix_str.c: copyright notice is updated;
	<stdio.h> is included;
	(dos2unix_buf) new function.

	* job-server.c:
	(main) resource leak on restart is fixed.

	* serve_2.c:
	(serve_run_request) accepting_mode is by default ON for virtual
	  olympiad contests.

	* serve_state.c:
	(serve_state_load_contest) virtual olympiad contests are supported.

2006-12-20 (r3757) Alexander Chernov  <cher@ejudge.ru>

	* random.h: copyright notice is updated;
	(random_cleanup) prototype is added.

	* super-serve.c:
	(main) `random_cleanup' is called.

	* random.c: copyright notice is updated;
	(random_cleanup) new function.

2006-12-20 (r3755) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	virtual contest support fix.

2006-12-20 (r3753) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_submit_run) crash when empty run is submitted is fixed.

	* server_framework.c:
	(nsf_cleanup) sockets are properly closed.

	* super_html_3.c:
	virtual "olympiad" contests are supported.

2006-12-18 (r3751) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `ignore_exit_code' field is added.

	* super_actions.h, super_proto.h:
	support for editing `ignore_exit_code' problem configuration
	  variable is added.

	* prepare.c, prepare_out.c:
	`ignore_exit_code' problem configuration variable is added.

	* run.c:
	(run_tests) `ignore_exit_code' problem configuration variable
	  is handled.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of `ignore_exit_code' problem configuration variable
	  is supported.

2006-12-18 (r3749) Alexander Chernov  <cher@ejudge.ru>

	* new_server.h:
	runs download actions are added;
	runs download option constants are added;
	(ns_download_runs) new function prototype.

	* new_server_proto.h:
	new error types are added.

	* new_server_html.c:
	<errno.h> is included;
	(priv_download_runs_confirmation) new function implemented;
	(priv_download_runs) new function implemented;
	(unpriv_main_page) new name for `unprivileged_page'.

	* new_server_html_2.c:
	"errlog.h", <reuse/osdeps.h>, <errno.h>, <sys/wait.h> are included;
	(ns_write_priv_all_runs) "Download runs" button is added;
	(ns_download_runs) new function is implemented.

	* new_server_proto.c:
	new error messages are added.

	* new_server_tables.c:
	button labels for run download buttons are added.

2006-12-14 (r3742) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: support for java 1.6.

2006-12-14 (r3740) Alexander Chernov  <cher@ejudge.ru>

	* ej-javac.c: working version is completed.

2006-12-14 (r3737) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin_xml.c:
	(copy_user_info_func) members are copied as well.

	* userlist.c:
	(userlist_clone_member) `birth_date', `entry_date', `graduation_date'
	  fields are copied.

2006-12-14 (r3735) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin.h:
	(struct uldb_plugin_iface) `copy_user_info' a parameter is added.

	* userlist.h:
	(userlist_map_userlist_to_contest_field) new function prototype.

	* uldb_plugin_xml.c:
	(set_user_xml_func) `dirty' flag is set;
	(copy_user_info_func) `cnts' parameter is added;
	  copying of contest-specific generic fields is added.

	* userlist.c:
	(userlist_map_userlist_to_contest_field) new function.

	* userlist-server.c:
	(cmd_copy_user_info) use of `default_copy_user_info' updated.

2006-12-11 (r3733) Alexander Chernov  <cher@ejudge.ru>

	* testinfo.h:
	removed TESTINFO_char_t hackery, `char *' is used instead of
	  `unsigned char *' for strings.

	* new_server_html.c:
	(write_alternatives_file) `class_name' parameter is added;
	(priv_main_page) "borderless" class is passed to
	  `write_alternatives_file';
	(user_main_page) the same as above;
	(unpriv_page_header) `disable_user_standings' and `disable_clars'
	  are handled.

	* testinfo.c:
	(testinfo_parse) `path' parameter type is changed to `const char *';
	(testinfo_strerror) return type is changed to `const char *'.

2006-12-04 (r3723) Alexander Chernov  <cher@ejudge.ru>

	* compile.c, job-server.c, super-serve.c, userlist-server.c:
	(main) restart handling is improved: -C, -u, -g, -D options are
	  removed from restart arguments.

	* master_html.c:
	(generate_daily_statistics) language statistics generation is
	  fixed.

2006-11-30 (r3719) Alexander Chernov  <cher@ejudge.ru>

	* startstop.h:
	(start_set_args) new function prototype.

	* new-server.c:
	(main) certain options like `-D', `-u', `-g', `-c' are filtered out
	  for restart.

	* startstop.c:
	(start_set_args) new function.

2006-11-30 (r3717) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(parse_variant_map) resources are properly released.

2006-11-26 (r3713) Alexander Chernov  <cher@ejudge.ru>

	* new_server_clnt.h:
	(new_server_clnt_http_request) `reply_bytes', `reply_size' parameters
	  are added.

	* new-client.c:
	(main) incorrect exit condition for connect loop is fixed;
	  use of `new_server_clnt_http_request' is fixed.

	* new_server_html.c:
	(testing_page) new function: used to test various new features.

	* new-server-cmd.c: progress...

	* serve-cmd.c:
	(invoke_new_server_cmd) new function;
	(main) `new-server-cmd' is invoked for new-managed contests.

2006-11-25 (r3708) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `new-server-cmd.c' is added.

	* Makefile.unix.in: rules for `new-server-cmd' are added.

	* new-server-cmd.c: initial revision.

2006-11-24 (r3706) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_main_page) no control buttons are generated in judge mode.

2006-11-24 (r3704) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	`NEW_SRV_ACTION_VIEW_USER_REPORT' is added;
	(ns_aref_2) new prototype is added;
	(ns_write_audit_log) prototype is changed.

	* new_server_proto.h:
	`NEW_SRV_ERR_AUDIT_LOG_NONEXISTANT' is added.

	* new_server_html.c:
	(ns_aref_2) new function;
	(priv_view_audit_log) implemented;
	(priv_view_report) user report viewing is supported.

	* new_server_html_2.c:
	(ns_write_run_view_menu) new function;
	(ns_write_priv_source) `ns_write_run_view_menu' is used;
	(ns_write_priv_report) `ns_write_run_view_menu' is used;
	  viewing user report is supported;
	(ns_write_audit_log) implemented properly.

	* new_server_proto.c:
	`NEW_SRV_ERR_AUDIT_LOG_NONEXISTANT' is added.

2006-11-24 (r3700) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/priv_cookie_login.c' is added.

	* new-server.h:
	`NEW_SRV_ACTION_COOKIE_LOGIN' action is added.

	* userlist_clnt.h:
	(userlist_clnt_priv_cookie_login) new function prototype.

	* userlist_proto.h:
	`ULS_PRIV_COOKIE_LOGIN' command is added;
	(struct userlist_pk_check_cookie) `role' field is added.

	* new_server_html.c:
	(privileged_page_cookie_login) new function to seamlessly login
	  from the `super-serve' control page;
	(privileged_page) new action `NEW_SRV_ACTION_COOKIE_LOGIN' handled.

	* super_html.c:
	(super_html_main_page) URL for new-judge and new-master are changed;
	(super_html_contest_page) the same as above.

	* userlist-server.c:
	(cmd_priv_cookie_login) new function to handle
	  `ULS_PRIV_COOKIE_LOGIN' request.

2006-11-23 (r3698) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(ns_loop_callback) use of `check_contest_events' is updated;
	  auto update of public submission log and xml logs is added;
	(ns_post_select_callback) use of `check_contest_events' is updated;
	(check_contest_events) `cnts' parameter is added;
	(priv_contest_operation) use of `check_contest_events' is updated;
	(privileged_page) the same as above;
	(unprivileged_page) the same as above.

	* serve_state.c:
	(serve_state_load_contest) standings are auto-updated.

2006-11-23 (r3696) Alexander Chernov  <cher@ejudge.ru>

	* register.c:
	(display_date_change_dialog) year display is fixed.

2006-11-23 (r3694) Alexander Chernov  <cher@ejudge.ru>

	* master_html.c:
	(generate_daily_statistics) lang_id == 0 is handled properly.

	* new_server_html.c:
	(unpriv_page_header) external "Problems" link is marked to be
	  opened in a new browser window.

2006-11-23 (r3693) Alexander Chernov  <cher@ejudge.ru>

	* register.c:
	new fields `birth_date', `entry_date', `graduation_date' are
	  supported;
	(parse_date_from_form) new function;
	(display_date_change_dialog) new function.

	* uldb_plugin_xml.c:
	(set_user_xml_func) new fields `birth_date', `entry_date',
	  `graduation_date' are supported.

	* userlist-server.c:
	(do_dump_database) new fields `birth_date', `entry_date',
	  `graduation_date' are supported.

2006-11-20 (r3691) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	support for new elements <birth_date>, <entry_date>, <graduation_date>
	  is added;
	(struct userlist_member) new fields `birth_date', `entry_date',
	  `graduation_date' are added.

	* userlist.c, userlist_xml.c, edit-userlist.c:
	support for new fields `birth_date', `entry_date', `graduation_date'
	  is implemented.

2006-11-20 (r3687) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for future `birth_date', `entry_date', `graduation_date'
	  userlist fields is added.

	* contests.c, super_html.c:
	support for future `birth_date', `entry_date', `graduation_date'
	  userlist fields is added.

2006-11-20 (r3685) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `job-server-cmd.c' is added.

2006-11-20 (r3684) Alexander Chernov  <cher@ejudge.ru>

	* job-server-cmd.c:
	(main) use of `send_job_packet' is updated.

2006-11-19 (r3682) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `ejudge-control.c' is added.

	* Makefile.unix.in: rules for `ejudge-control' are added.

	* ejudge-control.c: initial revision.

2006-11-19 (r3681) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: CGI programs installation directory is changed
	to ${prefix}/libexec/ejudge/cgi-bin.

2006-11-17 (r3678) Alexander Chernov  <cher@ejudge.ru>

	* compile.c:
	(do_loop) special packets are handled (with contest_id == 0).
	  currently, terminate and restart are handled using these
	  packets.

	* compile-control.c: basically implemented.

	* compile_packet_1.c:
	(compile_request_packet_read) contest_id is allowed to be 0 for
	  special packets.

	* compile_packet_2.c: copyright notice is updated;
	(compile_request_packet_write) contest_id is allowed to be 0 for
	  special packets.

2006-11-17 (r3677) Alexander Chernov  <cher@ejudge.ru>

	* job_packet.h: copyright notice is updated;
	(send_job_packet) `p_path' parameter is added.

	* compile.c:
	(main) return value of `start_prepare' is checked.

	* job-server.c:
	SIGHUP causes the program restart;
	new packets are handled: "stop", "restart", "nop";
	new options handled: `-u', `-g', `-C'.

	* job-server-control.c: implemeted.

	* new-server.c:
	(main) return value of `start_prepare' is checked.

	* send_job_packet.c: copyright notice is updated;
	(send_job_packet) `p_path' parameter is added.

	* serve.c:
	(cmd_team_submit_clar) use of `send_job_packet' is updated;
	(main) return value of `start_prepare' is checked.

	* serve_2.c:
	use of `send_job_packet' is updated.

	* super-serve.c:
	(main) return value of `start_prepare' is checked.

	* userlist-server.c:
	use of `send_job_packet' is updated;
	(main) return value of `start_prepare' is checked.

2006-11-17 (r3676) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_print_status) form is generated around virtual start/stop
	  buttons.

2006-11-17 (r3675) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`new_server_clnt/control.c' is added.

	* Makefile.unix.in:
	deps for new-server-control.c are fixed.

	* new_server_proto.h:
	`NEW_SRV_CMD_STOP', `NEW_SRV_CMD_RESTART' added.

	* new_server_clnt.h:
	(new_server_clnt_control) new function prototype.

	* new-server.c:
	(cmd_control) STOP and RESTART commands are handled.

	* new-server-control.c: basically completed.

2006-11-17 (r3673) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`super_clnt/control.c' is added.

	* Makefile.unix.in:
	super-serve-control dependencies are fixed.

	* super_clnt.h: copyright notice is updated;
	(super_clnt_control) new function prototype.

	* super_proto.h:
	`SSERV_CMD_STOP', `SSERV_CMD_RESTART' commands are added.

	* super-serve.c:
	(cmd_control_server) new function to handle STOP and RESTART commands.

	* super-serve-control.c:
	basically completed.

2006-11-17 (r3670) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	new files added: userlist_clnt/control.c, compile-control.c,
	  job-server.c, job-server-control.c, new-server-control.c,
	  super-serve-control.c, userlist-server-control.c.

	* Makefile.unix.in:
	  rules for *-control programs are added.

	* userlist_clnt.h:
	(userlist_clnt_control) new function prototype is added.

	* userlist_proto.h:
	  ULS_STOP, ULS_RESTART commands are added.

	* ejudge_cfg.c:
	(parse_user_map) `info' output is commented out.

	* new-server-control.c, userlist-server-control.c, job-server-control.c, super-serve-control.c, compile-control.c:
	initial revision.

	* userlist-server.c:
	(cmd_control_server) new function to handle `ULS_STOP', `ULS_RESTART'
	  requests.

2006-11-13 (r3664) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac:
	default values for --enable-socket-path, --enable-super-serve-socket,
	--enable-contests-home-dir, --enable-conf-dir, --enable-cgi-conf-dir
	are provided;
	uudecode detection is removed.

	* Makefile.unix.in:
	rules for `uudecode' are added.

	* config.h.in:
	EJUDGE_PROGRAM_UUDECODE is removed.

	* files.make:
	startstop.[ch] are added.

	* new_server_proto.h:
	NEW_SRV_ERR_WARN_TEXT_EMPTY renamed;
	NEW_SRV_ERR_SUBMIT_EMPTY added.

	* server_framework.h:
	(nsf_is_restart_requested) function prototype is added.

	* startstop.h:
	initial revision.

	* compile.c:
	"startstop.h" is included;
	(set_self_args) moved to `startstop';
	(switch_user) moved to `startstop';
	(main) daemon mode is implemented.

	* ejudge-setup.c:
	ejudge's version of `uudecode' program is used;
	new `serve' options `-u', `-g', `-C' are used in initializatin mode.

	* new-server.c:
	"startstop.h", "pathutl.h", <reuse/osdeps.h> are included;
	(main) `-u', `-g', `-C' options are handled.

	* new_server_html.c:
	(priv_user_issue_warning) error code is slighly renamed;
	(unpriv_submit_run) check for empty submit is added.

	* new_server_proto.c:
	NEW_SRV_ERR_WARN_TEXT_EMPTY renamed;
	NEW_SRV_ERR_SUBMIT_EMPTY added.

	* serve.c:
	"startstop.h", <sys/types.h> are included;
	(do_loop) teamdb is not accessed, if in initialization mode;
	(main) `-u', `-g', `-C' options are handed.

	* server_framework.c:
	(nsf_main_loop) SIGHUP support is added;
	(nsf_is_restart_requested) new function.

	* startstop.c: initial revision.

	* super-serve.c:
	"startstop.h" is included;
	(do_loop) SIGHUP is handled;
	(arg_expected) new function;
	(main) `-u', `-g', `-C' options are handled;

	* userlist-server.c:
	"startstop.h" is included;
	SIGHUP is used for restarting;
	SIGUSR2 is used for flushing database;
	(arg_expected) new function prototype;
	(main) `-u', `-g', `-C' options are added.

	* uudecode.c:
	initial revision.

2006-11-06 (r3661) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in:
	new-master, new-judge are symlinked to new-client;
	extra and checkers subdirectory install rules are exchanged.

	* ejudge-setup.c:
	(generate_contest_xml) the contest 1 is new-managed;
	(generate_ejudge_xml) plugin configuration is created;
	(generate_install_script) new-client, new-master, new-judge symlinks
	  are created;
	  new options for `compile' setup run are used.
	

	* compile.c:
	<sys/types.h>, <pwd.h>, <grp.h> are included;
	(do_loop) SIGHUP is handled, and the program is restarted on it;
	(filter_languages) declared static;
	(set_self_args) new function;
	(switch_user) new function;
	(main) -u, -g, -C options are supported;
	if the uid is root, the user is switched to the specified in
	  the command line with -u, -g options;
	restart on SIGHUP is requested.

2006-11-05 (r3657) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `disable_banner_page' field is added.

	* prepare_dflt.h:
	`disable_banner_page' is supported.

	* super_actions.h:
	action for editing the `disable_banner_page' global configuration
	  variable is added.

	* super_proto.h:
	command for editing the `disable_banner_page' global configuration
	  variable is added.

	* prepare.c, prepare_out.c:
	`disable_banner_page' global configuration variable is added.

	* printing.c:
	(do_print_run) `disable_banner_page' is supported.

	* super-serve.c, super_html_3.c, serve-control.c:
	support for editing `disable_banner_page' is implemented.

2006-11-05 (r3655) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(priv_change_password) new function.

	* super_html_3.c:
	(load_cs_languages) `compile_home_dir' is initialized to the default
	  value, if the current value is not set.

2006-11-03 (r3652) Alexander Chernov  <cher@ejudge.ru>

	* runlog.c:
	(run_set_entry) langauge check is relaxed.

2006-11-03 (r3648) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(unpriv_page_header) "Logout" link now displayed as "Logout [user]".

	* super_html.c:
	(super_html_main_page) links to the client programs are generated;
	(super_html_contest_page) the same as above.

2006-11-03 (r3638) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_team_testing_report) `table_class' parameter is added;
	(write_xml_team_accepting_report) `table_class' parameter is added.

	* master_html.c:
	(write_priv_report) use of `write_xml_team_testing_report' is updated.

	* html.c:
	(write_xml_team_testing_report) `table_class' parameter is added;
	(write_xml_team_output_only_acc_report) the same;
	(write_xml_team_accepting_report) the same.

	* new_server_html.c:
	(unpriv_view_report) user of `write_xml_team_accepting_report'
	  is updated;
	  use of `write_xml_team_testing_report' is updated.

	* new_server_html_2.c:
	(ns_write_priv_report) user of `write_xml_team_accepting_report'
	  is updated;
	  use of `write_xml_team_testing_report' is updated.

2006-11-02 (r3636) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_change_status_dialog) `td_class' parameter is added.

	* master_html.c:
	(write_change_status_dialog) `td_class' parameter is added;
	(write_priv_all_runs) call of `write_change_status_dialog' is updated;
	(write_priv_source) the same as above;
	(write_new_run_form) the same as above.

2006-11-02 (r3634) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_html_run_status) `td_class' parameter is added.

	* html.c:
	(write_html_run_status) `td_class' parameter is added;
	(new_write_user_runs) call of `write_html_run_status' is updated;
	(do_write_public_log) the same as above.

	* master_html.c:
	(write_priv_all_runs) call of `write_html_run_status' is updated.

	* new_server_html_2.c: progress...

2006-11-02 (r3620) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `disable_submit_after_ok' field
	  is added.

	* super_actions.h:
	action for editing `disable_submit_after_ok' problem configuration
	  variable is added.

	* super_proto.h:
	command for editing `disable_submit_after_ok' problem configuration
	  variable is added.

	* prepare.c, prepare_out.c:
	`disable_submit_after_ok' problem configuration variable is added.

	* new_server_html.c:
	problem variable `disable_submit_after_ok' is used instead of global
	  variable.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of `disable_submit_after_ok' problem configuration variable
	  is supported;

2006-11-02 (r3619) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) field `stand_attr' is added.

	* super_actions.h:
	actions for editing `stand_attr' problem configuration variable
	  are added.

	* super_proto.h:
	commands for editing `stand_attr' problem configuration variable
	  are added.

	* html.c:
	(do_write_kirov_standings) `stand_attr' problem configuration
	  variable is supported;
	(do_write_moscow_standings) the same as above;
	(do_write_standings) the same as above.

	* prepare.c:
	`stand_attr' problem configuration variable is added.

	* super-serve.c, super_html_3.c, serve-control.c:
	  editing of `stand_attr' problem configuration variable is supported.

2006-11-02 (r3618) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_squeeze_runs) prototype is added.

	* new_server_proto.h: progress...

	* new_server_html.c, new_server_proto.c, new_server_tables.c:
	  progress...

	* serve.c:
	(do_squeeze_runs) function is moved to serve_2.c as
	  `serve_squeeze_runs';
	(cmd_priv_command_0) `serve_squeeze_runs' is used.

	* serve_2.c:
	(serve_squeeze_runs) function is moved here from serve.c, where
	  is was `do_squeeze_runs'.

	* serve_state.c:
	(serve_state_destroy) bug is fixed.

2006-11-01 (r3613) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `disable_user_submit' field is added.

	* super_actions.h:
	action for editing `disable_user_submit' problem configuration
	  variable is added.

	* super_proto.h:
	command for editing `disable_user_submit' problem configuration
	  variable is added.

	* new_server_html.c:
	`disable_user_submit' variable is handled.

	* prepare.c, prepare_out.c:
	`disable_user_submit' problem configuration variable is added.

	* super-serve.c, super_html_3.c, serve-control.c:
	support for editing `disable_user_submit' problem configuration
	  variable is added.

2006-10-30 (r3610) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: on x86_64 libdir is lib64.

2006-10-30 (r3604) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `disable_user_standings' field
	  is added.

	* prepare_dflt.h:
	`disable_user_standings' is supported.

	* super_actions.h:
	action for editing `disable_user_standings' global configuration
	  variable is added.

	* super_proto.h:
	command for editing `disable_user_standings' global configuration
	  variable is added.

	* contests.c:
	(contests_merge) boolean attributes are properly merged.

	* job-server.c:
	(handle_mail_packet) `sendmail' support is implemented.

	* prepare.c, prepare_out.c:
	`disable_user_standings' global configuration variable is supported.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of the `disable_user_standings' global configuration
	  variable is supported.

	* userlist-server.c:
	(send_email_message) `sendmail' support is implemented;
	(cmd_register_new) email sending error is properly reported;
	(cmd_recover_password_1) the same as above;
	(cmd_recover_password_2) the same as above.

2006-10-29 (r3598) Alexander Chernov  <cher@ejudge.ru>

	* register.c:
	(read_user_info_from_server) initial member number fix.

2006-10-29 (r3593) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(recompile_checker) gcc/g++ options are added.

2006-10-29 (r3591) Alexander Chernov  <cher@ejudge.ru>

	* super_html.h:
	(super_html_variant_prob_op) new function prototype.

	* super_proto.h:
	SSERV_CMD_PROB_CLEAR_VARIANTS, SSERV_CMD_PROB_RANDOM_VARIANTS
	  are added.

	* random.h:
	(random_u16) new function is implemented.

	* serve-control.c:
	SUPER_ACTION_PROB_CLEAR_VARIANTS, SUPER_ACTION_PROB_RANDOM_VARIANTS
	  are handled.

	* super_html_3.c:
	"random.h" is included;
	(super_html_variant_prob_op) function is implemented.

	* super-serve.c:
	"random.h" is included;
	SSERV_CMD_PROB_CLEAR_VARIANTS, SSERV_CMD_PROB_RANDOM_VARIANTS
	  are handled;
	(main) `random_init' is called.

	* random.c:
	(random_u16) new function is implemented.

2006-10-29 (r3589) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h, new_server_proto.h: progress...

	* runlog.h:
	(run_virtual_start) `ssl_flag' parameter is added;
	(run_virtual_stop) the same.

	* super_actions.h:
	  `SUPER_ACTION_PROB_CLEAR_VARIANTS',
	  `SUPER_ACTION_PROB_RANDOM_VARIANTS' actions are added.

	* clarlog.c:
	(clar_open) code, that fixes invalid clarlogs is added.

	* new_server_html.c, new_server_proto.c, new_server_tables.c: progress..

	* runlog.c:
	(run_virtual_start) `ssl_flag' parameter is added;
	(run_virtual_stop) the same.

	* serve.c:
	(cmd_command_0) use of `run_virtual_start', `run_virtual_stop'
	  is updated.

	* super_html_3.c:
	(super_html_edit_variants) "Clear variants" and "Random variants"
	  buttons are added.

2006-10-26 (r3577) Alexander Chernov  <cher@ejudge.ru>

	* html.h, master_html.c:
	(write_xml_testing_report) `class1', `class2' parameters are added.

	* html.c:
	(new_write_user_report_view) call of `write_xml_testing_report'
	  is updated.

2006-10-26 (r3573) Alexander Chernov  <cher@ejudge.ru>

	* html.h, html.c, master_html.c:
	(do_write_kirov_standings) `only_table_flag', `cur_time' parameters
	  are added;
	(do_write_moscow_standings) the same as above;
	(do_write_standings) the same as above.

2006-10-25 (r3569) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(html_write_user_problems_summary) `table_class' parameter is added;
	(new_write_user_runs) the same as above;
	(new_write_user_clars) the same as above.

	* new-server.h: the unprivileged main page is reworked.

	* html.c:
	(html_write_user_problems_summary) `table_class' parameter is added;
	(new_write_user_runs) the same as above;
	(new_write_user_clars) the same as above.

	* new_server_html.c: the unprivileged main page is reworked.

2006-10-22 (r3556) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	(clar_add_record_new) new parameter `appeal_flag' is added.

	* new_server_proto.h, new-server.h:
	appeals are supported.

	* clarlog.c:
	(clar_add_record_new) `appeal_flag' is handled.

	* new_server_html.c, new_server_tables.h:
	appeals are supported.

2006-10-22 (r3555) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `appeal_deadline', `appeal_deadline_d'
	  fields are added.

	* super_actions.h, super_proto.h:
	editing of the new `appeal_deadline' global configuration variable
	  is supported.

	* prepare.c, prepare_out.c:
	`appeal_deadline' global configuration variable is handled.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of the new `appeal_deadline' global configuration variable
	  is supported.

2006-10-22 (r3551) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `userlist_clnt/recover_passwd_2.c' added.

	* userlist_clnt.h:
	(userlist_clnt_recover_passwd_2) new function prototype.

	* userlist_proto.h:
	`ULS_RECOVER_PASSWORD_2' command is added;
	`ULS_NEW_PASSWORD' reply is added;
	(userlist_pk_new_password) structure is added.

	* new_server_html.c: password recovery is basically completed.

	* userlist-server.c:
	(cmd_recover_password_2) new function.

2006-10-22 (r3546) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: progress...

	* uldb_plugin.h:
	(struct uldb_plugin_iface::new_cookie) `recovery' parameter is added.

	* userlist.h:
	(struct userlist_cookie) `recovery' field is added.

	* userlist_clnt.h:
	(userlist_clnt_register_new) `cmd', `action', `self_url' parameters
	  are added.

	* userlist_proto.h:
	(struct userlist_pk_register_new) `action', `self_url_length'
	  fields are added.

	* new_server_html.c: password recovery is partially implemented,
	  HTML output changes.

	* new_server_tables.c: progress...

	* register.c:
	(action_register_new_user) call of `userlist_clnt_register_new'
	  is updated.

	* uldb_plugin_xml.c:
	(new_cookie_func) `recovery' parameter is added.

	* userlist-server.c:
	(cmd_recover_password_1) new function;
	(cmd_do_login) call of `new_cookie' is updated;
	(cmd_team_login) the same;
	(cmd_check_user) the same;
	(cmd_priv_login) the same.

	* userlist_xml.c:
	support for "recovery" attribute of <cookie> element is added.

2006-10-21 (r3541) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `enable_forgot_password' field is added.

	* super_actions.h:
	action for editing `enable_forgot_password' field is added.

	* super_proto.h:
	command for editing `enable_forgot_password' field is added.

	* contests.c:
	`enable_forgot_password' field is added.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	editing of `enable_forgot_password' field is supported.

2006-10-19 (r3537) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/copy_user_info.c' is added.

	* uldb_plugin.h:
	(struct uldb_plugin_iface) `copy_user_info' field is added.

	* userlist_clnt.h:
	(userlist_clnt_copy_user_info) function prototype is added.

	* userlist_proto.h:
	`ULS_COPY_USER_INFO' is added.

	* edit-userlist.c:
	(display_registered_users) `copy_user_info' command ('o') is added.

	* uldb_plugin_xml.c:
	(copy_user_info_func) an initial version is implemented.

	* userlist-server.c:
	(cmd_copy_user_info) new function is added.

2006-10-19 (r3533) lasvik

	* new_server_html.c:
	lasvik: style fix

2006-10-19 (r3532) lasvik

	* new_server_html.c:
	lasvik: style fix

2006-10-17 (r3528) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `userlist_clnt/get_database.c' is added.

	* userlist_proto.h:
	ULS_GET_DATABASE command added;
	ULS_TEXT_DATA reply added.

	* userlist_clnt.h:
	(userlist_clnt_get_database) function prototype is added.

	* new-server.h:
	`NEW_SRV_ACTION_VIEW_USER_DUMP' is added.

	* userlist-server.c:
	(do_get_database) function is implemented.

	* new_server_html.c: dumping CVS user database implemented.

2006-10-15 (r3525) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	two new standard checkers added: `cmp_sexpr', `cmp_yesno'.

2006-10-15 (r3524) Alexander Chernov  <cher@ejudge.ru>

	* files.make: copyright notice is updated;
	new files added: `eq_sexpr.c', `read_sexpr.c', `cmp_sexpr.c',
	  `cmp_yesno.c'.

	* checker_internal.h: copyright notice is updated;
	types for S-expressions added;
	(checker_read_sexpr) new function prototype;
	(checker_eq_sexpr) new function prototype.

	* cmp_sexpr.c, read_sexpr.c, eq_sexpr.c, cmp_yesno.c:
	initial revision.

2006-10-13 (r3520) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: progress...

	* new_server_html.cm new_server_html_2.c, new_server_tables.c:
	  progress...

	* userlist_xml.c:
	(userlist_real_unparse_user)
	  `cnts_read_only' attribute always unparsed;
	  `cnts_last_login' attribute unparsed in STAND mode.

2006-10-13 (r3516) Alexander Chernov  <cher@ejudge.ru>

	* userlist_xml.c:
	(userlist_real_unparse_user) passwords are unparset in STAND mode.

2006-10-13 (r3514) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/clear_team_passwords.c' renamed to
	  `userlist_clnt/cnts_passwd_op.c'.

	* new_server.h, new_server_proto.h: progress.

	* serve_state.h:
	(serve_reset_contest) function prototype is added.

	* userlist_clnt.h:
	(userlist_clnt_cnts_passwd_op) renamed from
	  `userlist_clnt_clear_team_passwords';
	  `cmd' parameter is added.

	* userlist_proto.h:
	commands ULS_GENERATE_TEAM_PASSWORDS_2, ULS_GENERATE_PASSWORDS_2 added.

	* master.c:
	(do_clear_team_passwords) `userlist_clnt_cnts_passwd_op' is called
	  instead of `userlist_clnt_clear_team_passwords'.

	* new_server_html.c, new_server_proto.c, new_server_html_2.c, new_server_tables.c:
	  progress.

	* serve.c:
	(cmd_priv_command_0) contest reset code moved to `serve_2.c'.

	* serve_2.c:
	(serve_reset_contest) code moved from `serve.c'.

	* userlist-server.c:
	(cmd_generate_register_passwords_2) new function to handle
	  `ULS_GENERATE_PASSWORDS_2' request;
	(cmd_generate_team_passwords_2) new function to handle
	  `ULS_GENERATE_TEAM_PASSWORDS_2' request.

2006-10-12 (r3508) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(new_serve_write_audit_log) prototype is added.

	* master.c, team.c, serve-control.c:
	(make_self_url) "HTTPS" environment variable is supported.

	* new_server_html.c:
	(priv_view_audit_log) implemented;
	(new_server_handle_http_request) "HTTPS" environment variable is
	  supported.

	* new_server_html_2.c:
	<sys/types.h>, <sys/stat.h> is included;
	(new_serve_write_audit_log) copied from `master_html.c'.

	* register.c, users.c:
	(initialize) "HTTPS" environment variable is supported.

2006-10-08 (r3498) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_testing_report) `actions_vector' parameter is added.

	* new-server.h: progress.

	* html.c:
	(new_write_user_report_view) use of `write_xml_testing_report' updated.

	* master_html.c:
	(write_xml_testing_report) `actions_vector' parameter is added.

	* new_server_html.c, new_server_html_2.c: progress.

2006-10-07 (r3495) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	unprivileged printing is implemented.

2006-10-05 (r3492) Alexander Chernov  <cher@ejudge.ru>

	* ejudge_cfg.h: copyright notice is updated;
	(struct ejudge_cfg) `compile_servers' field is added.

	* super-serve.h:
	(struct sid_state) `compile_home_dir' field is added.

	* compile.c:
	(main) support for `-i' command line option (initialize mode)
	  is added.

	* ejudge-setup.c:
	(generate_compile_cfg) `mcs' and `mbas' are disabled for now;
	(generate_ejudge_xml) `CONTROL_CONTEST' global capability is added;
	(generate_install_script) initialiation run for `compile' is added.

	* ejudge_cfg.c: copyright notice is updated;
	support for <compile_servers> element is added.

	* super-serve.c:
	(super_serve_clear_edited_contest) `compile_home_dir' field is freed.

	* super_html_3.c:
	(load_cs_languages) `compile_home_dir' field is used which allows
	  variable compilation servers to be used;
	(unparse_serve_cfg) `compile_home_dir' is used;
	(super_html_read_serve) the compile server home dir is recovered
	  from `compile_dir' global variable.

2006-10-05 (r3490) Alexander Chernov  <cher@ejudge.ru>

	* interrupt.h: copyright notice is updated;
	(interrupt_restart_requested) new function prototype.

	* new_server_html.c:
	"diff.h" is included;
	"Compare runs" command work.

	* new_server_html_2.c:
	(new_serve_write_priv_all_runs) 64-bit compatibility bug is fixed.

	* run.c:
	SIGHUP is handled properly: causes the program to restart;
	the QUIT packet is handled in unmanaged mode as well: causes restart;
	(do_loop) see above;
	(set_self_args) new function to fill up the program args for restart;
	(main) `set_self_args' is called;
	  restart is performed using `execv'.

	* serve_2.c:
	(serve_rejudge_by_mask) 64-bit compatibility bug is fixed.

2006-10-05 (r3487) Alexander Chernov  <cher@ejudge.ru>

	* mischtml.h:
	(html_hyperref) __attribute__ is added;
	(html_hidden) the same;
	(html_input_text) the same.

	* html_input_text.c:
	(html_input_text) protection against `format' == NULL is added;
	  a bug is fixed.

	* html_hidden.c:
	(html_hidden) protection against `format' == NULL is added.

	* html_hyperref.c: copyright notice is updated;
	(html_hyperref) `format' parameter now has type `const char *'.

	* new_server_html.c:
	(parse_run_mask) bug fixed.

	* new_server_html_2.c:
	(new_serve_write_priv_source) minor changes.

	* super_html.c, super_html_2.c, super_html_3.c:
	use of `html_hyperref' slightly changed (0 is passed instead of ""
	  to suppress gcc's warnings).

2006-10-04 (r3485) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: new actions added.

	* serve_state.h:
	(serve_rejudge_by_mask) function prototype is added;
	(serve_rejudge_problem) the same;
	(serve_judge_suspended) the same;
	(serve_rejudge_all) the same.

	* new_server_html.c, new_server_html_2.c: progress.

	* serve.c:
	(do_rejudge_all) moved to `serve_2.c';
	(do_judge_suspended) the same as above;
	(do_rejudge_problem) the same as above;
	(do_rejudge_by_mask) the same as above.

	* serve_2.c:
	(serve_rejudge_by_mask) moved here from `serve.c';
	(serve_rejudge_problem) moved here from `serve.c';
	(serve_judge_suspended) moved here from `serve.c';
	(serve_rejudge_all) the same as above.

2006-10-02 (r3477) Alexander Chernov  <cher@ejudge.ru>

	* super_html.c:
	(get_serve_management_status) support for `new managed' state is added;
	(super_html_main_page) `new managed' state is reported,
	  `master' and `judge' URLs points to `new-master' and `new-judge'
	  programs;
	(super_html_contest_page) the same as above.

2006-10-01 (r3475) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_send_run_quit) prototype is added.

	* serve.c:
	(send_run_quit_command) function moved to `serve_2.c';
	(cmd_priv_command_0) use of `serve_send_run_quit' updated.

	* serve_2.c:
	(serve_send_run_quit) function moved here from `serve.c'.

2006-10-01 (r3473) Alexander Chernov  <cher@ejudge.ru>

	* testinfo.h: copyright notice is updated.
	(struct testinfo_struct) fields `exit_code', `check_stderr' are added.

	* new_server_html.c, new_server_html_2.c: progress.

	* run.c:
	(run_tests) testinfo's new fields `check_stderr' and `exit_code'
	  are supported.

	* testinfo.c: copyright notice is updated;
	`check_stderr', `exit_code' fields are supported.

2006-10-01 (r3468) Alexander Chernov  <cher@ejudge.ru>

	* new-client.c:
	<unistd.h> is included;
	(main) 10-second retry period before error reporting upon
	  connection is added.

	* new_server_html.c:
	(unprivileged_page_login_page) "Registration" link is implemented.

	* register.c:
	(display_register_new_user_page) a link to the participation page
	  is added.

2006-09-30 (r3467) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `alternatives_file' field is added.

	* serve_state.h:
	(struct problem_extra_info) new fields `alt', `v_alts' are added.

	* super_actions.h:
	new actions for editing `alternatives_file' problem configuration
	  variable are added.

	* super_proto.h:
	new commands for editing `alternatives_file' problem configuration
	  variable are added.

	* new_server_html.c:
	support for `alternatives_file' is partially implemented.

	* prepare.c, prepare_out.c:
	support for `alternatives_file' problem configuration variable is
	  added.

	* serve_state.c:
	handling of `v_alts', `alt' problem extra fields is implemented.

	* super-serve.c, super_html_3.c, serve-control.c:
	support for editing `alternatives_file' problem configuration variable
	  is implemented.

2006-09-30 (r3465) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	support for `region' userlist field is added.

	* userlist.h:
	(struct userlist_user_info) `region' field is added.

	* edit-userlist.c:
	editing of `region' field is supported.

	* contests.c:
	support for `region' userlist field is added.

	* new_server_html.c:
	(user_main_page) send clar dialog is not shown before contest start.

	* sformat.c: copying notice is updated;
	support for `region' field is added.

	* super_html.c:
	support for `region' field is added.

	* register.c:
	support for editing `region' field is added;
	support for limiting allowed regions using `allowed_regions' added;
	(parse_allowed_list) renamed from `parse_allowed_languages';
	(initialize) call of `parse_allowed_list' is updated;
	(map_user_languages) call of `parse_allowed_list' is updated;
	(display_edit_registration_data_page) support for editing `regions'
	  is added;
	  html_armor_buffer functions are used instead of
	  html_armor_string_dup.

	* uldb_plugin_xml.c:
	(set_user_xml_func) support for `region' field is added.

	* userlist.c, userlist_xml.c:
	support for `region' field is added.

	* userlist-server.c:
	support for `region' field is implemented.

2006-09-30 (r3463) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c:
	(cmd_register_new) support for `login_template_options' is added;
	(cmd_register_new_2) the same as above.

2006-09-30 (r3461) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) fields `login_template_options',
	  `allowed_regions' are added.

	* super_actions.h:
	actions for editing `allowed_regions' and `login_template_options'
	  contest configuration elements are added.

	* super_proto.h:
	commands for editing `allowed_regions' and `login_template_options'
	  contest configuration elements are added.

	* contests.c:
	elements <allowed_regions>, <login_template_options> are added.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	editing of `allowed_regions' and `login_template_options' is supported.

2006-09-29 (r3459) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	(struct clar_entry_v1) `in_reply_to' field is added;
	(clar_add_record_new) `in_reply_to' parameter is added.

	* new-server.h: progress.

	* clarlog.c:
	(clar_add_record_new) `in_reply_to' parameter is added.

	* contests.c:
	(contests_merge) multiple bugs fixed.

	* new_server_html.c, new_server_html_2.c: progress.

2006-09-29 (r3455) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	(struct clar_entry_v1) `locale_id' field is added;
	(clar_add_record_new) `locale_id' parameter is added.

	* misctext.h:
	(struct html_armor_buffer) new structure for armoring buffering;
	(html_armor_init) new function prototype;
	(html_armor_buf) new function prototype;
	(html_armor_free) new function prototype.

	* new_server_html.c, new_server_html_2.c: progress.

	* clarlog.c:
	(clar_add_record_new) `locale_id' parameter is added.

	* contests.c:
	(contests_merge) new function that copies one contest
	  into another;
	(contests_load) proper memory freeing is implemented.

	* misctext.c:
	(html_armor_init) new function;
	(html_armor_buf) new function;
	(html_armor_free) new function.

2006-09-29 (r3453) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h:
	(struct http_request_info) fields `id', `fw_state' are added;
	(new_server_html_err_internal_error) `state', `p' parameters are
	  removed, __attribute__ specification is added;
	(new_serve_header) attribute specification is added.

	* new-server.c:
	(cmd_http_request) `id' and `state' fields are initialized;
	  use of `new_server_html_err_internal_error' is updated.

	* new_server_html.c: progress.

	* uldb_plugin_xml.c:
	(remove_member_func) clearing of `copied_from' is commented.

2006-09-28 (r3451) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h: progress.

	* serve_state.h:
	(serve_state_destroy) `ul_conn' parameter is added.

	* new_server_html.c, new_server_html_2.c: progress.

	* serve_state.c:
	(serve_state_destroy) `ul_conn' parameter is added to deregister
	  the contest from the `userlist-server' notification list;
	(serve_state_load_contest) use of `serve_state_destroy' is updated.

	* super_html_3.c:
	(super_html_print_problem) minor output formatting change.

2006-09-28 (r3449) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html.c:
	(new_serve_submit_button) IE bug workaround.

2006-09-28 (r3447) Alexander Chernov  <cher@ejudge.ru>

	* userlist_xml.c:
	memory leak is fixed: `phone' field is freed.

2006-09-28 (r3445) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) fields `manual_checking',
	  `examinator_num', `check_presentation' are added.

	* super_actions.h:
	actions for editing `manual_checking', `examinator_num',
	  `check_presentation' problem configuration variables are added.

	* super_proto.h:
	commands for editing `manual_checking', `examinator_num',
	  `check_presentation' problem configuration variables are added.

	* prepare.c, prepare_out.c:
	support for `manual_checking', `examinator_num', `check_presentation'
	  problem configuration variables is supported.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of `manual_checking', `examinator_num', `check_presentation'
	  problem configuration variables is supported.

2006-09-28 (r3444) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c, master_html.c, new_server_html.c, prepare.h, html.c, new_server_html_2.c, serve.c, serve_state.c, super_html_3.c, prepare_out.c, serve_2.c:
	`struct section_global_data' virtual field is renamed to is_virtual.

2006-09-28 (r3442) Alexander Chernov  <cher@ejudge.ru>

	* mime_type.h:
	`MIME_TYPE_IMAGE_FIRST', `MIME_TYPE_IMAGE_LAST' are added.

	* new-server.h: progress.

	* html.c:
	(write_xml_team_testing_report) memory leak is fixed;
	(write_xml_team_output_only_acc_report) memory leak is fixed;
	(write_xml_team_accepting_report) memory leak is fixed.

	* master_html.c:
	(write_xml_testing_report) memory leak is fixed.

	* new_server_html.c, new_server_html_2.c: progress.

	* serve_2.c:
	(serve_run_request) memory leak is fixed;
	(serve_read_run_packet) memory leak is fixed.

	* super_html.c:
	(super_html_edit_contest_page) `managed' and `new_managed' are made
	  mutually exclusive.

2006-09-25 (r3434) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`html_input_text.c' is added.

	* html.h:
	(write_priv_source) `accepting_mode' parameter is removed.

	* mischtml.h:
	(html_input_text) new function prototype.

	* misctext.h: copyright notice is updated;
	(unparse_sha1) new function prototype.

	* new-server.h:
	many new action codes are added;
	(struct http_request_info) `caps' field is added;
	(new_serve_aref) new function prototype;
	(new_serve_write_priv_source) new function prototype;
	(new_serve_header) new function prototype;
	(new_serve_unparse_role) new function prototype.

	* runlog.h:
	(run_unparse_ip) function is removed;
	(run_parse_ip) function is removed.

	* html_input_text.c: initial revision.

	* master_html.c:
	`xml_unparse_ip' is used instead of `run_unparse_ip'.

	* misctext.c:
	(unparse_sha1) new function is added.

	* new_server_html.c, new_server_html_2.c: progress.

	* printing.c:
	"xml_utils.h" is included;
	(print_banner_page) `xml_unparse_ip' is called instead of
	  `run_unparse_ip'.

	* serve.c:
	(cmd_view) use of `write_priv_source' is updated;
	(cmd_message) `xml_unparse_ip' is used instead of `run_unparse_ip';
	(cmd_team_submit_clar) the same as above.

	* runlog.c:
	"xml_utils.h" is included;
	(run_read_entry_v0) `xml_parse_ip' is used instead of `run_parse_ip';
	(run_unparse_ip) function is removed;
	(run_parse_ip) function is removed.

	* runlog_xml.c:
	(unparse_sha1) function is removed;
	(unparse_runlog_xml) `xml_unparse_ip' is used instead of
	  `run_unparse_ip'.

2006-09-24 (r3431) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_open) `init_finish_time' parameter is added;
	(run_get_times) `p_finish_time' parameter is added;
	(run_set_finish_time) new function prototype;
	(run_get_finish_time) new function prototype;
	(run_reset) `new_finish_time' parameter is added;
	(struct run_header) `finish_time' field is added.

	* server_framework.h:
	(struct server_framework_params) `post_select' field is added.

	* serve_state.h:
	(struct serve_state) `contest_start_time', `contest_stop_time',
	  `contest_duration', `contest_sched_time' fields are removed.

	* new-server.h:
	(new_server_post_select_callback) new function prototype.

	* server_framework.c:
	`post_select' callback function is called after `select'.

	* new-server.c:
	`new_server_post_select_callback' function is added to params
	  structure.

	* serve_state.c:
	(serve_state_load_contest) use of `run_open' is added.

	* clean-users.c:
	(main) use of `run_open' is updated.

	* serve_state_2.c:
	(serve_update_standings_file) use of `run_get_times' is updated;
	(serve_update_public_log_file) the same as above;
	(serve_update_status_file) the same as above.

	* serve.c:
	`run_get_times' function call is used instead of using
	`contest_start_time', etc, fields of the serve_state_t.

	* runlog.c:
	(read_runlog) new parameter `init_finish_time' is added;
	(run_open) new parameter `init_finish_time' is added;
	(run_set_finish_time) new function;
	(run_get_finish_time) new function;
	(run_get_times) new parameter `p_finish_time' is added;
	(run_reset) `new_finish_time' parameter is added.

2006-09-24 (r3427) Alexander Chernov  <cher@ejudge.ru>

	* new_server_html_2.c:
	`teamdb_get_name_2' is used instead of `teamdb_get_name';
	(new_serve_write_priv_all_runs) lang_id == 0 is supported.

2006-09-24 (r3425) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h:
	(teamdb_get_name_2) new function prototype.

	* teamdb.c:
	(teamdb_get_name_2) new function is added.

	* html.c:
	`teamdb_get_name_2' is used instead of `teamdb_get_name' on some
	  occasions.

	* master_html.c:
	`teamdb_get_name_2' is used instead of `teamdb_get_name' on some
	  occasions;
	(write_priv_all_runs) language 0 is handled.

2006-09-24 (r3423) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `disable_name' field is added.

	* super_actions.h:
	action for editing `disable_name' contest attribute is added.

	* super_proto.h:
	action for editing `disable_name' contest attribute is added.

	* contests.c:
	`disable_name' attribute is supported.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	editing of the `disable_name' contest attribute is supported.

	* register.c:
	`disable_name' contest attribute is supported.

2006-09-23 (r3419) Alexander Chernov  <cher@ejudge.ru>

	* mime_type.c:
	(mime_type_guess) bug is fixed.

2006-09-23 (r3413) Alexander Chernov  <cher@ejudge.ru>

	* uldb_plugin_xml.c:
	(user_contest_iterator_has_next_func) bug is fixed.

2006-09-23 (r3409) Alexander Chernov  <cher@ejudge.ru>

	* register.c:
	(display_login_page) `force_registration' contest attribute is
	  supported;
	(action_change_lang_at_initial) the same as above;
	(action_login) the same as above.

2006-09-23 (r3408) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `force_registration' field is added.

	* super_actions.h:
	action for editing "force_registration" contest attribute is added.

	* super_proto.h:
	command for editing "force_registration" contest attribute is added.

	* userlist-server.c: some support for forced registrations is added.

	* contests.c:
	attribute "force_registration" is supported.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	editing of the "force_registration" contest attribute is supported.

2006-09-23 (r3406) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `login_template' field is added.

	* super_actions.h:
	actions for editing `login_template' contest element are added.

	* super_proto.h:
	commands for editing `login_template' contest element are added.

	* userlist-server.c:
	(cmd_register_new_2) `login_template', `assign_logins' contest
	  description options are supported;
	(cmd_register_new) the same as above.

	* contests.c:
	support for <login_template> element is added.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	  editing of the `login_template' contest element is supported.

	* register.c:
	(action_register_new_user) `assign_logins' contest option is
	  supported.

2006-09-23 (r3404) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `assign_logins' field is added.

	* super_proto.h:
	command for editing of the `assign_logins' contest attribute is added.

	* super_actions.h:
	action for editing of the `assign_logins' contest attribute is added.

	* contests.c: `assign_logins' contest attribute is added.

	* register.c:
	(display_register_new_user_page) `assign_logins' contest attribute
	  is supported.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	  editing of `assign_logins' contest attribute is supported.

2006-09-23 (r3402) Alexander Chernov  <cher@ejudge.ru>

	* super_html_3.c:
	(super_html_check_tests) incorrect setting of g_checker_path fixed.

2006-09-22 (r3396) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(serve_invoke_start_script) new function prototype.

	* serve_2.c:
	<reuse/exec.h> is included;
	(serve_invoke_start_script) function moved here from `serve.c'.

	* serve.c:
	(do_start_cmd) function moved to `serve_2.c' (see above).

2006-09-22 (r3394) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.c:
	(serve_state_destroy) null pointer exception fixed.

2006-09-22 (r3392) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.c:
	(struct teamdb_state) `callbacks' is not a const pointer any more;
	(teamdb_set_callbacks) a heap copy of the passed callbacks structure
	  is created;
	(teamdb_destroy) `callbacks' field is freed.

2006-09-22 (r3390) Alexander Chernov  <cher@ejudge.ru>

	* serve.c:
	(cmd_view) use of `new_write_user_report_view' is updated.

	* html.c:
	(write_xml_team_output_only_acc_report) new function;
	(write_xml_team_accepting_report) `action_vec' parameter is added;
	  the abovementioned function is called for output-only problems;
	(new_write_user_report_view) `action_vec' is added.

	* html.h:
	(new_write_user_report_view) `action_vec' parameter is added;
	(write_xml_team_accepting_report) `action_vec' parameter is added.

2006-09-22 (r3389) Alexander Chernov  <cher@ejudge.ru>

	* contests.h:
	(struct contest_desc) `new_managed' field is added.

	* super_proto.h:
	commands for editing `new_managed' contest field are added.

	* super_actions.h:
	actions for editing `new_managed' contest field are added.

	* super-serve.c, super_html_2.c, super_html.c, serve-control.c:
	  editing of the `new_managed' contest field is supported.

	* contests.c: `new_managed' field is added.

2006-09-21 (r3385) Alexander Chernov  <cher@ejudge.ru>

	* l10n.c:
	(l10n_setlocale) invalid use of `putenv' is fixed.

	* clarlog.h:
	(struct clar_entry_v1) moved here from `clarlog.c';
	(clar_get_record_new) new function prototype is added.

	* teamdb.c:
	(teamdb_refresh) memory leak is fixed.

	* prepare.c:
	(prepare_problem_free_func) memory leak is fixed.

	* contests.c:
	(contests_set_directory) memory leak is fixed.

	* clarlog.c:
	(struct clar_entry_v1) moved to `clarlog.h';
	(clar_get_record_new) new function.

2006-09-21 (r3383) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_xml_team_accepting_report) prototype is added.

	* serve_2.c:
	(serve_rejudge_run) rejudging of the output-only problems is supported.

2006-09-21 (r3380) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(prepare_serve_defaults) `p_cnts' parameter is added.

	* clarlog.h:
	(clar_add_record_new) new function prototype.

	* run_packet.h: copyright notice is updated.

	* runlog.h:
	(run_write_xml) `serve_state' and `cnts' parameters are added;
	(unparse_runlog_xml) `cnts' parameter is added.

	* html.h:
	(write_standings) `cnts' parameter is added;
	(write_public_log) the same;
	(new_write_user_clar) `cnts' parameter is added;
	(write_team_page) the same;
	(write_standings_header) `cnts' parameter is added;
	(write_priv_standings) `cnts' parameter is added;
	(do_write_kirov_standings) `cnts' parameter is added;
	(do_write_moscow_standings) `cnts' parameter is added;
	(do_write_standings) `cnts' parameter is added;
	(write_virtual_standings) the same.
	(write_raw_standings) `cnts' parameter is added.

	* server_framework.h:
	(struct server_framework_params) `select_timeout' field is added;
	  `loop_start' function callback is added.

	* serve_state.h:
	(struct serve_state) `cur_contest' field is removed;
	(serve_update_standings_file) `cnts' parameter is added;
	(serve_update_public_log_file) `cnts' parameter is added;
	(serve_update_external_xml_log) `cnts' parameter is added;
	(serve_update_internal_xml_log) `cnts' parameter is added;
	(serve_check_clar_quota) function name spelling is fixed;
	(serve_check_cnts_caps) `cnts' parameter is added;
	(serve_get_cnts_caps) the same as above;
	(serve_check_stat_generation) the same as above;
	(serve_run_request) new function prototype;
	(serve_is_valid_status) new function prototype;
	(serve_send_clar_notify_email) new function prototype;
	(serve_send_check_failed_email) new function prototype;
	(serve_rejudge_run) new function prototype;
	(serve_read_compile_packet) new function prototype;
	(serve_read_run_packet) new function prototype.

	* new-server.h:
	new action NEW_SRV_ACTION_LOGOUT;
	(new_server_remove_session) new function prototype;
	(new_server_unload_contests) new function prototype;
	(new_server_loop_callback) new function prototype.

	* clarlog.c:
	CLAR_ENTRY_SUBJ_SIZE the constant for the maximum subject size;
	(struct clar_entry_v1) `ssl_flag' field is added;
	(clar_add_record_new) new function, which supports all new
	  fields in the `struct clar_entry_v1'.

	* prepare_serve.c:
	(prepare_serve_defaults) `p_cnts' parameter is added, `cur_contest'
	  field usage is removed.

	* html.c:
	(new_write_user_runs) lang_id == 0 case is handled;
	(new_write_user_clar) `cnts' parameter is added;
	(write_standings_header) `cnts' parameter is added;
	(do_write_kirov_standings) `cnts' parameter is added;
	(do_write_moscow_standings) `cnts' parameter is added;
	(do_write_standings) `cnts' parameter is added;
	(write_standings) `cnts' parameter is added;
	(do_write_public_log) `cnts' parameter is added;
	(write_public_log) the same;
	(write_team_page) the same;
	(write_virtual_standings) the same.

	* master_html.c:
	(write_priv_standings) `cnts' parameter is added;
	  use of `do_write_kirov_standings' is updated;
	  use of `do_write_moscow_standings' is updated;
	  use of `do_write_standings' is updated.
	(write_raw_standings) `cnts' parameter is added.

	* runlog_xml.c:
	(unparse_runlog_xml) `cnts' parameter is added.

	* serve_2.c:
	"run_packet.h", "userlist.h" are included;
	(serve_update_standings_file) `cnts' parameter is added;
	(serve_update_public_log_file) `cnts' parameter is added;
	(do_update_xml_log) `cnts' parameter is added;
	(serve_update_external_xml_log) `cnts' parameter is added;
	(serve_update_internal_xml_log) `cnts' parameter is added;
	(serve_check_clar_quota) spelling fixed;
	(serve_check_cnts_caps) `cnts' parameter is added;
	(serve_get_cnts_caps) `cnts' parameter is added;
	(generate_statistics_email) `cnts' parameter is added;
	(serve_check_stat_generation) `cnts' parameter is added;
	(serve_run_request) function moved here from `serve.c';
	(serve_send_clar_notify_email) the same as above;
	(serve_send_check_failed_email) the same as above;
	(serve_read_compile_packet) the same as above;
	(serve_is_valid_status) the same as above;
	(time_to_str) the same as above;
	(dur_to_str) the same as above;
	(serve_read_run_packet) the same as above;
	(serve_rejudge_run) the same as above.

	* serve.c:
	`cur_contest' static variable is added;
	use of `serve_get_cnts_caps', `serve_check_cnts_caps' updated;
	(is_valid_status) moved to `serve_2.c';
	(cmd_team_page) use of `write_team_page' is updated;
	(cmd_priv_standings) use of `write_priv_standings' is updated;
	(cmd_view) use of `run_write_xml' is updated;
	  use of `write_raw_standings' is updated;
	(cmd_team_show_item) use of `new_write_user_clar' is updated;
	  use of `write_virtual_standings' is updated;
	(cmd_team_submit_clar) `serve_check_clar_quota' spelling fixed;
	  `cur_contest' is used instead of `contests_get' call;
	(cmd_priv_command_0) use of `serve_update_standings_file' updated;
	(cmd_edit_run) use of `is_valid_status' is updated;
	  use of `rejudge_run' is updated;
	(cmd_new_run) use of `is_valid_status' is updated;
	(mail_check_failed) moved to `serve_2.c' as
	  `serve_send_check_failed_email';
	(read_compile_packet) moved to `serve_2.c';
	(time_to_str) moved to `serve_2.c';
	(dur_to_str) moved to `serve_2.c';
	(read_run_packet) moved to `serve_2.c';
	(rejudge_run) moved to `serve_2.c';
	(do_rejudge_all) use of `rejudge_run' is updated;
	(do_judge_suspended) the same as above;
	(do_rejudge_problem) the same as above;
	(do_rejudge_by_mask) the same as above;
	(do_loop) use of `serve_update_standings_file' is updated;
	  use of `serve_check_stat_generation' is updated;
	  use of `serve_update_public_log_file' is updated;
	  use of `serve_update_external_xml_log' is updated;
	  use of `serve_update_internal_xml_log' is updated;
	  use of `read_compile_packet' is updated;
	  use of `read_run_packet' is updated;
	(main) use of `prepare_serve_defaults' is updated;
	  use of `serve_check_stat_generation' is updated.

	* runlog.c:
	(run_write_xml) parameters `serve_state' and `cnts' are added;
	  use of `unparse_runlog_xml' is updated;
	(runlog_check) allowed lang_id == 0.

	* server_framework.c:
	(nsf_main_loop) `loop_start' callback function is supported;
	  the select time-out may be configured.

	* serve_state.c:
	(serve_state_destroy) check for `prob_extras' being NULL is added;
	(serve_state_load_contest) `p_cnts' parameter is added;
	  use of `prepare_serve_defaults' is updated.

	* new-server.c:
	framework parameters are updated;
	(main) `new_server_unload_contests' is called.

2006-09-18 (r3378) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_state) `compile_request_id' field is added;
	(struct compile_run_extra) moved here from `serve.c';
	(serve_audit_log) new function prototype;
	(serve_packet_name) new function prototype;
	(serve_compile_request) new function prototype.

	* serve_2.c:
	"xml_utils.h", "compile_packet.h", "curtime.h", <ctype.h>,
	  <sys/time.h> are included;
	(serve_audit_log) moved here from `serve.c';
	(b32_number) moved here from `serve.c';
	(serve_packet_name) moved here from `serve.c';
	(serve_compile_request) moved here from `serve.c'.

	* serve.c:
	(append_audit_log) moved to `serve_2.c' under the name
	  `serve_audit_log';
	(b32_number) moved to `serve_2.c';
	(generate_packet_name) moved to `serve_2.c' under the name
	  `serve_packet_name';
	(queue_compile_request) moved to `serve_2.c' under the name
	  `serve_compile_request';
	function calls are updated accordingly.

2006-09-18 (r3376) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(run_add_record) `ssl' parameter is added;
	(run_find_duplicate) new function prototype;
	(run_get_accepted_set) new function prototype;
	(struct run_entry) `ssl' field is added.

	* mime_type.h:
	<stdio.h> is included;
	(mime_type_get_type) function prototype is added;
	(mime_type_get_suffix) function prototype is added;
	(mime_type_parse) function prototype is added;
	(mime_type_guess) function prototype is added.

	* runlog.c:
	(run_add_record) `ssl' parameter is added;
	  language == 0 is allowed;
	(run_find_duplicate) new function, which searches for the run
	  which is a duplicate to specified parameters;
	(run_get_accepted_set) new function to return the set of
	  accepted problems for the given user.

	* serve.c:
	(move_files_to_insert_run) function moved to `serve_2.c';
	use of `run_add_record' is updated (ssl parameter is added);
	use of `move_files_to_insert_run' is updated (function renamed).

	* serve_2.c:
	"archive_paths.h" is included;
	(serve_move_files_to_insert_run) function moved here from `serve.c'.

	* new_server_html.c: progress...

2006-09-17 (r3375) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	new files added: html_hidden.c, new_server_html_2.c.

	* mischtml.h:
	(html_hidden) function prototype is added.

	* html.h:
	(write_change_status_dialog) new function prototype.

	* serve_state.h:
	(user_filter_info_allocate) new function prototype.

	* master_html.c:
	(write_change_status_dialog) the function is not "static"
	  any more;
	(allocate_user_info) moved to `serve_state.c' under the name
	  `user_filter_info_allocate'.

	* serve_state.c:
	(user_filter_info_allocate) new function, moved here from
	  `master_html.c'.

	* html_hidden.c, new_server_html_2.c: initial revision.

2006-09-17 (r3374) Alexander Chernov  <cher@ejudge.ru>

	* html.h:
	(write_master_page) `accepting_mode' parameter is removed;
	(write_priv_all_runs) `accepting_mode' parameter is removed.

	* serve.c:
	(cmd_master_page) calls of
	  `write_master_page', `write_priv_all_runs' are updated.

	* master_html.c:
	(write_change_status_dialog) `accepting_mode' parameter is removed;
	(write_priv_all_runs) `accepting_mode' parameter is removed;
	(write_master_page) `accepting_mode' parameter is removed.

2006-09-17 (r3373) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct serve_state) `olympiad_judging_mode' field is removed.

	* protocol.h: copyright notice is updated;
	(struct prot_serve_status_v2) `olympiad_judging_mode' is marked as
	  no longer used;
	  `accepting_mode' field is added.

	* new-server.h:
	`USER_ROLE_EXAMINER' is renamed from `USER_ROLE_JUDGE';
	`USER_ROLE_CHIEF_EXAMINER' is renamed from `USER_ROLE_CHIEF_JUDGE';
	`USER_ROLE_JUDGE' is added.

	* clntutil.h:
	`server_olympiad_judging_mode' is removed;
	`server_accepting_mode' is added.

	* master.c:
	(print_judging_mode_button) `judging_mode' parameter is renamed
	  to `accepting_mode';
	(main) `server_accepting_mode' is used instead of
	  `server_olympiad_judging_mode'.

	* serve_2.c, serve.c:
	`olympiad_judging_mode' is replaced with `accepting_mode'.

	* clntutil.c: copyright notice is updated;
	`server_olympiad_judging_mode' is removed;
	`server_accepting_mode' is added;
	 `server_accepting_mode' is used instead of
	  `server_olympiad_judging_mode'.

2006-09-16 (r3371) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_entry) `mime_type' field is added;
	(run_add_record) `mime_type' parameter is added.

	* serve.c:
	(cmd_priv_submit_run) use of `run_add_record' is updated;
	(do_submit_run) the same as above;
	(cmd_new_run) the same as above.

	* runlog.c:
	(run_add_record) `mime_type' parameter is added.

2006-09-16 (r3370) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `mime_type.[ch]' files are added.

	* mime_type.c, mime_type.h: initial revision.

2006-09-15 (r3368) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h: new problem types are added:
	  PROB_TYPE_TEXT_ANSWER, PROB_TYPE_SELECT_ONE, PROB_TYPE_SELECT_MANY;
	(struct section_problem_data) field `alternative' is added;
	(prepare_set_abstr_problem_defaults) renamed from
	  `prepare_set_problem_defaults';
	(prepare_set_concr_problem_defaults) new function.
	

	* prepare.c:
	`alternative' problem configuration variable is added;
	(parse_problem_type) problem type matching is case-insensitive;
	(prepare_set_abstr_problem_defaults) renamed from
	  `prepare_set_problem_defaults';
	  `type' configuration variable is properly handed;
	(prepare_set_concr_problem_defaults) new function.

	* prepare_out.c:
	(prepare_unparse_unhandled_prob) `alternative' variable is handled.

	* super_html_3.c:
	(super_html_print_problem) `type' configuration variable is
	  handled properly;
	(super_html_read_serve) `type' variable is properly parsed, when
	  config file is parsed.

2006-09-15 (r3366) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	(struct problem_extra_info) `v_stmts' field is added.

	* serve_state.c:
	(serve_state_destroy) new `v_stmts' field is freed;
	(serve_state_load_contest) new `v_stmts' field is initialized
	  for variant problems.

	* new_server_html.c: variant problems are supported
	  in problem selection dialog.

2006-09-15 (r3365) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data)
	`output_only' field is removed;
	`PREPARE_FIELD_PROB_OUTPUT_ONLY' is removed.

	* super_actions.h:
	`output_only' problem configuration variable is removed.

	* prepare.c:
	`output_only' problem configuration variable is removed;
	`output_only' in the configuration file is declared as alias
	  to `type_val'.

	* run.c, super-serve.c, prepare_out.c, serve.c, super_html_3.c, serve-control.c:
	`output_only' problem configuration variable is removed;
	`type_val' field is used instead of `output_only'.

2006-09-15 (r3364) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	enumerated type for problem types is added;
	(struct section_problem_data) new fields `type_val', `type'
	  are added;
	`PREPARE_FIELD_PROB_TYPE' constant is added;
	(prepare_unparse_problem_type) new function prototype.

	* super_proto.h:
	a command for changing the value of the `type' problem configuration
	  variable is added.

	* super_actions.h:
	an action for editing of the `type' problem configuration variable is
	  added.

	* prepare.c:
	`type' problem configuration variable is added;
	(parse_problem_type) new function;
	(prepare_unparse_problem_type) new function.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of the `type' problem configuration variable is supported.

	* prepare_out.c:
	(prepare_unparse_prob) `type' problem configuration variable is
	  unparsed.

2006-09-15 (r3362) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`watched_file.c', `watched_file.h' are added.

	* serve_state.h:
	"watched_file.h" is included;
	(struct problem_extra_info) new structure to store the extra
	  problem-related information;
	(struct serve_state) `prob_extras' field is added.

	* new-server.h:
	(struct session_info) `user_viewed_section' field is added.

	* html.h:
	(html_write_user_problems_summary) `no_output_flag' parameter is added.

	* html.c:
	(html_write_user_problems_summary) `no_output_flag' parameter is added.

	* serve_state.c:
	(serve_state_destroy) `prob_extras' is destroyed;
	(serve_state_load_contest) `prob_extras' is allocated.

	* new_server_html.c: progress...

	* watched_file.c, watched_file.h: initial revision.

2006-09-15 (r3361) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `statement_file' field is added;
	`PREPARE_FIELD_PROB_STATEMENT_FILE' is added.

	* super_proto.h:
	commands for editing of the `statement_file' problem configuration
	  variable are added.

	* super_actions.h:
	actions for editing of the `statement_file' problem configuration
	  variable are added.

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of the `statement_file' problem configuration variable is
	  supported.

	* prepare.c:
	`statement_file' problem configuration variable is added.

	* prepare_out.c:
	unparsing of `statement_file' problem configuration variable is
	  implemented.

2006-09-15 (r3360) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_global_data) `statement_dir' field is added.

	* super_proto.h:
	commands for editing of `statement_dir' global configuration variable
	  are added.

	* super_actions.h:
	actions for editing of `statement_dir' global configuration variable
	  are added.

	* prepare_dflt.h: copyright notice is updated;
	`DFLT_G_TEST_DIR' default value is "../tests";
	`DFLT_G_CORR_DIR' default value is "../tests";
	`DFLT_G_INFO_DIR' default value is "../tests";
	`DFLT_G_TGZ_DIR'  default value is "../tests";
	`DFLT_G_CHECKER_DIR' default value is "../checkers";
	`DFLT_G_STATEMENT_DIR' is added with the default value "../statements".

	* super-serve.c, super_html_3.c, serve-control.c:
	editing of `statement_dir' global configuration variable is supported.

	* ejudge-setup.c: copyright notice is updated;
	(generate_serve_cfg) initial value for `statement_dir' is generated.

	* prepare.c:
	`statement_dir' global configuration variable is added.

	* prepare_out.c:
	(prepare_unparse_global) `statement_dir' is unparsed.

2006-09-15 (r3359) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `require' field is added.

	* super_proto.h:
	commands for editing of `require' problem configuration variable are
	  added.

	* super_actions.h:
	action for editing of `require' problem configuration variable are
	  added.

	* html.h:
	(html_write_user_problems_summary) `accepted_flag' parameter is added.

	* super-serve.c:
	editing of `require' problem configuration variable is supported.

	* serve-control.c:
	editing of `require' problem configuration variable is supported.

	* prepare.c:
	`require' problem configuration variable is added.

	* prepare_out.c:
	(prepare_unparse_prob) `require' variable is handled.

	* super_html_3.c:
	editing of `require' problem configuration variable is supported.

	* html.c:
	(html_write_user_problems_summary) `accepted_flag' parameter is added.

2006-09-15 (r3358) Alexander Chernov  <cher@ejudge.ru>

	* prepare.h:
	(struct section_problem_data) `enable_language' field is added.

	* super_actions.h:
	actions for editing `enable_language' problem configuration variable
	  are added.

	* super_proto.h:
	commands for editing `enable_language' problem configuration variable
	  are added.

	* serve.c:
	(do_submit_run) `enable_language' variable is handled.

	* super-serve.c:
	commands for editing of `enable_language' field are handled.

	* serve-control.c:
	editing of `enable_language' problem configuration variable is
	  supported.

	* prepare.c:
	`enable_language' problem configuration variable is handled.

	* prepare-out.c: copyright notice is updated;
	(prepare_unparse_prob) `enable_language' variable is unparsed.

	* super_html_3.c:
	editing of `enable_language' problem configuration variable is
	  supported.

2006-09-14 (r3355) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	`userlist_clnt/team_set_passwd.c' is removed.

	* userlist_proto.h:
	new commands: ULS_PRIV_SET_REG_PASSWD, ULS_PRIV_SET_TEAM_PASSWD.

	* userlist_clnt.h:
	(userlist_clnt_set_passwd) `cmd', `contest_id' parameters are added;
	(userlist_clnt_team_set_passwd) function is removed.

	* html.h:
	(new_write_user_runs) `printing_suspended', `accepting_mode'
	  parameters are removed;
	  `action_view_source', `action_view_report', `action_print_run'
	  parameters are added;
	(new_write_user_clars) `action' parameter is added;
	(html_write_user_problems_summary) new function prototype.

	* serve_state.h:
	(struct serve_state) `accepting_mode' field is added;
	(serve_count_unread_clars) new function prototype is added.

	* userlist-server.c:
	(update_userlist_table) `cnts_id' <= 0 case is properly handled;
	(cmd_priv_set_passwd) new function to handle `ULS_PRIV_SET_REG_PASSWD',
	  `ULS_PRIV_SET_TEAM_PASSWD' requests.

	* register.c:
	(action_change_password) use of `userlist_clnt_set_passwd' is updated.

	* html.c:
	(html_write_user_problems_summary) renamed from
	  `write_user_problems_summary';
	  `accepting_mode' parameter is removed;
	(new_write_user_runs) `printing_suspended', `accepting_mode'
	  parameters are removed;
	  `action_view_source', `action_view_report', `action_print_run'
	  parameters are added;
	(serve_count_unread_clars) renamed from `count_unread_clars';
	(new_write_user_clars) `action' parameter is added;
	(write_team_page) `printing_suspended' parameter is removed.

	* teamdb.c:
	(teamdb_refresh) user data load is activated when `users' is not
	  set.

	* serve.c:
	(cmd_team_page) `accepting_mode' field of serve_state structure is set;
	  use of `write_team_page' is updated.

	* team.c:
	(action_change_password) use of `userlist_clnt_set_passwd' is updated;
	  `userlist_clnt_set_passwd' is used instead of
	  `userlist_clnt_team_set_passwd'.

2006-09-14 (r3352) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h, new-server.c, ejudge.ru_RU.KOI8-R.po, new-server.h, new_server_html.c:
	progres...

2006-09-13 (r3351) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	file `userlist_clnt/set_cookie.c' is added.

	* userlist_proto.h:
	new command `ULS_SET_COOKIE_LOCALE' is added.

	* userlist_clnt.h:
	(userlist_clnt_set_cookie) new function prototype.

	* userlist-server.c:
	(cmd_set_cookie) new function to handle `ULS_SET_COOKIE_LOCALE'
	  request.

	* clarlog.c:
	(clar_init) NULL value of `state' parameter is properly handled.

	* team_extra.c:
	(team_extra_init) NULL value of `state' parameter is properly handled.

	* runlog.c:
	(run_init) NULL value of `state' parameter is properly handled.

2006-09-11 (r3348) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `serve_2.c' is added.

	* ej_types.h:
	`ej_time64_t' is declared as `long long'.

	* serve_state.h:
	"opcaps.h" is included;
	(serve_update_standings_file) new function prototype;
	(serve_update_public_log_file) new function prototype;
	(serve_update_external_xml_log) new function prototype;
	(serve_update_internal_xml_log) new function prototype;
	(serve_update_status_file) new function prototype;
	(serve_load_status_file) new function prototype;
	(serve_check_user_quota) new function prototype;
	(serve_check_clar_qouta) new function prototype;
	(serve_check_cnts_caps) new function prototype;
	(serve_get_cnts_caps) new function prototype;
	(serve_build_compile_dirs) new function prototype;
	(serve_build_run_dirs) new function prototype;
	(serve_create_symlinks) new function prototype;
	(serve_get_email_sender) new function prototype;
	(serve_check_stat_generation) new function prototype.

	* serve.c:
	(update_standings_file) moved to `serve_2.c', with `serve_' prefix,
	  and first parameter - the serve state is added;
	(update_public_log_file) the same as above;
	(do_update_xml_log) the same as above;
	(update_external_xml_log) the same as above;
	(update_internal_xml_log) the same as above;
	(update_status_file) the same as above;
	(load_status_file) the same as above;
	(check_cnts_caps) the same as above;
	(get_cnts_caps) the same as above;
	(check_team_quota) the same as above;
	(check_clar_quota) the same as above;
	(get_email_sender) the same as above;
	(generate_statistics_email) the same as above;
	(check_stat_generation) the same as above;
	(create_symlinks) the same as above;
	(do_build_compile_dirs) the same as above;
	(build_compile_dirs) the same as above;
	(do_build_run_dirs) the same as above;
	(build_run_dirs) the same as above.

	* serve_2.c: initial revision.

2006-09-11 (r3346) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	new files added: userlist_clnt/bytes_available.c,
	  userlist_clnt/read_and_notify.c,
	  userlist_clnt/set_notification_callback.c,
	  serve_state.c.

	* team_extra.h:
	(team_extra_init) `team_extra_dir' parameter is removed;
	(team_extra_set_dir) new fuction.

	* serve_state.h:
	"ej_types.h" is included;
	(struct user_filter_info) structure moved here from `master_html.c';
	(struct user_state_info) the same as above;
	(serve_state_init) new function;
	(serve_state_destroy) new function.

	* userlist_clnt.h:
	(userlist_clnt_read_and_notify) new function;
	(userlist_clnt_bytes_available) new function;
	(userlist_clnt_set_notification_callback) new function.

	* team_extra.c:
	(team_extra_init) `team_extra_dir' parameter is removed;
	(team_extra_set_dir) new fuction.

	* serve.c:
	(main) use of `team_extra_init' is updated;
	  `team_extra_set_dir' is called.

	* master_html.c:
	(struct user_filter_info) structure moved to `serve_state.h';
	(struct user_state_info) the same as above.

	* serve_state.c: initial revision.

2006-09-10 (r3343) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	(struct run_entry) fields `run_id', `nsec', `user_id',
	  `prob_id', `lang_id' are now have signed type.

	* serve_state.h:
	<time.h> is included;
	(struct compile_dir_item) moved here from `serve.c';
	(struct run_dir_item) moved here from `serve.c';
	(struct serve_state) new fields added: `current_time',
	  `contest_start_time', `contest_sched_time', `contest_duration',
	  `contest_stop_time', `clients_suspended', `testing_suspended',
	  `printing_suspended', `olympiad_judging_mode',
	  `stat_last_check_time', `stat_reported_before', `stat_report_time',
	  `last_update_public_log', `last_update_external_xml_log',
	  `last_update_internal_xml_log', `last_update_status_file',
	  `compile_dirs', `compile_dirs_u', `compile_dirs_a',
	  `run_dirs', `run_dirs_u', `run_dirs_a'.

	* filter_eval.h:
	(struct filter_env) fields `langs', `probs', `rentries', `cur'
	  are now const pointer.

	* html.h:
	(calc_kirov_score) `pe', `pr' parameters are declared as "const"
	  pointers;
	(write_html_run_status) `pe' is declared as "const" pointer.

	* html.c:
	(calc_kirov_score) `pe', `pr' parameters are declared as "const"
	  pointers;
	(write_html_run_status) `pe' is declared as "const" pointer;
	(do_write_kirov_standings) `run_get_entries_ptr' is used instead of
	  `run_get_all_entries';
	(do_write_standings) `run_get_entries_ptr' is used instead of
	  `run_get_all_entries';
	(do_write_public_log) `run_get_entries_ptr' is used instead of
	  `run_get_all_entries'.

	* master_html.c:
	(print_raw_record) `pe' parameter is declared "const" pointer;
	(write_priv_all_runs) `run_get_entries_ptr' is used instead of
	  `run_get_all_entries'.

	* serve.c:
	static variables `current_time', `contest_start_time',
	  `contest_sched_time', `contest_duration', `contest_stop_time',
	  `clients_suspended', `testing_suspended', `printing_suspended',
	  `olympiad_judging_mode', `stat_reported_before',
	  `stat_report_time' are moved to the `struct serve_state';
	static variables `compile_dirs', `compile_dirs_a', `compile_dirs_u'
	  are moved to the `struct serve_state';
	static variables `run_dirs', `run_dirs_a', `run_dirs_u'
	  are moved to the `struct serve_state';
	(update_public_log_file) `last_update' static variable is moved
	  to `struct serve_state' as `last_update_public_log' field;
	(update_external_xml_log) `last_update' static variable is moved
	  to `struct serve_state' as `last_update_external_xml_log' field;
	(update_internal_xml_log) `last_update' static variable is moved
	  to `struct serve_state' as `last_update_internal_xml_log' field;
	(update_status_file) `prev_status_update' static variable is moved
	  to `struct serve_state' as `last_update_status_file' field;
	(check_stat_generation) `last_check_time' static variable is moved
	  to `struct serve_state' as `stat_last_check_time' field.

2006-09-10 (r3342) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	the data structures are changed for runlog version 2;
	(struct run_header) the structure size is 128 bytes;
	  `version' field is now byte;
	  `byte_order' field is added;
	  `start_time', `sched_time', `duration', `stop_time' are now 64-bit
	  integers;
	(struct run_entry)
	  `submission' field is renamed to `run_id';
	  `timestamp' field is renamed to `time', and is 64-bit integer now;
	  provisions for future support of IPv6 are added;
	  `team' field is renamed to `user_id';
	  `problem' field is renamed to `prob_id';
	  `language' field is renamed to `lang_id' and is 32-bit integer now;
	  `locale_id' is 16-bit signed integer now (instead of byte);
	  `test' is 32-bit signed integer (instead of byte);
	  `score_adj' field is 32-bit signed integer.

	* runlog.c:
	transition to the new runlog format;
	fields are renamed in all functions;
	current format version is increased to 2;
	(struct run_header_v1) structure for the previous runlog format;
	(struct run_entry_v1) structure for the previous runlog format;
	(run_read_record_v0) renamed from `run_read_record';
	(run_read_header_v0) renamed from `run_read_header';
	(run_read_entry_v0) renamed from `run_read_entry';
	(is_runlog_version_1) new function;
	(save_runlog_backup) parameter `suffix' is added;
	(read_runlog_version_1) new function;
	(run_open) reading of the version 1 data is supported.

	* clean-users.c, printing.c, filter_eval.c, serve.c, runlog_import.c, diff.c, html.c, master_html.c, runlog_xml.c:
	`struct run_entry' fields are renamed (see above).

2006-09-09 (r3341) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	(clar_destroy) new function prototype.

	* team_extra.h:
	(team_extra_destroy) new function prototype.

	* runlog.h:
	(run_destroy) new function prototype.

	* clarlog.c:
	(clar_destroy) new function is implemented.

	* team_extra.c:
	(team_extra_destroy) new function is implemented.

	* runlog.c:
	(run_destroy) new function is implemented.

2006-09-09 (r3339) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h:
	(teamdb_db_callbacks) new structure for callbacks;
	(teamdb_destroy) new function prototype;
	(teamdb_set_callbacks) new function prototype;
	(teamdb_dump_database) removed;
	(teamdb_toggle_flags) removed;
	(teamdb_get_uid_by_pid) `contest_id' parameter is removed.

	* teamdb.c:
	new callback-based userlist-server interaction method is implemented;
	(struct old_db_state) new structure, which contain all the
	  obsoleted fields;
	(struct teamdb_state) new fields: `callbacks', `need_update',
	  `pseudo_vintage', `old';
	  fields `server_path', ..., `shm_key' moved to `struct old_db_state';
	(open_connection) `old_db' parameter replaced `state' parameter;
	  `contest_id' parameter is added;
	(close_connection) `old_db' parameter replaced `state' parameter;
	(teamdb_refresh) new callback-based method is supported;
	(teamdb_set_update_flag) new function;
	(teamdb_set_callbacks) new function;
	(teamdb_open_client) updated for the new structure layout;
	(teamdb_toggle_flags) removed because unused;
	(teamdb_dump_database) removed because unused;
	(teamdb_get_uid_by_pid) `contest_id' parameter is removed;
	(teamdb_destroy) new function.

	* serve.c:
	(get_peer_local_user) call of `teamdb_get_uid_by_pid' is updated.

2006-09-09 (r3338) Alexander Chernov  <cher@ejudge.ru>

	* compile_packet.h, printing.h, prepare.h, diff.h, archive_paths.h, varsubst.h, cr_serialize.h, html.h: copyright notice is updated;
	"serve_state.h" is included;
	`state' parameter is added to functions.

	* filter_eval.h:
	"serve_state.h" is included;
	(struct filter_env) `serve_state' field is added.

	* runlog.h:
	"serve_state.h" is included;
	(unparse_runlog_xml) `serve_state_t' parameter is passed instead of
	  `teamdb_state_t';
	(runlog_import_xml) the same as above.

	* serve_state.h: `serve_state' definition is removed.

	* prepare_serve.c, run.c, printing.c, filter_eval.c, prepare.c, compile.c, compile_packet_1.c, runlog_import.c, diff.c, archive_paths.c, varsubst.c, html.c, master_html.c, runlog_xml.c:
	`state' parameter is added to most functions;
	`state' pointer is used instead of `serve_state' global variable.

	* serve.c:
	`serve_state' is declared as static variable;
	`serve_state' is passed to many functions.

2006-09-08 (r3334) Alexander Chernov  <cher@ejudge.ru>

	* serve_state.h:
	new fields: `users_a', `users', `cur_user',
	  `abstr_probs', `abstr_testers', `max_abstr_prob', `max_abstr_tester'.

	* prepare.c:
	global variables `abstr_probs', `abstr_testers', `max_abstr_prob',
	  `max_abstr_tester' are moved to the `struct serve_state' structure;
	global variables `problem_counter', `language_counter',
	  `tester_counter' are removed.

	* master_html.c:
	global variables `users_a', `users', `cur_user' are moved to the
	`struct serve_state' structure.

2006-09-08 (r3332) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c:
	(prepare_set_problem_defaults) bug is fixed;
	(prepare_new_global_section) the same;
	(prepare_set_prob_value) the same.

2006-09-08 (r3330) Alexander Chernov  <cher@ejudge.ru>

	* filter_tree.h: copyright notice is updated;
	(filter_expr_set_string) `user_data' is added as the first parameter
	  to the callback error function;
	  `user_data' parameter is added;
	(filter_expr_init_parser) the same as above.

	* filter_scan.lex:
	(filter_scan_err) `user_data' is added as the first parameter to
	  the callback error function;
	(filter_scan_user_data) new variable to store the user_data pointer;
	calls of filter_scan_err callback are updated;
	(local_err_func) `user_data' parameter is added;
	(filter_expr_set_string) `user_data' is added as the first parameter
	  to the callback error function;
	  `user_data' parameter is added.

	* filter_expr.y:
	(filter_expr_parse_err) `user_data' is added as the first parameter to
	  the callback error function;
	(filter_expr_user_data) new variable to store the user_data pointer;
	calls of `filter_expr_parse_err' callback are updated;
	(do_error) `user_data' parameter is added;
	(filter_expr_init_parser) `user_data' is added as the first parameter
	  to the callback error function;
	  `user_data' parameter is added.

	* master_html.c:
	(parse_error_func) `user_data' parameter is added;
	(write_priv_all_runs) calls of `filter_expr_init_parser',
	  `filter_expr_set_string' are updated;
	  calls of `parse_error_func' are updated.

2006-09-08 (r3329) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	prepare_vars.h is removed;
	serve_state.h is added.

	* serve_state.h: initial revision.

	* prepare_vars.h: removed.

	* prepare_serve.c, printing.c, runlog_import.c, diff.c, html.c, master_html.c, runlog_xml.c:
	"prepare_vars.h" is no longer included;
	"serve_state.h" is included;
	all global variables from "prepare_vars.h" (config, global, langs,
	  probs, testers, max_lang, max_prob, max_tester, cur_contest,
	  clarlog_state, teamdb_state, team_extra_state, runlog_state)
	  are moved to structure `struct serve_state' in the "serve_state.h"
	  and are accessed using the global variable `serve_state'.

	* compile_packet_1.c, archive_paths.c, varsubst.c:
	copyright notice is updated;
	"prepare_vars.h" is no longer included;
	"serve_state.h" is included;
	all global variables from "prepare_vars.h" (config, global, langs,
	  probs, testers, max_lang, max_prob, max_tester, cur_contest,
	  clarlog_state, teamdb_state, team_extra_state, runlog_state)
	  are moved to structure `struct serve_state' in the "serve_state.h"
	  and are accessed using the global variable `serve_state'.

	* prepare.c:
	"prepare_vars.h" is no longer included;
	"serve_state.h" is included;
	all global variables from "prepare_vars.h" (config, global, langs,
	  probs, testers, max_lang, max_prob, max_tester, cur_contest,
	  clarlog_state, teamdb_state, team_extra_state, runlog_state)
	  are moved to structure `struct serve_state' in the "serve_state.h"
	  and are accessed using the global variable `serve_state'.
	definitions of `config', `global', `langs', `probs', `testers',
	  `max_lang', `max_prob', `max_tester', `cur_contest' global
	  variables are removed.

	* run.c, compile.c: copyright notice is updated;
	"prepare_vars.h" is no longer included;
	"serve_state.h" is included;
	all global variables from "prepare_vars.h" (config, global, langs,
	  probs, testers, max_lang, max_prob, max_tester, cur_contest,
	  clarlog_state, teamdb_state, team_extra_state, runlog_state)
	  are moved to structure `struct serve_state' in the "serve_state.h"
	  and are accessed using the global variable `serve_state';
	global variable `serve_state' is defined.

	* serve.c:
	"prepare_vars.h" is no longer included;
	"serve_state.h" is included;
	all global variables from "prepare_vars.h" (config, global, langs,
	  probs, testers, max_lang, max_prob, max_tester, cur_contest,
	  clarlog_state, teamdb_state, team_extra_state, runlog_state)
	  are moved to structure `struct serve_state' in the "serve_state.h"
	  and are accessed using the global variable `serve_state';
	global variables `clarlog_state', `teamdb_state', `team_extra_state',
	  `runlog_state' are removed;
	global variable `serve_state' is defined.

	* super_serve.c, clean-users.c:
	"serve_state.h" is included;
	global variable `serve_state' is defined.

2006-09-08 (r3327) Alexander Chernov  <cher@ejudge.ru>

	* parsecfg.h: copyright notice is updated;
	(struct config_section_info) `name' is now a "const" pointer;
	  `info' now a const pointer;
	(parse_param) third parameter is now a "const" pointer.

	* l10n.c: `locales' is defined as const pointers.

	* parsecfg.c: copyright notice is updated;
	static variables are moved to the new `struct parsecfg_state'.

	* prepare.c:
	`section_global_params', `section_problem_params',
	  `section_language_params', `section_tester_params', `params'
	  are declared as const arrays;
	(inherit_fields) `iinfo' is now "const" pointer;
	`tester_inheritance_info' is a "const" array.

	* userlist.c:
	`primes' is now defined as "const" array.

	* filter_scan.lex: copyright notice is updated;
	all static variables are renamed as having prefix
	  `filter_scan'.

	* filter_expr.y: copyright notice is updated;
	all static variables are renamed as having prefix
	  `filter_expr'.

	* runlog.c:
	`str_to_status_table' is declared as a "const" array.

2006-09-08 (r3326) Alexander Chernov  <cher@ejudge.ru>

	* runlog.h:
	first parameter `state' is added to almost all functions.

	* prepare_vars.h:
	`runlog_state' global variable is added.

	* clean-users.c:
	use of runlog functions is updated by passing `runlog_state' parameter;
	(main) `run_init' is called.

	* printing.c:
	use of runlog functions is updated by passing `runlog_state' parameter.

	* serve.c:
	use of runlog functions is updated by passing `runlog_state' parameter;
	`runlog_state' global variable is added;
	(main) `run_init' is called.

	* runlog_import.c:
	(runlog_import_xml) `runlog_state' parameter is added.

	* runlog.c:
	all the static variables are removed;
	(struct runlog_state) new structure to store the state of the module,
	  all function accept the `state' parameter;
	(run_init) reimplemented;
	first parameter `state' is added to almost all functions.

	* diff.c: copyright notice is updated;
	`runlog_state' parameter is passed to all runlog functions.

	* html.c:
	`runlog_state' parameter is passed to all runlog functions.

	* master_html.c:
	`runlog_state' parameter is passed to all runlog functions.

2006-09-08 (r3324) Alexander Chernov  <cher@ejudge.ru>

	* team_extra.h: copyright notice is updated;
	`struct team_extra_state state' parameter is added to all function to
	  store the state there instead of static variables;
	(team_extra_init) new function;
	(team_extra_get_entry) the constant pointer is returned to disable
	  modifications outside of this module;
	(team_extra_set_status) new function.

	* prepare_vars.h:
	`team_extra_state' global variable is added.

	* team_extra.c: copyright notice is updated;
	"prepare.h", "prepare_vars.h" are removed;
	`struct team_extra_state state' parameter is added to all function to
	  store the state there instead of static variables;
	(team_extra_init) new function to initialize state variable;
	(team_extra_get_entry) the constant pointer is returned to disable
	  modifications outside of this module;
	(team_extra_set_status) new function.

	* serve.c:
	`team_extra_state' global variable is added;
	use of team_extra functions is updated by adding
	  the `team_extra_state' parameter;
	(main) `team_extra_init' is called.

	* html.c:
	use of team_extra functions is updated by adding
	  the `team_extra_state' parameter.

	* master_html.c:
	use of team_extra functions is updated by adding
	  the `team_extra_state' parameter.

2006-09-07 (r3322) Alexander Chernov  <cher@ejudge.ru>

	* teamdb.h: copyright notice is updated;
	`teamdb_state' parameter is added to all functions;
	(teamdb_init) new function.

	* filter_eval.h: copyright notice is updated;
	"teamdb.h" is included;
	(struct filter_env) `teamdb_state' field is added.

	* prepare_vars.h:
	`teamdb_state' global variable is added.

	* runlog.h: copyright notice is updated;
	(run_init) new function;
	(unparse_runlog_xml) `teamdb_state' parameter is added;
	(runlog_import_xml) `teamdb_state' parameter is added.

	* serve.c:
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* html.c:
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* master_html.c:
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* runlog.c: copyright notice is updated;
	new static variable `teamdb_state';
	(run_init) new function;
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* runlog_xml.c: copyright notice is updated;
	(unparse_runlog_xml) `teamdb_state' parameter is added;
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* runlog_import.c: copyright notice is updated;
	(runlog_import_xml) `teamdb_state' parameter is added.

	* prepare_serve.c:
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* printing.c: copyright notice is updated;
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

	* teamdb.c: copyright notice is updated;
	teamdb_state parameter is added to all functions. It contains
	all the state, which was previously stored in static variables;
	(teamdb_init) new function.

	* filter_eval.c: copyright notice is updated;
	use of teamdb functions is changed: teamdb_state parameter
	  is passed to all teamdb functions.

2006-09-07 (r3321) Alexander Chernov  <cher@ejudge.ru>

	* userlist-server.c: new infrastructure for user information change
	  notification is implemented. The notifications are sent to the
	  clients using the same client<->server socket. The client must watch
	  this socket and read update messages, when the socket is ready.
	(struct observer_info) new structure to store the information about
	  observers;
	(struct new_contest_extra) new structure to store the extra information
	  about the contest. In perspective, this structure must replace
	  `struct contest_extra';
	(new_contest_extra_get) new function;
	(new_contest_extra_try) new function;
	(add_observer) new function;
	(remove_observer) new function;
	(remove_observer_2) new function;
	(old_update_userlist_table) old code from `update_userlist_table'
	  is moved here;
	(new_update_userlist_table) new function;
	(update_userlist_table) this functions just calls
	  `old_update_userlist_table' and `new_update_userlist_table';
	(disconnect_client) the list of observed contest is removed;
	(cmd_observer_cmd) new function to handle `ULS_ADD_NOTIFY'
	  and `ULS_DEL_NOTIFY' requests;
	(check_observers) new function to emit send the notification messages
	  to the clients, if the connection state is appropriate, and
	  the information is updated;
	(do_work) `check_observers' is called.

2006-09-07 (r3320) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	added: `userlist_clnt/notify.c', `userlist_clnt/read_notification.c'.

	* userlist_proto.h:
	new requests: ULS_ADD_NOTIFY, ULS_DEL_NOTIFY;
	new reply: ULS_NOTIFICATION;
	(struct userlist_pk_notification) new reply structure for
	  `ULS_NOTIFICATION'.

	* userlist_clnt.h:
	(userlist_clnt_notify) new function;
	(userlist_clnt_read_notification) new function.

2006-09-07 (r3317) Alexander Chernov  <cher@ejudge.ru>

	* clarlog.h:
	`state' parameter is added to all the functions.

	* copyright.h: copyright notice is updated;
	(get_copyright) `locale_id' parameter is added.

	* prepare_vars.h:
	`clarlog_state' global variable is added.

	* clntutil.c:
	(client_put_footer) use of `get_copyright' is updated.

	* html.c:
	use of clarlog functions is updated by adding the clarlog_state
	parameter;
	use of `get_copyright' function is updated.

	* master_html.c:
	use of clarlog functions is updated by adding the clarlog_state
	parameter.

	* serve.c:
	use of clarlog functions is updated by adding the clarlog_state
	parameter;
	`clarlog_state' is a global variable, which will be eliminated soon.

	* copyright.c:
	(get_copyright) `locale_id' parameter is added.

	* clean-users.c:
	(main) use of clarlog functions is updated by adding the `state'
	  parameter.

	* clarlog.c: copyright notice is updated;
	static variables `header', `clars', `clar_fd' are eliminated by
	  a new state structure, which is passed to all the functions.

2006-09-07 (r3315) Alexander Chernov  <cher@ejudge.ru>

	* userlist_proto.h:
	new commands added: ULS_PRIV_GET_COOKIE, ULS_CHECK_USER.

	* copyright.c: copyright notice is updated;
	  web-interface copyright info is added.

	* userlist-server.c:
	(cmd_check_user) new function to handle `ULS_CHECK_USER' command;
	(cmd_get_cookie) both ULS_PRIV_GET_COOKIE, ULS_GET_COOKIE handled.

2006-09-06 (r3312) Alexander Chernov  <cher@ejudge.ru>

	* userlist_xml.c:
	(userlist_unparse_user_short) the contest last_login_time is
	  generated.

2006-09-06 (r3310) Alexander Chernov  <cher@ejudge.ru>

	* server_framework.h:
	(nsf_enqueue_reply) the `len' parameter is 32-bit integer.

	* server_framework.c:
	(nsf_enqueue_reply) the `len' parameter is 32-bit integer,
	  since is written to the socket as such.

	* userlist-server.c:
	(cmd_priv_check_user) `OPCAP_LIST_ALL_USERS' capability is
	  required;
	  the control connection parameters are not reset.

2006-09-06 (r3307) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	userlist_clnt/lookup_user_id.c added.

	* userlist_proto.h:
	ULS_LOOKUP_USER_ID command is added.

	* userlist_clnt.h:
	(userlist_clnt_lookup_user_id) new function is added.

	* userlist-server.c:
	(cmd_lookup_user_id) new function to handle
	  `ULS_LOOKUP_USER_ID' request.

2006-09-05 (r3304) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h:
	"cnts_last_login", "info_create" attributes are added;
	USERLIST_NC_LAST_LOGIN_TIME added;
	(struct userlist_user_info) `last_login_time' is added.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::touch_login_time) `contest_id' is added.

	* uldb_plugin_xml.c:
	(touch_login_time_func) `contest_id' parameter is added;
	  `userlist_user_info's `last_login_time' is also touched, if
	  `contest_id' > 0.

	* userlist.c: copyright notice is updated;
	support for USERLIST_NC_LAST_LOGIN_TIME added.

	* edit-userlist.c:
	editing of `last_login_time' is supported.

	* userlist-server.c:
	(default_touch_login_time) parameter is added;
	(cmd_do_login) use of `default_touch_login_time' is updated;
	(cmd_team_login) the same as above;
	(cmd_priv_login) the same as above;
	(cmd_priv_check_user) the same as above;
	(cmd_create_user) the same as above.

	* userlist_xml.c:
	parsing and unparsing of "cnts_last_login", "info_create"
	  is supported.

2006-09-05 (r3303) Alexander Chernov  <cher@ejudge.ru>

	* mischtml.h: copyright notice is updated;
	(html_start_form) `sid' parameter is removed.

	* html_start_form.c: copyright notice is updated;
	(html_start_form) `sid' parameter is removed.

	* html.c: copyright notice is updated;
	  use of `html_start_form' is updated.

	* master_html.c: copyright notice is updated;
	  use of `html_start_form' is updated.

	* super_html.c: use of `html_start_form' is updated.

	* super_html_3.c: copyright notice is updated;
	use of `html_start_form' is updated.

	* userlist-server.c:
	(cmd_get_cookie) `contest_id' is printed to the log.

2006-09-05 (r3300) Alexander Chernov  <cher@ejudge.ru>

	* userlist_clnt.h:
	(userlist_clnt_get_cookie) `contest_id' parameter is removed.

	* userlist-server.c:
	(cmd_get_cookie) contest_id is ignored on input;
	(load_plugins) use of `uldb_plugin.parse' is fixed.

2006-09-04 (r3294) Alexander Chernov  <cher@ejudge.ru>

	* super-serve.h:
	(struct sid_state) `priv_header_text', `priv_footer_text' fields
	  are added.

	* super_actions.h: copyright notice is updated;
	actions for editing of the <priv_header_file>, <priv_footer_file>
	  elements are added.

	* super_proto.h: copyright notice is updated;
	commands for editing of the <priv_header_file>, <priv_footer_file>
	  elements are added.

	* super-serve.c:
	editing of the <priv_header_file>, <priv_footer_file> is supported.

	* super_html_2.c:
	editing of the <priv_header_file>, <priv_footer_file> is supported.

	* contest_tmpl.c: copyright notice is updated;
	editing of the <priv_header_file>, <priv_footer_file> is supported.

	* super_html.c:
	editing of the <priv_header_file>, <priv_footer_file> is supported.

	* serve-control.c:
	editing of the <priv_header_file>, <priv_footer_file> is supported.

2006-09-04 (r3293) Alexander Chernov  <cher@ejudge.ru>

	* prepare_serve.c: copyright notice is updated.

	* contests.h: copyright notice is updated;
	(struct contest_desc) new fields `priv_header_file',
	  `priv_footer_file' are added;
	(contests_get) the contest description is returned as the
	  constant pointer;
	(contests_strerror) the return value is "const"-qualified;
	(contests_check_register_ip_2) `cnts' parameter is declared "const";
	(contests_check_users_ip_2) the same as above;
	(contests_check_master_ip_2) the same as above;
	(contests_check_judge_ip_2) the same as above;
	(contests_check_team_ip_2) the same as above;
	(contests_check_serve_control_ip_2) the same as above.

	* super-serve.h: copyright notice is updated;
	(super_serve_start_serve_test_mode) `cnts' parameter is declared
	  "const".

	* prepare-vars.h: copyright notice is updated;
	`cur_contest' global variable is declared "const".

	* super_html.h: copyright notice is updated.

	* super-serve.c: copyright notice is updated;
	(prepare_serve_serving) `cnts' parameter is declared "const";
	(prepare_run_serving) the same as above;
	(super_serve_start_serve_test_mode) the same as above;
	(acquire_contest_resources) the same as above;
	(release_contest_resources) the same as above;
	(acquire_resources) use of `contests_get' is updated;
	(cmd_main_page) use of `contests_get', `contests_load' is updated;
	(contest_mngmt_cmd) `cnts' parameter is declared "const";
	(cmd_simple_command) use of `contests_get', `contests_load'
	  is updated.

	* clean-users.c: copyright notice is updated;
	(main) use of `contests_get' is updated.

	* register.c:
	(initialize) use of `contests_get' is updated;
	(print_choose_language_button) the same as above;
	(prepare_var_table) `cnts' parameter is declared "const";
	(map_user_languages) use of `contests_get' is updated;
	(display_user_registered_page_2) the same as above;
	(display_main_page) the same as above;
	(action_register_new_user) the same as above;
	(action_remove_member) the same as above;
	(action_register_for_contest) the same as above.

	* users.c: copyright notice is updated;
	(main) use of `contests_get' is updated.

	* new_server_html.c:
	(html_err_permission_denied) use of `contests_get' is updated;
	(privileged_page_login) use of `contests_get' is updated.

	* master.c:
	`cur_contest' global variable is declared "const".

	* prepare.c:
	`cur_contest' global variable is declared "const".

	* contests.c: copyright notice is updated;
	support for <priv_header_file>, <priv_footer_file> elements
	is implemented;
	(contests_check_ip) use of `contests_get' is updated;
	(contests_check_register_ip_2) `cnts' parameter is declared "const";
	(contests_check_users_ip_2) the same as above;
	(contests_check_master_ip_2) the same as above;
	(contests_check_judge_ip_2) the same as above;
	(contests_check_team_ip_2) the same as above;
	(contests_check_serve_control_ip_2) the same as above;
	(contests_get) `p_desc' parameter is now "const" pointer;
	(contests_strerror) the return type is now "const".

	* super_html_2.c: copyright notice is updated;
	(get_contest_access_by_num) `cnst' parameter is declared "const";
	(super_html_set_contest_var) use of `contests_get' is updated;
	(super_html_serve_probe_run) the same as above.

	* serve.c: copyright notice is updated;
	(check_cnts_caps) use of `contests_get' is updated;
	(get_cnts_caps) the same as above;
	(get_email_sender) `cnts' parameter is declared "const";
	(cmd_team_submit_clar) use of `contests_get' is updated;
	(cmd_edit_user) the same as above;
	(generate_statistics_email) the same as above;
	(check_stat_generation) the same as above.

	* team.c:
	`cur_contest' global variable is declared "const".

	* serve-cmd.c:
	`cnts' global variable is declared "const".

	* edit-userlist.c: copyright notice is updated;
	(get_contest_str) use of `contests_get' is updated;
	(display_registered_users) the same as above;
	(display_contests_menu) the same as above.

	* userlist-server.c:
	(attach_contest_extra) `cnts' parameter is declared "const";
	(is_cnts_capable) the same as above;
	(get_email_sender) the same as above;
	(cmd_register_new_2) use of `contests_get' is updated;
	(cmd_register_new) the same as above;
	(cmd_team_login) the same as above;
	(cmd_priv_login) the same as above;
	(cmd_team_check_cookie) the same as above;
	(cmd_priv_check_cookie) the same as above;
	(cmd_get_user_info) the same as above;
	(cmd_priv_get_user_info) the same as above;
	(cmd_list_all_users) the same as above;
	(cmd_list_standings_users) the same as above;
	(cmd_set_user_info) the same as above;
	(cmd_team_set_passwd) the same as above;
	(cmd_register_contest) the same as above;
	(cmd_priv_register_contest) the same as above;
	(cmd_delete_member) the same as above;
	(do_list_users) `cnts' parameter is declared "const";
	  use of `contests_get' is updated;
	(do_dump_database) `cnts' parameter is declared "const";
	  use of `contests_get' is updated;
	(cmd_dump_database) use of `contests_get' is updated;
	(cmd_map_contest) the same as above;
	(cmd_generate_register_passwords) the same as above;
	(cmd_generate_team_passwords) the same as above;
	(cmd_clear_team_passwords) the same as above;
	(cmd_get_contest_name) the same as above;
	(cmd_edit_registration) the same as above;
	(check_editing_caps) the same as above;
	(priv_delete_member) the same as above;
	(cmd_delete_user_info) the same as above;
	(cmd_delete_field) the same as above;
	(cmd_create_member) the same as above.

	* super_html.c: copyright notice is updated;
	(get_serve_management_status) `cnts' parameter is declared "const";
	(get_run_management_status) the same as above;
	(logged_contest_get) use of `contests_get' is updated;
	(super_html_main_page) the same as above;
	(super_html_contest_page) the same as above;
	(super_html_log_page) the same as above;
	(super_html_create_contest) the same as above;
	(super_html_edit_access_rules) the same as above;
	(super_html_create_contest_2) the same as above.

2006-09-04 (r3291) Alexander Chernov  <cher@ejudge.ru>

	* Makefile.unix.in: message catalog generation option is changed.

	* l10n.h: copyright notice is updated;
	<stdio.h> is included;
	(l10n_html_locale_select) new function prototype.

	* l10n.c: copyright notice is updated;
	(l10n_html_locale_select) new function is implemented.

2006-09-03 (r3288) Alexander Chernov  <cher@ejudge.ru>

	* files.make: `userlist_clnt/get_cookie.c' is added.

	* userlist_proto.h:
	ULS_GET_COOKIE command is added;
	(struct userlist_pk_login_ok) `role' field is added.

	* userlist_clnt.h:
	(userlist_clnt_get_cookie) function prototype is added.

	* userlist-server.c:
	(cmd_get_cookie) new function to handle `ULS_GET_COOKIE' command.

2006-09-03 (r3286) Alexander Chernov  <cher@ejudge.ru>

	* userlist.h: copyright notice is updated;
	(struct userlist_cookie) `role' field is added.

	* userlist_proto.h:
	(struct userlist_pk_do_login) `role' field is added.

	* userlist_clnt.h:
	(userlist_clnt_priv_login) `role' parameter is added.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::new_cookie) `role' parameter is added.

	* uldb_plugin_xml.c:
	(new_cookie_func) `role' parameter is added.

	* userlist_xml.c: copyright notice is updated;
	"role" attribute of the <cookie> element is handled.

	* master.c:
	(authentificate) use of `userlist_clnt_priv_login' is updated.

	* serve-cmd.c:
	(handle_login) use of `userlist_clnt_priv_login' is updated.

	* userlist-server.c:
	(default_new_cookie) parameter is added;
	(cmd_do_login) use of `default_new_cookie' is updated;
	(cmd_priv_login) use of `default_new_cookie' is updated;
	(cmd_priv_check_user) use of `default_new_cookie' is updated.

	* serve-control.c:
	(authentificate) use of `userlist_clnt_priv_login' is updated.

2006-09-03 (r3284) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	new files added: userlist_clnt/get_fd.c, nsdb_plugin_files.c,
	  iterators.h, nsdb_plugin.h.

	* Makefile.unix.in:
	new-server: `-ldl' added for linking;
	ejudge.po: --no-location added.

	* userlist_proto.h: copyright notice is updated;
	ULS_PRIV_CHECK_USER command is added.

	* uldb_plugin.h: copyright notice is updated;
	"iterators.h" is included;
	definition of iterator types is moved there;
	(parse) the `data' parameter is moved to the first place in the
	  parameter list.

	* userlist_clnt.h: copyright notice is updated;
	(userlist_clnt_get_fd) new function prototype;
	(userlist_clnt_login) parameter `cmd' is added;
	(userlist_clnt_team_login) parameter `cmd' is added;
	(userlist_clnt_priv_login) parameter `cmd' is added.

	* uldb_plugin_xml.c:
	(parse_func) `data' parameter is moved to the first place in the
	  parameter list.

	* register.c: copyright notice is updated;
	(action_login) call of `userlist_clnt_login' is updated.

	* master.c: copyright notice is updated;
	(authentificate) call of `userlist_clnt_priv_login' is updated.

	* team.c: copyright notice is updated;
	(authentificate) call of `userlist_clnt_team_login' is updated.

	* userlist-server.c:
	ULS_PRIV_CHECK_USER request is handled;
	(cmd_priv_check_user) new function;
	(load_plugins) use of `parse' function is updated.

	* serve-cmd.c: copyright notice is updated;
	(handle_login) call of `userlist_clnt_priv_login' is updated;
	(handle_team_login) call of `userlist_clnt_login' is updated.

	* serve-control.c: copyright notice is updated;
	(authentificate) call of `userlist_clnt_priv_login' is updated.

	* nsdb_plugin.h, iterators.h, nsdb_plugin_files.c:
	  initial revision.

	* ejudge.ru_RU.KOI8-R.po: source position comments are removed.

2006-09-01 (r3276) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	new files added: new-serve.h, new_server_html.c.

	* server_framework.c, server_framework.h, new-server.c:
	progress.

2006-09-01 (r3275) Alexander Chernov  <cher@ejudge.ru>

	* new-server.h, new_server_html.c:
	initial revision

2006-09-01 (r3267) Alexander Chernov  <cher@ejudge.ru>

	* prepare.c: copyright notice is updated;
	(set_defaults) a compiler warning is fixed.

	* misctext.c: copyright notice is updated;
	(armored_html_translate_table) a compiler warning is fixed;
	(html_get_armor_table) a compiler warning is fixed.

2006-09-01 (r3264) Alexander Chernov  <cher@ejudge.ru>

	* files.make:
	  new files added: server_framework.c, server_framework.h.

	* server_framework.h, server_framework.c: initial revision.

	* new-server.c: progress.

2006-08-31 (r3262) Alexander Chernov  <cher@ejudge.ru>

	* configure.ac: copyright notice is updated;
	`--enable-new-server-socket' option is added.

	* files.make:
	new files added: new-client.c, new-server.c.

	* Makefile.unix.in: rules for `new-client', `new-server' added.

	* config.h.in:
	`EJUDGE_NEW_SERVER_SOCKET' definition is added.

	* new_serve_clnt.h:
	(new_serve_clnt_http_request) renamed from `new_serve_http_request';
	  `args', `envs', `params' now have `unsigned char' type;
	  `param_names' parameter added.

	* cgi.h: copyright notice is updated;
	(cgi_get_nth_param_bin) new function prototype is added.

	* userlist-server.c: copyright notice is updated;
	(cmd_register_new_2) compiler warning is fixed.

	* job-server.c: copyright notice is updated;
	(run_process) compiler warnings fixed.

	* uldb_plugin_xml.c: copyright notice is updated;
	(get_cookie_func) compiler warnings fixed;
	(remove_member_func) compiler warnings fixed.

	* cgi.c: copyright notice is updated;
	(cgi_get_nth_param_bin) new function is implemented.

	* new-client.c, new-server.c: initial revision.

	* unicorn-configure: --enable-new-server-socket added.

	* cher-configure: --enable-new-server-socket added.

2006-08-30 (r3259) Alexander Chernov  <cher@ejudge.ru>

	* files.make: copyright notice email is changed;
	  `new_serve_clnt/http_request.c' is added;
	  ${NEW_SERVE_CLNT_CFILES} added to the list of C files.

	* Makefile.unix.in: copyright notice email is changed;
	  `log' rule is updated for `new_serve_clnt' directory.

	* new_serve_clnt.h:
	(new_serve_http_request) new function prototype.

	* new_serve_proto.h:
	new request: NEW_SRV_CMD_HTTP_REQUEST;
	new error code: NEW_SRV_ERR_PARAM_OUT_OF_RANGE;
	(struct new_serve_prot_http_request) new structure for the new request.

2006-08-30 (r3253) Alexander Chernov  <cher@ispras.ru>

	* files.make: files from `new_serve_clnt' subdir are added.

	* cher-configure: FreePascal version is upgraded to 2.0.4.

	* Makefile.unix.in: rule for `libnew_serve_clnt.a' is added.

	* new_serve_clnt.h: initial revision.

	* new_serve_proto.h: initial revision.

2006-08-30 (r3248) Alexander Chernov  <cher@ispras.ru>

	* uldb_plugin_xml.c:
	(register_contest_func) bug: `p_c' was not filled on the main return
	  branch.

	* userlist-server.c:
	(do_list_users) bug: the user counter variable `i' was not
	  initialized.

	* unicorn-configure:
	FreePascal compiler upgraded to 2.0.4;
	`--with-mysql' option is added.

2006-08-30 (r3245) Alexander Chernov  <cher@ispras.ru>

	* files.make:
	removed: userlist_clnt/add_field.c, userlist_clnt/remove_member.c;
	added: userlist_clnt/delete_cookie.c, userlist_clnt/delete_info.c.

	* userlist.h:
	new attribute constants added: USERLIST_A_LAST_INFO_PWDCHANGE,
	  USERLIST_A_LAST_INFO_CHANGE.

	* userlist_proto.h:
	`ULS_REMOVE_MEMBER' is renamed to `ULS_DELETE_MEMBER';
	`ULS_PRIV_DELETE_MEMBER' is added;
	(struct userlist_pk_delete_info) renamed from
	  `struct userlist_pk_remove_member';
	  fields `role_id', `pers_id' are removed.

	* userlist_clnt.h:
	(userlist_clnt_delete_info) renamed from
	  `userlist_clnt_remove_member';
	(userlist_clnt_add_field) completely removed;
	(userlist_clnt_delete_cookie) new function prototype.

	* uldb_plugin.h:
	(struct uldb_plugin_iface::remove_member) `role', `num' parameters
	  are removed.

	* userlist_xml.c:
	new attributes "last_info_pwdchange" and "last_info_change" are
	  handled.

	* userlist.c:
	(userlist_unparse_date) `show_null' parameter is renamed to
	  `convert_null', which is supported properly;
	(userlist_get_member_field_str) `convert_null' is passed to
	  `userlist_unparse_date';
	(userlist_get_user_info_field_str) `convert_null' is passed to
	  `userlist_unparse_date';
	  bug in hanling `name' field is fixed;
	  `convert_null' is used for boolean values unparsing;
	(userlist_get_user_field_str) `convert_null' is used for boolean values
	  unparsing;
	  `convert_null' is passed to `userlist_unparse_date';
	(userlist_clone_user_info) `last_change_time' is copied instead of
	  being reset to the current time.

	* userlist-server.c:
	(default_remove_member) two parameters are removed;
	(cmd_delete_member) renamed from `cmd_remove_member';
	  use of `default_remove_member' is updated;
	(cmd_delete_user) `data' now has `struct userlist_pk_delete_info'
	  type;
	(cmd_priv_delete_member) new function to handle the correspoding
	  request;
	(cmd_delete_user_info) `data' how has `struct userlist_pk_delete_info'
	  type.

	* clean-users.c:
	(main) `userlist_clnt_delete_info' replaced
	  `userlist_clnt_delete_field'.

	* register.c:
	(action_remove_member) `userlist_clnt_delete_info' replaced
	  `userlist_clnt_remove_member'.

	* edit-userlist.c:
	(is_valid_user_field) new function;
	(do_display_user) this function is renamed from `display_user';
	  many changes according to the protocol change;
	(display_user) this new function is a wrapper for `do_display_user';
	(display_registered_users) use of `display_user' is updated;
	  use of `userlist_clnt_delete_field' is updated;
	(do_display_user_menu) `userlist_clnt_delete_info' is used instead of
	  `userlist_clnt_delete_field';
	  use of `display_user' is updated.

	* uldb_plugin_xml.c:
	(remove_member_func) `role', `num' parameters are removed;
	(clear_user_field_func) `last_pwdchange_time' is updated in case
	  of password change;
	(clear_user_info_field_func) `last_pwdchange_time' is updated in
	  case of password change;
	(set_user_field_func) `last_pwdchange_time' is updated in case
	  of password change;
	(set_user_info_field_func) `last_pwdchange_time' is updated in
	  case of password change;
	(set_user_xml_func) call of `remove_member_func' is updated.

2006-08-28 (r3241) Alexander Chernov  <cher@ispras.ru>

	* Makefile.unix.in:
	fixes for plugins

2006-08-28 (r3238) Alexander Chernov  <cher@ispras.ru>

	* files.make: new files are added: userlist_clnt/create_member.c,
	  userlist_clnt/create_user.c.

	* userlist.h:
	  field constants are reorganized according to the changes in the
	  `userlist_user' structure;
	(struct userlist_passwd) removed;
	(struct userlist_user_info) old field `team_passwd' is replaced with
	  `team_passwd_method' and `team_passwd';
	(struct userlist_user) old field `register_passwd' is replaced with
	  `passwd_method' and `passwd';
	(userlist_unparse_user) parameter `p' is now const pointer;
	(userlist_real_unparse_user) new function;
	(userlist_unparse_user_short) new function;
	(userlist_unparse_contest) new function;
	(userlist_get_member_field_ptr) new function;
	(userlist_is_empty_member_field) new function;
	(userlist_is_equal_member_field) new function;
	(userlist_get_member_field_str) parameter `m' is now const pointer;
	(userlist_get_user_info_field_ptr) new function;
	(userlist_is_empty_user_info_field) new function;
	(userlist_is_equal_user_info_field) new function;
	(userlist_get_user_info_field_str) new function;
	(userlist_set_user_info_field_str) new function;
	(userlist_delete_user_info_field) new function;
	(userlist_get_user_field_ptr) new function;
	(userlist_is_empty_user_field) new function;
	(userlist_is_equal_user_field) new function;
	(userlist_get_user_field_str) `u' parameter is now const pointer;
	  `ui' parameter is removed;
	(userlist_set_user_field_str) `lst' parameter is removed;
	  `ui' parameter is removed;
	(userlist_delete_user_field) `ui' parameter is removed;
	(userlist_cookie_hash_add) `ck' parameter is `const';
	(userlist_cookie_hash_del) `ck' parameter is `const';
	(userlist_clone_user_info) `p_cloned_flag' parameter is added;
	(userlist_get_user_info) `u' is const poiter, so the const pointer
	  is returned;
	(userlist_get_user_info_nc) a special version with non-constant
	  pointer `u';
	(userlist_get_user_contest) new function;
	(userlist_get_member_nc) new function;
	(userlist_clear_copied_from) new function;
	(userlist_write_xml_header) new function;
	(userlist_write_xml_footer) new function;
	(userlist_write_contests_xml_header) new function;
	(userlist_write_contests_xml_footer) new function.

	* userlist.c:
	  file is almost reimplemented;
	(userlist_get_member_field_ptr) new function;
	(userlist_is_empty_member_field) new function;
	(userlist_is_equal_member_field) new function;
	(userlist_get_user_info_field_ptr) new function;
	(userlist_is_empty_user_info_field) new function;
	(userlist_is_equal_user_info_field) new function;
	(userlist_get_user_info_field_str) new function;
	(userlist_set_user_info_field_str) new function;
	(userlist_delete_user_info_field) new function;
	(userlist_get_user_field_ptr) new function;
	(userlist_is_empty_user_field) new function;
	(userlist_is_equal_user_field) new function;
	(userlist_cookie_hash_add) `ck' parameter is `const';
	(userlist_cookie_hash_del) `ck' parameter is `const';
	(userlist_clone_user_info) `p_cloned_flag' parameter is added;
	  new layout of the password storage is used;
	(userlist_get_user_info) `u' is const poiter, so the const pointer
	  is returned;
	(userlist_get_user_info_nc) a special version with non-constant
	  pointer `u';
	(userlist_get_user_contest) new function;
	(userlist_get_member_nc) new function;
	(userlist_clear_copied_from) new function.

	* userlist_proto.h:
	  new commands: ULS_DELETE_USER, ULS_DELETE_COOKIE,
	  ULS_DELETE_USER_INFO, ULS_CREATE_USER,  ULS_CREATE_MEMBER;
	  new return code: ULS_CLONED;
	  new error code: ULS_ERR_UNSPECIFIED_ERROR;
	(struct userlist_pk_edit_field) `role', `pers' fields are removed;
	  `serial', `cookie' fields are added.

	* userlist_clnt.h:
	(userlist_clnt_edit_field) `role', `pers' parameters are removed;
	  `serial' parameter is added;
	(userlist_clnt_delete_field) `role', `pers' parameters are removed;
	  `serial', `cookie' parameters are added;
	(userlist_clnt_add_field) commented out;
	(userlist_clnt_create_user) new function;
	(userlist_clnt_create_member) new function.

	* userlist_xml.c:
	(parse_passwd) changed according to the new layout of passwords;
	(parse_cntsinfo) use of `parse_passwd' is updated;
	(do_parse_user) use of `parse_passwd' is updated;
	(unparse_member) parameter `p' is now const pointer;
	(unparse_members) first parameter is now const pointer;
	(unparse_cookies) parameter `p' is now const pointer;
	(userlist_unparse_contest) new name for `unparse_contest';
	(unparse_contests) parameter `p' is now const pointer;
	  `userlist_unparse_contest' is called instead of `unparse_contest';
	(unparse_cntsinfo) parameter `p' is now const pointer;
	  unparsing of the team password is updated;
	(userlist_unparse_user_short) new name for `unparse_user_short';
	  parameter `p' is now const pointer;
	  `userlist_unparse_contest' is called instead of `unparse_contest';
	(userlist_real_unparse_user) new name for `unparse_user';
	  parameter `p' is now const pointer;
	  handling of the registration password is updated;
	(userlist_unparse_user) parameter `p' is now const pointer;
	  `userlist_real_unparse_user' is called instead of `unparse_user';
	(userlist_write_contests_xml_header) new function;
	(userlist_write_contests_xml_footer) new function;
	(userlist_write_xml_header) new function;
	(userlist_write_xml_footer) new function.

	* userlist_proto.c: copyright notice is updated;
	  message for ULS_ERR_UNSPECIFIED_ERROR is added.

	* userlist-server.c: almost completely reimplemented for better
	  separation and abstration of the data storage layer.

	* edit-userlist.c: correction according to the changes in the
	  communication protocol.

	* sformat.c:
	(sformat_message) updated according to the changes in the
	  team and registration password storage layout.

	* ejudge_plugin.h: in progress.

	* uldb_plugin.h: mostly implemented.

	* plugin.c: basic plugin handling stuff is implemeted.

	* uldb_plugin_xml.c: all stuff is basically implemeted.

2006-08-16 (r3235) Alexander Chernov  <cher@ispras.ru>

	* userlist.h:
	(struct userlist_cookie) `user' is replaced with `user_id' field;
	  `ssl' field is added.

	* userlist.c:
	(userlist_build_cookie_hash) `user_id' is handled instead of `user';
	(userlist_cookie_hash_add) the same as above;
	(userlist_cookie_hash_del) the same as above.

	* userlist_xml.c:
	(userlist_node_alloc) the node tag is filled;
	(parse_cookies) `user_id' is handled instead of `user';
	  `ssl' field is handled;
	(unparse_cookies) `ssl' field is handled.

2006-08-14 (r3234) Alexander Chernov  <cher@ispras.ru>

	* userlist_xml.c:
	`filled' field of the (userlist_user_info) is filled up during parsing.

2006-08-14 (r3233) Alexander Chernov  <cher@ispras.ru>

	* random.c, random.h: initial revision.

	* files.make: random.[ch], uldb_plugin_xml.c are added.

2006-08-11 (r3232) Alexander Chernov  <cher@ispras.ru>

	* uldb_plugin_xml.c:
	initial revision

2006-08-10 (r3230) Alexander Chernov  <cher@ispras.ru>

	* ejudge_cfg.h:
	(struct ejudge_plugin) new structure for generic plugin configuration;
	(struct ejudge_cfg) field `plugin_dir' is added;
	  field `plugin_list' is added;
	(ejudge_cfg_unparse_plugins) new function is added.

	* ejudge_cfg.c:
	<ctype.h> is included;
	elements <plugin_dir>, <plugins>, <plugin>, <path> are supported;
	attributes "name", "type", "load", "default" are supported;
	elements starting from <plugin> are parsed verbatim;
	(parse_capabilities) `path' parameter is removed;
	(parse_plugins) new function;
	(ejudge_cfg_parse) `xml_err_spec' is used instead of
	  `xml_err_elem_names', `xml_err_attr_names';
	(unparse_default_tree) new function to unparse the verbatim XML tree;
	(ejudge_cfg_unparse_plugins) new function.

	* userlist.h:
	(struct userlist_user_info) field `filled' is added.

	* expat_iface.c:
	(end_hnd) bug in handling verbatim tree is fixed.

2006-08-07 (r3228) Alexander Chernov  <cher@ispras.ru>

	* expat_iface.h:
	(struct xml_parse_spec) `verbatim_flags' field is added to allow
	  specifying the elements, which subtree should be parsed in the
	  verbatim mode.

	* expat_iface.c:
	(start_hnd) verbatim mode of parsing is supported;
	(end_hnd) the same.

2006-08-07 (r3227) Alexander Chernov  <cher@ispras.ru>

	* xml_utils.h:
	`xml_err_elem_names', `xml_err_attr_names' are removed;
	`xml_err_spec' is added;
	(xml_err_get_elem_name) new function prototype;
	(xml_err_get_attr_name) new function prototype;
	(xml_err_top_level_s) new function prototype;
	(xml_err_elem_undefined_s) new function prototype;
	(xml_err_attr_undefined_s) new function prototype.

	* files.make:
	new files added: plugin.c, ejudge_plugin.h;
	xml_utils/err_attr_undefined_s.c, xml_utils/err_elem_undefined_s.c,
	xml_utils/err_top_level_s.c,
	xml_utils/err_get_elem_name.c, xml_utils/err_get_attr_name.c.

	* userlist_xml.c:
	(userlist_parse_user_str) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec';
	(userlist_parse_contests_str) the same as above;
	(userlist_parse) the same as above;
	(userlist_parse_str) the same as above.

	* contests.c:
	(parse_one_contest_xml) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec'.

	* testing_report_xml.c:
	(testing_report_parse_xml) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec'.

	* team_extra_xml.c:
	(team_extra_parse_xml) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec'.

	* serve-control.c, users.c, register.c:
	(parse_config) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec'.

	* runlog_xml.c:
	(parse_runlog_xml) initialization of `xml_err_elem_names' and
	  `xml_err_attr_names' is replaced with initialization of
	  `xml_err_spec'.

2006-08-04 (r3225) Alexander Chernov  <cher@ispras.ru>

	* plugin.c, ejudge_plugin.h:
	initial revision

2006-08-03 (r3224) Alexander Chernov  <cher@ispras.ru>

	* contest_tmpl.c, userlist-server.c, job-server.c, super-serve.c, clean-users.c, super_html.c, serve-cmd.c, super_html.h, files.make, edit-userlist.c, collect-emails.c, prepare.c, super_html_2.c, prepare.h, super_html_3.c, slice-userlist.c:
	files renamed: userlist_cfg.[ch] -> ejudge_cfg.[ch];
	also structures and functions with prefix `userlist_cfg' are
	renamed to `ejudge_cfg'.

2006-08-03 (r3223) Alexander Chernov  <cher@ispras.ru>

	* Makefile.unix.in: rules for plugins/mysql_userlist are fixed.

2006-08-03 (r3221) Alexander Chernov  <cher@ispras.ru>

	* ejudge_cfg.h: renamed from userlist_cfg.h.

	* ejudge_cfg.c: renamed from userlist_cfg.c.

2006-08-03 (r3218) Alexander Chernov  <cher@ispras.ru>

	* super_serve.c:
	(acquire_contest_resources) `var' directory is created regardless of
	  `serve' exit status;
	* serve.c:
	(create_symlinks) error during creation of symlinks is reported, but
	  ignored;
	(main) `current_time' variable is initialized early to avoid
	  failed assertions;

	* super_html_3.c:
	(recompile_checker) error is reported, when no executable checker exist
	  and it cannot be recompiled.

2006-07-09 (r3215) Alexander Chernov  <cher@ispras.ru>

	* expat_iface.h:
	(xml_tree_free_attrs) new function prototype.

	* userlist_cfg.c:
	(parse_capabilities) bug is fixed.

	* userlist_xml.c:
	(userlist_free_attrs) new function to free the attribute lists;
	(string_to_enum) new function to convert the string value to
	  enumeration;
	(parse_priv_level_attr) new function;
	(parse_password_method_attr) new function;
	(parse_reg_status_attr) new function;
	(parse_contestant_status_elem) new function;
	(parse_passwd) `parse_password_method_attr' is used;
	  the attribute memory is freed after;
	(parse_cookies) the attributes memory is freed;
	  `parse_priv_level_attr' is used;
	(parse_members) the code is simplified by using an offset table
	  for leaf elements;
	  `parse_contestant_status_elem' is used;
	  unnesessary memory is freed;
	(parse_contest) `parse_reg_status_attr' is used;
	  unnesessary memory is freed;
	(parse_cntsinfo) the code is simplified by using an offset table
	  for leaf elements;
	  unnesessary memory is freed;
	(do_parse_user) the code is simplified by using an offset table
	  for leaf elements;
	  unnesessary memory is freed;
	(unparse_member) the offset table is used;
	(unparse_cntsinfo) the offset table is used.

	* expat_iface.c:
	(xml_tree_free_attrs) new function;
	(xml_tree_free) `xml_tree_free_attrs' is used.

2006-07-09 (r3214) Alexander Chernov  <cher@ispras.ru>

	* files.make: xml_utils/attr_bool_byte.c is added.

	* register.c: "xml_utils.h" is included;
	XML parsing uses functions from "xml_utils.h" instead of static
	functions in the module, which are removed;
	(err_dupl_elem) removed;
	(err_attr_not_allowed) removed;
	(err_empty_elem) removed;
	(err_nested_not_allowed) removed;
	(err_invalid_elem) removed;
	(handle_final_tag) removed;
	(parse_bool) removed;
	(parse_config) XML parsing is updated;
	(unparse_bool) removed;
	(do_make_user_xml) XML unparsing is updated.

	* users.c: "xml_utils.h" is included;
	XML parsing uses functions from "xml_utils.h" instead of static
	functions in the module, which are removed;
	(err_dupl_elem) removed;
	(err_attr_not_allowed) removed;
	(err_empty_elem) removed;
	(err_nested_not_allowed) removed;
	(err_invalid_elem) removed;
	(handle_final_tag) removed;
	(parse_bool) removed;
	(parse_config) XML parsing is updated.

	* team_extra_xml.c:
	XML parsing is cleaned up;
	(check_empty_text) removed;
	(parse_viewed_clars) XML parsing is updated;
	(parse_warnings) XML parsing updated;
	(team_extra_parse_xml) XML parsing is updated.

	* contests.c: "xml_utils.h" is included;
	XML parsing uses functions from "xml_utils.h" instead of static
	functions in the module, which are removed;
	(parse_date) removed;
	(parse_bool) removed;
	(parse_access) XML parsing is updated;
	(parse_member) XML parsing is updated;
	(parse_capabilities) XML parsing is updated;
	(parse_client_flags) XML parsing is updated;
	(parse_contest) the code is simplified due to use of offset tables
	  instead of switch.

	* userlist_cfg.c: "xml_utils.h" is included;
	XML parsing uses functions from "xml_utils.h" instead of static
	functions in the module, which are removed;
	(err_dupl_elem) removed;
	(err_text_not_allowed) removed;
	(err_attr_not_allowed) removed;
	(err_empty_elem) removed;
	(err_nested_not_allowed) removed;
	(err_invalid_elem) removed;
	(err_invalid_attr) removed;
	(handle_final_tag) removed;
	(parse_bool) removed;
	(parse_user_map) XML parsing is updated;
	(parse_capabilities) XML parsing is updated;
	(userlist_cfg_parse) XML parsing is updated;
	  the code is simplified due to use of offset tables instead of
	  switch.

	* runlog_xml.c:
	XML parsing uses functions from "xml_utils.h" instead of static
	functions in the module, which are removed;
	(check_empty_text) removed;
	(parse_ip) removed;
	(parse_bool) removed;
	(process_run_elements) XML parsing (mostly error reporting)
	  is updated;
	(process_runlog_element) XML error reporting is updated;
	(parse_runlog_xml) XML parsing is updated.

2006-07-07 (r3213) Alexander Chernov  <cher@ispras.ru>

	* xml_utils.h:
	(xml_attr_bool_byte) new function prototype.

2006-07-06 (r3211) Alexander Chernov  <cher@ispras.ru>

	* expat_iface.c:
	(start_hnd) support for generic XML tree building is implemented;
	(xml_tree_free) support for freeing generic XML elements is
	  implemented.

2006-07-06 (r3210) Alexander Chernov  <cher@ispras.ru>

	* expat_iface.h:
	(struct xml_attr) the structure size is decreasing by changing
	  `tag' and `column' field types from `int' to `unsigned short';
	  the structure size on ia32 decreased from 24 to 20 bytes;
	  field `name' is added for future generic XML tree building;
	(struct xml_tree) the structure size is decreasing by changing
	  `tag' and `column' field types from `int' to `unsigned short';
	  the structure size on ia32 decreased from 44 to 40 bytes;
	  field `name' is added for future generic XML tree building;
	(struct xml_parse_spec) a new structure to pass all necessary
	  for XML parsing tables and function pointers in it instead of
	  passing them as parameters;
	(xml_build_tree) `spec' parameter is passed instead of
	  `tag_map', `attr_map', `tag_alloc', `attr_alloc' parameters;
	(xml_build_tree_str) the same as above;
	(xml_build_tree_file) new function, which parses XML from a
	  specified `FILE *' stream;
	(xml_tree_free) `spec' parameter is passed instead of
	  `tag_free', `attr_free' parameters;
	(xml_elem_alloc) new function prototype;
	(xml_attr_alloc) new function prototype.

	* expat_iface.c:
	(struct parser_data) field `spec' is added - the reference to the
	  parsing specification - instead of `tag_map', `attr_map',
	  `alloc_tag_func', `alloc_attr_func' fields;
	(start_hnd) `spec' is used instead of old fields, also support
	  for generic XML tree build is partially implemented;
	(generic_elem_alloc) renamed from `generic_tag_alloc',
	  also `sizes' parameter is added, which is the array of element
	  sizes;
	(generic_attr_alloc) `sizes' parameter is added;
	(xml_elem_alloc) new function, which is a wrapper for
	  `generic_elem_alloc';
	(xml_attr_alloc) new function, which is a wrapper for
	  `generic_attr_alloc';
	(xml_build_tree) `spec' parameter is passed instead of
	  `tag_map', `attr_map', `tag_alloc', `attr_alloc' parameters;
	(xml_build_tree_str) the same as above;
	(xml_build_tree_file) new function, which parses XML from a
	  specified `FILE *' stream;
	(xml_tree_free) `spec' parameter is passed instead of
	  `tag_free', `attr_free' parameters.

	* register.c, users.c, serve-control.c:
	configuration parsing is updated according to the new
	XML parsing interface.

	* team_extra_xml.c, contests.c, testing_report_xml.c, userlist_cfg.c, userlist_xml.c, runlog_xml.c:
	XML parsing is updated according to the new interface.

2006-07-06 (r3209) Alexander Chernov  <cher@ispras.ru>

	* register.c, contests.c, userlist_cfg.c, userlist_xml.c, serve-control.c, expat_iface.c, expat_iface.h, xml_utils.h, runlog_xml.c:
	`struct xml_attn' -> `struct xml_attr'.

	* users.c, team_extra_xml.c:
	copyright notice is updated;
	`struct xml_attn' -> `struct xml_attr'.

	* contests.h: CONTEST_LAST_ATTN -> CONTEST_LAST_ATTR.

	* files.make: uldb_plugin.h is added;
	plugins/mysql-userlist/uldb_mysql.c is added.

2006-07-06 (r3206) Alexander Chernov  <cher@ispras.ru>

	* uldb_plugin.h: initial revision.

2006-07-06 (r3203) Alexander Chernov  <cher@ispras.ru>

	* configure.ac: generation of plugins/mysql-userlist/Makefile is added.

	* Makefile.unix.in: handling of plugins/mysql-userlist dir is added.

2006-07-06 (r3201) Alexander Chernov  <cher@ispras.ru>

	* configure.ac: check for MySQL is added;
	new option --with-mysql=MYSQL-DIR is added.

	* cher-configure: added --with-mysql=/usr/local/pkg/mysql.

	* config.h.in: added CONF_HAS_MYSQL macro.

2006-07-06 (r3200) Alexander Chernov  <cher@ispras.ru>

	* plugins:
	initial revision

2006-07-01 (r3195) Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(parse_version_string) added support for SVN snapshots.

	* userlist-server.c:
	(find_member_by_serial) parameter `copied_from' is added and is
	  used for finding a member;
	(do_set_user_info) `cnts_read_only' field is supported;
	  fixed situation, when a member's serial from the client does not
	  match the member's serial of the server because of the
	  contest-specific user information is cloned;
	(cmd_remove_member) `cnts_read_only' field is supported;
	  member serial mismatch situation (see above) is fixed.

2006-06-30 (r3193) Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(parse_version_string) a temporary hack for SVN snapshots.

2006-06-29 (r3191) Alexander Chernov  <cher@ispras.ru>

	* clarlog.c:
	(create_new_clar_log) minor 64-bit warning is fixed.

2006-06-29 (r3190) Alexander Chernov  <cher@ispras.ru>

	* configure: although this file is generated from `configure.ac'
	  by autoconf, it is put under version control to ease using
	  of the current SVN copy of the ejudge.

2006-06-29 (r3188) Alexander Chernov  <cher@ispras.ru>

	* userlist.h:
	attributes "create", "copied_from" are added;
	USERLIST_NN_CREATE_TIME is added;
	USERLIST_NM_COPIED_FROM is added;
	(struct userlist_member) `copied_from' field is added.

	* edit-userlist.c:
	editing of `create_time' field of `struct userlist_cntsinfo'
	is implemented;
	editing of `copied_from' field of `struct userlist_member'
	is implemented.

	* userlist.c:
	(userlist_get_member_field_str) `copied_from' field is supported;
	(userlist_delete_member_field) the same as above;
	(userlist_set_member_field_str) the same is above;
	(userlist_get_user_field_str) `create_time' field is supported;
	(userlist_delete_user_field) the same as above;
	(userlist_clone_member) `copied_from' is filled from `serial'
	  of the source `struct userlist_member'.

	* userlist-server.c:
	(find_member_by_serial) `copied_from' is used for search as well
	  as `serial';
	(cmd_edit_field) `userlist_clone_user_info' is called.

	* userlist_xml.c:
	(parse_members) "copied_from", "create", "last_change",
	  "last_access" attributes are supported;
	(parse_cntsinfo) "create" attribute is supported;
	(unparse_member) "copied_from", "create", "last_change",
	  "last_access" attributes are supported;
	(unparse_cntsinfo) "create" attribute is supported;
	(unparse_user) check that cntsinfo exists is fixed.

2006-06-28 (r3187) Alexander Chernov  <cher@ispras.ru>

	* userlist.h:
	(struct userlist_member) new fields `create_time', `last_change_time',
	  `last_access_time' are added;
	(struct userlist_user_info) new field `create_time' is added;
	(userlist_unparse_user) `contest_id' parameter is added;
	(userlist_get_user_field_str) `ui' parameter is added;
	(userlist_set_user_field_str) `ui' parameter is added;
	(userlist_delete_user_field) `ui' parameter is added;
	(userlist_expand_cntsinfo) new function prototype;
	(userlist_clone_member) new function prototype;
	(userlist_clone_user_info) new function prototype;
	(userlist_new_cntsinfo) new function prototype;
	(userlist_get_user_info) new function prototype.

	* userlist.c: "ej_limits.h" is included;
	(userlist_get_user_field_str) new parameter `ui' is added to pass
	  the contest-specific user information pointer;
	  support for contest-specific user information is implemented;
	(userlist_set_user_field_str) new parameter `ui' is added;
	  support for contest-specific user information is implemented;
	(userlist_delete_user_field) new parameter `ui' is added;
	  support for contest-specific user information is implemented;
	(userlist_expand_cntsinfo) new function;
	(copy_field) new static function;
	(userlist_clone_member) new function;
	(userlist_clone_user_info) new function;
	(userlist_new_cntsinfo) new function;
	(userlist_get_user_info) new function.

	* edit-userlist.c:
	(user_menu_string) call of `userlist_get_user_field_str' is updated;
	(display_user) call of `userlist_set_user_field_str' is updated.

	* userlist-server.c:
	support for contest-specific user information is basically
	  implemented.

	* userlist_xml.c:
	(parse_cntsinfo) `userlist_expand_cntsinfo' is used;
	(unparse_user_short) support for contest-specific user info is
	  implemented;
	(unparse_user) support for contest-specific user info is implemented;
	(userlist_unparse_user) `contest_id' parameter is added.

	* sformat.c:
	(sformat_message) support for contest-specific user info is
	  implemented.

2006-06-28 (r3186) Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h:
	(struct userlist_pk_get_uid_by_pid) field `contest_id' is added.

	* userlist_clnt.h:
	(userlist_clnt_get_uid_by_pid) parameter `contest_id' is added;
	(userlist_clnt_get_uid_by_pid_2) parameter `contest_id' is added.

	* teamdb.h: copyright notice is updated;
	(teamdb_get_uid_by_pid) parameter `contest_id' is added.

	* super-serve.c:
	(get_peer_local_user) call of `userlist_clnt_get_uid_by_pid_2'
	  is updated.

	* teamdb.c:
	(teamdb_get_uid_by_pid) parameter `contest_id' is added;
	  `contest_id' is passed to `userlist_clnt_get_uid_by_pid'.

	* serve.c:
	(get_peer_local_user) call of `teamdb_get_uid_by_pid' is updated.

2006-06-26 (r3184) Alexander Chernov  <cher@ispras.ru>

	* userlist.h:
	(struct userlist_user_info) new structure, which contains all the
	  contest-specific fields of the user information;
	(struct userlist_cntsinfo) new field `i' for contest-specific
	  information;
	(struct userlist_user) all contest-specific information is moved
	  to field `i' of type `struct userlist_user_info',
	  basically, this means, that all the contest-specific fields
	  should be accessing using `i' field name, for example:
	  location -> i.location.

	* clean_users.c, register.c, serve.c, userlist.c, super_html_3.c, edit-userlist.c, userlist-server.c, userlist_xml.c, sformat.c:
	names of contest-specific fields are changed:
	  name -> i.name,
	  team_passwd -> i.team_passwd,
	  members -> i.members,
	  inst -> i.inst,
	  etc (see the comment above for userlist.h).

	* printing.c, teamdb.c:
	copyright notice is updated;
	names of contest-specific fields are changed:
	  name -> i.name,
	  team_passwd -> i.team_passwd,
	  members -> i.members,
	  inst -> i.inst,
	  etc (see the comment above for userlist.h).

2006-06-26 (r3183) Alexander Chernov  <cher@ispras.ru>

	* files.make: `parse_int_attr.c' is renamed to `attr_int.c'.

	* testing_report_xml.c: copyright notice is updated;
	(parse_test) calls of `xml_parse_int_attr' are updated to calls
	  of `xml_attr_int';
	(parse_testing_report) the same as above.

	* userlist_xml.c:
	(parse_cntsinfo) calls of `xml_parse_int_attr' are updated to calls
	  of `xml_attr_int'.

	* xml_utils.h:
	(xml_attr_int) renamed from `xml_parse_int_attr'.

2006-06-26 (r3181) Alexander Chernov  <cher@ispras.ru>

	* userlist_xml.c: "ej_limits.h" is included;
	(parse_members) the 3rd argument type is changed for more
	  generality;
	(parse_cntsinfo) new function;
	(parse_cntsinfos) new function;
	(do_parse_user) call of `parse_members' is updated;
	  handling of <cntsinfos> element is added;
	(unparse_bool_attr) new function;
	(unparse_date_attr) new function;
	(unparse_cntsinfo) new function;
	(unparse_user_short) support for contest-specific info is added;
	(unparse_user) partial support for contest-specific info is
	  implemented;
	(userlist_unparse) call of `unparse_user' is changed.

2006-06-25 (r3180) Alexander Chernov  <cher@ispras.ru>

	* files.make: xml_utils/attr_date.c is added.

	* xml_utils.h:
	(xml_attr_date) prototype is added.

2006-06-25 (r3177) Alexander Chernov  <cher@ispras.ru>

	* userlist.h:
	USERLIST_NN_USE_COOKIES is removed;
	(struct userlist_user) `default_use_cookies' field is removed.

	* userlist_clnt.h:
	(userlist_clnt_register_new) `use_cookies' parameter is removed;
	(userlist_clnt_register_new_2) `use_cookies' parameter is removed;
	(userlist_clnt_login) `use_cookies' parameter is removed;
	(userlist_clnt_team_login) `use_cookies' parameter is removed;
	(userlist_clnt_priv_login) `use_cookies' parameter is removed.

	* userlist_proto.h:
	(struct userlist_pk_register_new) `use_cookies' field is removed;
	(struct userlist_pk_do_login) `use_cookies' field is removed.

	* userlist.c:
	(userlist_get_user_field_str) operation with `default_use_cookies'
	  field is removed;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* register.c:
	(action_register_new_user) calls of `userlist_clnt_register_new',
	  `userlist_clnt_register_new' are updated;
	(action_login) call of `userlist_clnt_login' is updated.

	* master.c:
	(authentificate) call of `userlist_clnt_priv_login' is updated;

	* team.c:
	(authentificate) call of `userlist_clnt_team_login' is updated.

	* serve-cmd.c:
	(handle_login) call of `userlist_clnt_priv_login' is updated;
	(handle_team_login) call of `userlist_clnt_login' is updated.

	* edit-userlist.c:
	support for `default_use_cookies' field is removed.

	* userlist-server.c:
	(cmd_register_new_2) `default_use_cookies' field is removed;
	(cmd_register_new) `default_use_cookies' field is removed;
	(cmd_do_login) `default_use_cookies', `use_cookies' fields are removed;
	(cmd_team_login) the same as above;
	(cmd_priv_login) the same as above.

	* userlist_xml.c:
	(do_parse_user) `default_use_cookies' field is removed;
	  "use_cookies" attribute is supported for compatibility, but its
	  value is ignored;
	(unparse_user) `default_use_cookies' field is removed.

	* serve-control.c:
	(authentificate) call of `userlist_clnt_priv_login' is updated.

2006-06-25 (r3173) Alexander Chernov  <cher@ispras.ru>

	* files.make: NEWS, NEWS.RUS are removed.

2006-06-25 (r3171) Alexander Chernov  <cher@ispras.ru>

	* files.make: xml_utils/parse_bool.c is added.

	* userlist.c: "xml_utils.h" is included;
	(userlist_parse_date) removed, `xml_parse_date' is used instead;
	(userlist_unparse_bool) removed, `xml_unparse_bool' is used instead;
	(userlist_unparse_date) return type is "const"-qualified now;
	(userlist_parse_bool) removed, `xml_parse_bool' is used instead;
	(userlist_get_user_field_str) `xml_unparse_bool' is used instead of
	  `userlist_unparse_bool';
	(userlist_set_user_field_str) `xml_parse_bool' is used instead of
	  `userlist_parse_bool'.

	* userlist.h:
	(userlist_parse_date) removed;
	(userlist_parse_bool) removed;
	(userlist_unparse_ip) removed;
	(userlist_unparse_bool) removed;
	(userlist_unparse_date) "const" added to the return type.

	* edit-userlist.c: "xml_utils.h" is included;
	(display_user) `xml_parse_bool' is used instead of
	  `userlist_parse_bool';
	  `xml_unparse_bool' is used instead of `userlist_unparse_bool'.

	* xml_utils.h:
	(xml_parse_bool) prototype is added.

2006-06-25 (r3168) Alexander Chernov  <cher@ispras.ru>

	* userlist.c:
	(userlist_get_user_field_str) support for `cnts_read_only' field
	  is implemented;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h:
	<cntsinfos>, <cntsinfo> elements are added;
	"cnts_read_only" attribute is added;
	USERLIST_NN_CNTS_READ_ONLY is added;
	(struct userlist_cntsinfo) new structure to store contest-specific
	  user information;
	(struct userlist_user) new field `cnts_read_only';
	  new fields `cntsinfo_a', `cntsinfo';
	  fields are reordered.

	* edit-userlist.c:
	support for editing `cnts_read_only' field is implemented.

	* userlist_xml.c:
	(do_parse_user) "cnts_read_only" attribute is supported;
	(unparse_user) "cnts_read_only" attribute is supported.

2006-06-25 (r3166) Alexander Chernov  <cher@ispras.ru>

	* clean_users.c:
	(main) call of `userlist_clnt_delete_field' is updated.

	* register.c:
	(read_user_info_from_server) call of `userlist_clnt_get_info'
	  is updated;
	(action_remove_member) call of `userlist_clnt_remove_member'
	  is updated.

	* userlist_proto.h:
	(struct userlist_pk_get_user_info) field `contest_id' is added;
	(struct userlist_pk_remove_member) field `contest_id' is added;
	(struct userlist_pk_edit_field) field `contest_id' is added.

	* edit_userlist.c:
	(display_user) `contest_id' parameter is added;
	  `contest_id' is passed to all used userlist_clnt_* functions;
	(display_registered_users) `contest_id' is passed to all used
	  userlist_clnt_* functions;
	  call of `display_user' is updated;
	(do_display_user_menu) 0 is passed as the `contest_id' to all
	  used userlist_clnt_* functions.

	* userlist_clnt.h:
	(userlist_clnt_get_info) `contest_id' parameter is added;
	(userlist_clnt_remove_member) `contest_id' parameter is added;
	(userlist_clnt_edit_field) `contest_id' parameter is added;
	(userlist_clnt_delete_field) `contest_id' parameter is added;
	(userlist_clnt_add_field)  `contest_id' parameter is added.

2006-06-24 (r3162) Alexander Chernov  <cher@ispras.ru>

	* files.make: new files are added:
	  xml_utils/err_elem_empty.c,  xml_utils/err_elem_invalid.c,
	   xml_utils/unparse_bool.c.

	* xml_utils.h: copyright notice is updated;
	(xml_unparse_bool) new function prototype;
	(xml_err_elem_empty) new function prototype;
	(xml_err_elem_invalid) new function prototype;
	(xml_err_attrs) return type is changed to `int';
	(xml_err_nested_elems) return type is changed to `int';
	(xml_err_attr_not_allowed) return type is changed to `int';
	(xml_err_elem_not_allowed) return type is changed to `int';
	(xml_err_elem_redefined) return type is changed to `int';
	(xml_err_top_level) return type is changed to `int';
	(xml_err_attr_invalid) return type is changed to `int';
	(xml_err_elem_undefined) return type is changed to `int';
	(xml_err_attr_undefined) return type is changed to `int'.

	* userlist_xml.h: "xml_utils.h" is included;
	support for <cntsinfos> and <cntsinfo> element is added
	  to parse tables;
	(parse_int) function removed, xml_parse_int is used instead;
	(parse_ip) function is removed, xml_parse_ip is used;
	(parse_date) function is removed, xml_parse_date is used;
	(parse_bool) function is removed, xml_attr_bool is used instead;
	(invalid_tag) function is removed, xml_err_elem_not_allowed is used;
	(invalid_tag_value) function is removed, xml_err_elem_invalid is used;
	(duplicated_tag) function is removed, xml_err_elem_redefined is used;
	(undefined_tag) removed, xml_err_elem_undefined is used instead;
	(empty_tag) removed, xml_err_elem_empty is used instead;
	(nested_tag) removed, xml_err_nested_elems is used instead;
	(no_text) removed, xml_err_elem_empty is used;
	(no_attr) removed, xml_err_attrs is used;
	(invalid_attn) removed, xml_err_attr_not_allowed is used;
	(invalid_attn_value) removed, xml_err_attr_invalid is used;
	(duplicated_attn) removed;
	(undefined_attn) removed, xml_err_attr_undefined is used;
	(handle_final_tag) removed, xml_leaf_elem is used;
	(parse_passwd) updates according to function renamings described
	  above;
	(parse_cookies) the same as above;
	(parse_members) the same as above;
	(parse_contest) the same as above;
	(do_parse_user) the same as above;
	(do_parse_userlist) the same as above;
	(userlist_parse_user_str) the global variables for `xml_err_*'
	  functions are set up before parsing;
	(userlist_parse_contests_str) the same as above;
	(userlist_parse) the same as above;
	(userlist_parse_str) the same as above;
	(unparse_date) removed, xml_unparse_date is used instead;
	(unparse_bool) removed, xml_unparse_bool is used;
	(userlist_unparse_ip) removed, xml_unparse_ip is used;
	(unparse_final_tag) removed, xml_unparse_text is used;
	(unparse_member) updates according to function renamings as
	  described above;
	(unparse_cookies) the same as above;
	(unparse_user_short) the same as above;
	(unparse_user) the same as above.

2006-06-21 (r3159) Alexander Chernov  <cher@ispras.ru>

	* runlog_xml.c:
	(unparse_runlog_xml) missing <users> element is printed.

2006-06-10 (r3156) Alexander Chernov  <cher@ispras.ru>

	* Makefile.unix.in:
	Transition from CVS to SVN.

2006-06-10 (r3155) Alexander Chernov  <cher@ispras.ru>

	* VERSION:
	Version is 2.3.

2006-06-09  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	new global configuration variables are added:
	  external_xml_update_time, internal_xml_update_time.

	* prepare.h:
	(struct section_global_data) new fields are added:
	  `internal_xml_update_time', `external_xml_update_time'.

	* prepare_out.c:
	(prepare_unparse_global) `external_xml_update_time',
	  `internal_xml_update_time' are unparsed.

	* runlog.c:
	(run_write_xml) parameter `current_time' is added;
	  call of `unparse_runlog_xml' is updated.

	* runlog.h:
	(run_write_xml) parameter `current_time' is added;
	(unparse_runlog_xml) parameters `phead', `entries' are declared
	  constant pointers;
	  parameter `current_time' is added.

	* runlog_xml.c:
	copyright notice is updated;
	"contests.h", "xml_utils.h" are included;
	XML element <name> is supported;
	XML attributes "contest_id", "duration", "start_time",
	  "stop_time", "current_time" are supported;
	(process_runlog_element) attributes of the <runlog> element are
	  ignored;
	(unparse_runlog_xml) parameters `phead', `entries' are declared
	  constant pointers;
	  new parameter `current_time' is added;
	  attributes "contest_id", "duration", "start_time", "stop_time",
	  "current_time" of the <runlog> element are generated;
	  element <name> is generated.

	* serve.c:
	(do_update_xml_log) new function to generate XML run logs;
	(update_external_xml_log) new function to update the external
	  XML run log periodically;
	(update_internal_xml_log) new function to update the internal
	  XML run log periodically;
	(cmd_view) call of `run_write_xml' is updated;
	(do_loop) calls of `update_external_xml_log',
	  `update_internal_xml_log' are added.

	* serve-control.c:
	(main) new actions are handled:
	  SUPER_ACTION_GLOB_CHANGE_EXTERNAL_XML_UPDATE_TIME,
	  SUPER_ACTION_GLOB_CHANGE_INTERNAL_XML_UPDATE_TIME.

	* super-serve.c:
	(cmd_set_value) new commands are handled:
	  SSERV_CMD_GLOB_CHANGE_EXTERNAL_XML_UPDATE_TIME,
	  SSERV_CMD_GLOB_CHANGE_INTERNAL_XML_UPDATE_TIME.

	* super_actions.h:
	new actions are added:
	  SUPER_ACTION_GLOB_CHANGE_EXTERNAL_XML_UPDATE_TIME,
	  SUPER_ACTION_GLOB_CHANGE_INTERNAL_XML_UPDATE_TIME.

	* super_html_3.c:
	(super_html_edit_global_parameters) editing of the new global
	  configuration variables `external_xml_update_time',
	  `internal_xml_update_time' is supported;
	(super_html_global_param) changing the values of the new global
	  configuration variables `external_xml_update_time',
	  `internal_xml_update_time' is supported.

	* super_proto.h:
	new commands added: SSERV_CMD_GLOB_CHANGE_EXTERNAL_XML_UPDATE_TIME,
	SSERV_CMD_GLOB_CHANGE_INTERNAL_XML_UPDATE_TIME.

2006-06-05  Alexander Chernov  <cher@ispras.ru>

	* configure.ac:
	txt, txt-version script support is added.

	* ejudge-setup.c:
	(generate_compile_cfg) support for the plain text "language" is
	  added.

	* run.c:
	(run_tests) no_redirect works correctly in managed mode.

2006-06-02  Alexander Chernov  <cher@ispras.ru>

	* prepare_out.c:
	(prepare_unparse_prob) `disable_language' is handled;
	(prepare_unparse_unhandled_prob) `disable_language' is no longer
	  handled.

	* serve-control.c:
	editing of `disable_language' is supported.

	* super-serve.c:
	(cmd_set_value) editing of `disable_language' is supported.

	* super_actions.h:
	new actions SUPER_ACTION_PROB_CHANGE_DISABLE_LANGUAGE,
	  SUPER_ACTION_PROB_CLEAR_DISABLE_LANGUAGE are added.

	* super_html_3.c:
	(super_html_print_problem) editing of `disable_language' added;
	(super_html_prob_param) editing of `disable_language' added.

	* super_proto.h:
	SSERV_CMD_PROB_CHANGE_DISABLE_LANGUAGE,
	SSERV_CMD_PROB_CLEAR_DISABLE_LANGUAGE are added.

	* compile_packet_priv.h:
	(struct compile_request_bin_packet) invalid padding is fixed.

	* prepare.c:
	scoring_checker problem configuration variable is added and supported.

	* prepare.h:
	(struct section_problem_data) `scoring_checker' field is added;
	PREPARE_FIELD_PROB_SCORING_CHECKER is added.

	* prepare_out.c:
	`scoring_checker' problem configuration variable is supported.

	* run.c:
	<ctype.h> is included;
	(struct testinfo) `checker_score' field is added;
	(read_checker_score) new function to read and parse the test score
	  from the checker output in `scoring_checker' mode;
	(run_tests) `scoring_checker' mode is supported;
	(check_config) `scoring_checker' mode is supported.

	* serve-control.c:
	SUPER_ACTION_PROB_CHANGE_SCORING_CHECKER handled.

	* super-serve.c:
	SSERV_CMD_PROB_CHANGE_SCORING_CHECKER handled.

	* super_actions.h:
	SUPER_ACTION_PROB_CHANGE_SCORING_CHECKER added.

	* super_html_3.c:
	(super_html_print_problem) `scoring_checker' variable is supported;
	(super_html_prob_cmd) the same as above;
	(super_html_prob_param) the same as above;
	(super_html_check_tests) the same as above.

	* super_proto.h:
	SSERV_CMD_PROB_CHANGE_SCORING_CHECKER added.

2006-06-01  Alexander Chernov  <cher@ispras.ru>

	* compile.c:
	copyright notice is updated;
	(do_loop) "output-only" problems are supported.

	* compile_packet.h:
	copyright notice is updated;
	(struct compile_request_packet) `output_only' field is added.

	* compile_packet_1.c, compile_packet_2.c:
	copyright notice is updated;
	`output_only' field is supported.

	* compile_packet_priv.h:
	copyright notice is updated;
	(struct compile_request_bin_packet) `output_only' field is added.

	* prepare.c, prepare_out.c:
	"output_only" problem configuration variable is handled.

	* prepare.h:
	(struct section_problem_data) `output_only' field is added;
	PREPARE_FIELD_PROB_OUTPUT_ONLY is added.

	* run.c:
	(run_tests) "output-only" problems are supported;
	(check_config) output-only problems must have 1 test.

	* serve-control.c:
	SUPER_ACTION_PROB_CHANGE_OUTPUT_ONLY is handled.

	* serve.c:
	(queue_compile_request) `output_only' parameter is added;
	(cmd_priv_submit_run) output-only problems are supported;
	(do_submit_run) the same as above;
	(rejudge_run) the same as above.

	* super-serve.c:
	(cmd_set_value) SSERV_CMD_PROB_CHANGE_OUTPUT_ONLY is handled.

	* super_actions.h:
	SUPER_ACTION_PROB_CHANGE_OUTPUT_ONLY added.

	* super_html_3.c:
	(super_html_print_problem) `output_only' problem configuration variable
	  is supported;
	(super_html_prob_param) the same as above.
	(super_html_check_tests) "output-only" problems must have 1 test.

	* super_proto.h:
	SSERV_CMD_PROB_CHANGE_OUTPUT_ONLY added.

	* clarlog.c:
	(struct clar_entry_v1) field `hide_flag' is added;
	(clar_add_record) `hide_flag' parameter is added;
	(clar_get_record) `p_hide_flag' parameter is added.

	* clarlog.h:
	(clar_add_record) `hide_flag' parameter is added;
	(clar_get_record) `hide_flag' parameter is added.

	* clean-users.c:
	(main) call of `clar_get_record' is updated.

	* html.c:
	(count_unread_clars) `start_time' parameter is added;
	  support for `hide_flag' of the message is implemented;
	(new_write_user_clars) the same;
	(new_write_user_clar) the same;
	(write_team_page) call of `count_unread_clars' updated.

	* master.c:
	(send_msg_if_asked) "hide_flag" parameter of the clarifications
	  is handled;
	(send_reply_if_asked) call of `serve_clnt_message' is updated;
	(main) the "hide_flag" select dialog is added.

	* master_html.c:
	(write_all_clars) call of `clar_get_record' is updated;
	  the "hidden" clars are marked with '#' at the clar id field;
	(write_priv_clar) call of `clar_get_record' is updated;
	  the "hidden" flag is printed;
	(generate_daily_statistics) call of `clar_get_record' is updated.

	* protocol.h:
	(struct prot_serve_pkt_submit_clar) `hide_flag' field is added.

	* serve.c:
	(cmd_view) call of `clar_get_record' is updated;
	(cmd_message) `hide_flag' parameter of the incoming packet is handled;
	(cmd_team_submit_clar) call of `clar_add_record' is updated.

	* serve_clnt.h:
	copyright notice is updated;
	(serve_clnt_message) `hide_flag' parameter is added.

2006-05-09  Alexander Chernov  <cher@ispras.ru>

	* configure.ac:
	checkers library now have win32 and unix version Makefile.

2006-05-07  Alexander Chernov  <cher@ispras.ru>

	* prepare_out.c:
	(prepare_unparse_prob) `acm_run_penalty' is unparsed correctly.

	* files.make:
	execute.c is added.

	* configure.ac:
	checks for new reuse functions `task_EnableSecureExec',
	  `task_SetQuietFlag', `task_GetErrorMessage' are added.

	* config.h.in:
	macros for new reuse features are added.

	* Makefile.unix.in:
	rules for new program `execute' are added.

	* execute.c:
	initial revision

2006-04-30  Alexander Chernov  <cher@ispras.ru>

	* contests.c:
	new element <main_url> and new attribute "send_passwd_email"
	  are supported.

	* contests.h:
	(struct contest_desc) new fields `send_passwd_email',
	  `main_url' are added.

	* edit-userlist.c:
	copyright notice is updated;
	editing of "simple_registration' attribute is supported.

	* ejudge-setup.c:
	(initialize_setting_var) <server_name>, <server_name_en>,
	  <server_main_url> are initialized to some reasonable values;
	(is_valid_setting_var) <server_name>, <server_name_en>,
	  <server_main_url> elements are supported;
	(do_settings_menu) the same as above;
	(generate_ejudge_xml) the same as above.

	* html.c:
	(write_user_problems_summary) minor fix in column generation;
	(new_write_user_runs) if the language is marked as `binary' and
	  source viewing is enabled, the "binary" option is set for
	  source viewing;
	(new_write_user_source_view) viewing of binary files is
	  implemented.

	* master_html.c:
	(write_raw_source) "Content-Disposition" header is generated
	  correctly in all cases.

	* prepare.c:
	new language configuration variable `content_type' is added.

	* prepare.h:
	(struct section_language_data) `content_type' field is added.

	* prepare_out.c:
	(prepare_unparse_lang) `binary' and `content_type' variables
	  are handled;
	(prepare_unparse_unhandled_lang) `binary' is removed since handled
	  properly.

	* protocol.h:
	new command SRV_CMD_DUMP_SOURCE_2 is added.

	* serve-control.c:
	new actions handled:
	  SUPER_ACTION_CNTS_CHANGE_MAIN_URL,
	  SUPER_ACTION_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_MAIN_URL,
	  SUPER_ACTION_LANG_CHANGE_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CLEAR_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CHANGE_BINARY.

	* serve.c:
	SRV_CMD_DUMP_SOURCE_2 command is handled.

	* sformat.c:
	copyright notice is updated;
	(sformat_message) new format conversion flag `L' is supported:
	  take a field based on the locale value;
	  new format specifications:
	    Cn - contest name
	    CN - contest name_en
	    V1 - variable data str1
	    Vn - variable data server_name
	    VN - variable data server_name_en.

	* sformat.h:
	copyright notice is updated;
	(struct sformat_extra_data) new fields added:
	  `server_name', `server_name_en', `str1'.

	* super-serve.c:
	new commands are handled:
	  SSERV_CMD_CNTS_CLEAR_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SSERV_CMD_LANG_CHANGE_CONTENT_TYPE,
	  SSERV_CMD_LANG_CLEAR_CONTENT_TYPE,
	  SSERV_CMD_LANG_CHANGE_BINARY.

	* super_actions.h:
	new actions added:
	  SUPER_ACTION_CNTS_CHANGE_MAIN_URL,
	  SUPER_ACTION_CNTS_CLEAR_MAIN_URL,
	  SUPER_ACTION_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SUPER_ACTION_LANG_CHANGE_BINARY,
	  SUPER_ACTION_LANG_CHANGE_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CLEAR_CONTENT_TYPE.

	* super_html.c:
	(super_html_contest_page) contest main URL is shown;
	(super_html_edit_contest_page) editing of `main_url' element is
	  supported;
	  editing of `simple_registration' attribute is supported.

	* super_html_2.c:
	(super_html_clear_variable) clearing of `main_url' is supported;
	(super_html_set_contest_var) changing of `main_url',
	  `send_passwd_email' is supported.

	* super_html_3.c:
	(super_html_edit_languages) `binary', `content_type' language
	  configuration variables are editable;
	(super_html_lang_cmd) `binary' and `content_type' variable values
	  are initally copied from the compilation server;
	  changing value of `binary' and `content_type' variables is
	  supported;
	(super_html_print_problem) `acm_run_penalty' generation is moved to
	  its proper place.

	* settings.h:
	copyright notice is updated;
	MAX_LANGUAGE is set to 100.

	* super_proto.h:
	new protocol commands are added:
	  SSERV_CMD_CNTS_CLEAR_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SSERV_CMD_LANG_CHANGE_BINARY,
	  SSERV_CMD_LANG_CHANGE_CONTENT_TYPE,
	  SSERV_CMD_LANG_CLEAR_CONTENT_TYPE.

	* team.c:
	(request_source_if_asked) viewing of binary submissions is
	  implemented correctly.

	* userlist-server.c:
	"job_packet.h" is included;
	<pwd.h> is included;
	(get_email_sender) new function to generate the "From" field
	  value;
	(cmd_register_new_2) `simple_registration' field of the newly
	  created user is set to 1;
	  `send_passwd_email' contest attribute is supported;
	  notification email sending is implemented;
	(cmd_register_new) the email template is changed.

	* userlist.c:
	copyright notice is updated;
	(userlist_get_user_field_str) `simple_registration' field is supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h:
	"simple_registration" attribute is added;
	(struct userlist_user) `simple_registration' field is added.

	* userlist_cfg.c:
	new elements <server_name>, <server_name_en>, <server_main_url>
	  are supported.

	* userlist_cfg.h:
	(struct userlist_cfg) new fields `server_name', `server_name_en',
	  `server_main_url' are added.

	* userlist_xml.c:
	(do_parse_user) "simple_registration" attribute is supported;
	(unparse_user) "simple_registration" attribute is supported.

	* contests.c:
	new element <main_url> and new attribute "send_passwd_email"
	  are supported.

	* contests.h: (struct contest_desc) new fields `send_passwd_email',
	  `main_url' are added.

	* edit-userlist.c: copyright notice is updated;
	editing of "simple_registration' attribute is supported.

	* ejudge-setup.c:
	(initialize_setting_var) <server_name>, <server_name_en>,
	  <server_main_url> are initialized to some reasonable values;
	(is_valid_setting_var) <server_name>, <server_name_en>,
	  <server_main_url> elements are supported;
	(do_settings_menu) the same as above;
	(generate_ejudge_xml) the same as above.

	* html.c:
	(write_user_problems_summary) minor fix in column generation;
	(new_write_user_runs) if the language is marked as `binary' and
	  source viewing is enabled, the "binary" option is set for
	  source viewing;
	(new_write_user_source_view) viewing of binary files is
	  implemented.

	* master_html.c:
	(write_raw_source) "Content-Disposition" header is generated
	  correctly in all cases.

	* prepare.c:
	new language configuration variable `content_type' is added.

	* prepare.h:
	(struct section_language_data) `content_type' field is added.

	* prepare_out.c:
	(prepare_unparse_lang) `binary' and `content_type' variables
	  are handled;
	(prepare_unparse_unhandled_lang) `binary' is removed since handled
	  properly.

	* protocol.h: new command SRV_CMD_DUMP_SOURCE_2 is added.

	* serve-control.c: new actions handled:
	  SUPER_ACTION_CNTS_CHANGE_MAIN_URL,
	  SUPER_ACTION_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_MAIN_URL,
	  SUPER_ACTION_LANG_CHANGE_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CLEAR_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CHANGE_BINARY.

	* serve.c: SRV_CMD_DUMP_SOURCE_2 command is handled.

	* sformat.c: copyright notice is updated;
	(sformat_message) new format conversion flag `L' is supported:
	  take a field based on the locale value;
	  new format specifications:
	    Cn - contest name
	    CN - contest name_en
	    V1 - variable data str1
	    Vn - variable data server_name
	    VN - variable data server_name_en.

	* sformat.h: copyright notice is updated;
	(struct sformat_extra_data) new fields added:
	  `server_name', `server_name_en', `str1'.

	* super-serve.c: new commands are handled:
	  SSERV_CMD_CNTS_CLEAR_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SSERV_CMD_LANG_CHANGE_CONTENT_TYPE,
	  SSERV_CMD_LANG_CLEAR_CONTENT_TYPE,
	  SSERV_CMD_LANG_CHANGE_BINARY.

	* super_actions.h: new actions added:
	  SUPER_ACTION_CNTS_CHANGE_MAIN_URL,
	  SUPER_ACTION_CNTS_CLEAR_MAIN_URL,
	  SUPER_ACTION_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SUPER_ACTION_LANG_CHANGE_BINARY,
	  SUPER_ACTION_LANG_CHANGE_CONTENT_TYPE,
	  SUPER_ACTION_LANG_CLEAR_CONTENT_TYPE.

	* super_html.c: (super_html_contest_page) contest main URL is shown;
	(super_html_edit_contest_page) editing of `main_url' element is
	  supported;
	  editing of `simple_registration' attribute is supported.

	* super_html_2.c:
	(super_html_clear_variable) clearing of `main_url' is supported;
	(super_html_set_contest_var) changing of `main_url',
	  `send_passwd_email' is supported.

	* super_html_3.c:
	(super_html_edit_languages) `binary', `content_type' language
	  configuration variables are editable;
	(super_html_lang_cmd) `binary' and `content_type' variable values
	  are initally copied from the compilation server;
	  changing value of `binary' and `content_type' variables is
	  supported;
	(super_html_print_problem) `acm_run_penalty' generation is moved to
	  its proper place.

	* settings.h: copyright notice is updated;
	MAX_LANGUAGE is set to 100.

	* super_proto.h: new protocol commands are added:
	  SSERV_CMD_CNTS_CLEAR_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_MAIN_URL,
	  SSERV_CMD_CNTS_CHANGE_SEND_PASSWD_EMAIL,
	  SSERV_CMD_LANG_CHANGE_BINARY,
	  SSERV_CMD_LANG_CHANGE_CONTENT_TYPE,
	  SSERV_CMD_LANG_CLEAR_CONTENT_TYPE.

	* team.c: (request_source_if_asked) viewing of binary submissions is
	  implemented correctly.

	* userlist-server.c: "job_packet.h" is included;
	<pwd.h> is included;
	(get_email_sender) new function to generate the "From" field
	  value;
	(cmd_register_new_2) `simple_registration' field of the newly
	  created user is set to 1;
	  `send_passwd_email' contest attribute is supported;
	  notification email sending is implemented;
	(cmd_register_new) the email template is changed.

	* userlist.c: copyright notice is updated;
	(userlist_get_user_field_str) `simple_registration' field is supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h: "simple_registration" attribute is added;
	(struct userlist_user) `simple_registration' field is added.

	* userlist_cfg.c:
	new elements <server_name>, <server_name_en>, <server_main_url>
	  are supported.

	* userlist_cfg.h:
	(struct userlist_cfg) new fields `server_name', `server_name_en',
	  `server_main_url' are added.

	* userlist_xml.c:
	(do_parse_user) "simple_registration" attribute is supported;
	(unparse_user) "simple_registration" attribute is supported.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-04-19  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-04-19  Alexander Chernov  <cher@ispras.ru>

	* files.make: userlist_clnt/register_new_2.c is added.

	* html.c:
	(calc_kirov_score) new parameter `format' is added. If this parameter
	  is 0, HTML is generated, if the parameter is 1, the plain text
	  is generated;
	  bug in calculation of the score bonus is fixed;
	(write_html_run_status) call of `calc_kirov_score' is updated;
	(write_text_run_status) new function, which generates the run
	  status string in the plain text format;
	(write_user_problems_summary) hidden runs are not counted as
	  previously successful runs;
	  call of `calc_kirov_score' is updated;
	(new_write_user_clar) new parameter `format' is added. If this
	  parameter is 0, HTML is generated, if the parameter is 1, the plain
	  text is generated;
	(do_write_kirov_standings) call of `calc_kirov_score' is updated;
	(do_write_moscow_standings) `acm_run_penalty' is used for penalty
	  calculation;
	(do_write_standings) `acm_run_penalty' is used for penalty calculation;
	(new_write_user_source_view) new parameter `format' is added. If this
	  parameter is 0, HTML is generated, if the parameter is 1, the plain
	  text is generated;
	(write_user_run_status) new function to write a run status in the
	  plain text.

	* html.h: (new_write_user_clar) new parameter `format' is added;
	(new_write_user_source_view) the same as above;
	(calc_kirov_score) the same as above;
	(write_user_run_status) new function prototype.

	* master_html.c:
	(print_raw_record) call of `calc_kirov_score' is updated.

	* prepare.c: acm_run_penalty problem configuration variable is added;
	(prepare_problem_init_func) `acm_run_penalty' is initialized;
	(set_defaults) `acm_run_penalty' is handled;
	(prepare_set_problem_defaults) `acm_run_penalty' is handled;
	(prepare_set_prob_value) `acm_run_penalty' is handled.

	* prepare.h:
	(struct section_problem_data) `acm_run_penalty' field is added.

	* prepare_dflt.h: default problem score is set to 50;
	default value for acm_run_penalty is 20.

	* prepare_out.c:
	(prepare_unparse_prob) `acm_run_penalty' is supported.

	* protocol.h: new commands: SRV_CMD_DUMP_SOURCE, SRV_CMD_DUMP_CLAR,
	  SRV_CMD_RUN_STATUS.

	* register.c: copyright notice is updated;
	"Set-Cookie" is no longer generated to the output;
	(display_user_registered_page_2) new function for simplified
	  new user registration;
	(action_register_new_user) simplified contest registration is
	  supported.

	* serve-cmd.c: copyright notice is updated;
	(handle_team_dump) new function to handle `team-dump-source',
	  `team-dump-clar', `team-run-status' requests.

	* serve-control.c:
	actions handled: SUPER_ACTION_CNTS_CHANGE_SIMPLE_REGISTRATION,
	  SUPER_ACTION_PROB_CHANGE_ACM_RUN_PENALTY.

	* serve.c:
	(cmd_team_show_item) SRV_CMD_DUMP_CLAR, SRV_CMD_DUMP_SOURCE,
	  SRV_CMD_RUN_STATUS commands are handled.

	* super-serve.c:
	new commands SSERV_CMD_CNTS_CHANGE_SIMPLE_REGISTRATION,
	  SSERV_CMD_PROB_CHANGE_ACM_RUN_PENALTY are handled.

	* super_actions.h:
	new actions: SUPER_ACTION_CNTS_CHANGE_SIMPLE_REGISTRATION,
	  SUPER_ACTION_PROB_CHANGE_ACM_RUN_PENALTY.

	* super_html.c:
	(super_html_edit_contest_page) editing of `simple_registration'
	  is supported.

	* super_html_2.c:
	(super_html_set_contest_var) setting of `simple_registration'
	  is supported.

	* super_html_3.c:
	(super_html_print_problem) editing of `acm_run_penalty' is supported;
	(super_html_prob_param) setting of `acm_run_penalty' is supported.

	* super_proto.h:
	new commands: SSERV_CMD_CNTS_CHANGE_SIMPLE_REGISTRATION,
	  SSERV_CMD_PROB_CHANGE_ACM_RUN_PENALTY.

	* userlist-server.c:
	(cmd_register_new_2) new function to perform simplified new
	  user creation;
	(report_uptime) new function to report the server uptime.

	* userlist_clnt.h:
	(userlist_clnt_register_new_2) new function prototype is added.

	* userlist_proto.h: new command ULS_REGISTER_NEW_2 is added;
	new reply ULS_PASSWORD is added.

	* ejudge-setup.c: copyright notice is updated;
	(generate_userlist_xml) <team_password> is generated as well as
	  <password>.

	* contests.h: `simple_registration' attribute is added.

	* contests.c:
	(parse_contest) `simple_registration' attribute is supported;
	(contests_write_header) `simple_registration' attribute is supported.

2006-04-12  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* ejudge-setup.c:
	(generate_install_script) test run of the `serve' is added to the
	  install script.

	* clntutil.h: `server_always_show_problems' global variable is added.

	* clntutil.c:
	(client_check_server_status) `always_show_problems' field
	  is handled.

	* files.make: `userlist_clnt/lookup_user.c' is added.

	* prepare.c:
	global configuration variable `always_show_problems' is added.

	* prepare.h:
	(struct section_global_data) `always_show_problems' field is added.

	* prepare_dflt.h: copyright notice is updated;
	default value for `always_show_problems' is added.

	* prepare_out.c:
	(prepare_unparse_global) `always_show_problems' is handled.

	* protocol.h:
	(struct prot_serve_status_v2) `always_show_problems' field is added.

	* serve-control.c:
	(action_perform_permission_op) added support for predefined
	  permission sets;
	new actions SUPER_ACTION_CNTS_SET_PREDEF_PERMISSIONS,
	  SUPER_ACTION_GLOB_CHANGE_ALWAYS_SHOW_PROBLEMS are handled.

	* serve.c:
	(update_status_file) `always_show_problems' is written to the
	  status file.

	* super-serve.c:
	SSERV_CMD_GLOB_CHANGE_ALWAYS_SHOW_PROBLEMS command is handled.

	* super_actions.h:
	new actions: SUPER_ACTION_CNTS_SET_PREDEF_PERMISSIONS,
	  SUPER_ACTION_GLOB_CHANGE_ALWAYS_SHOW_PROBLEMS.

	* super_html.c:
	(super_html_edit_permission) form for editing predefined permission
	  sets is added.

	* super_html_2.c:
	(super_html_commit_contest) all privileged users are registered
	  for the contest and make invisible.

	* super_html_3.c:
	(super_html_edit_global_parameters) editing of `always_show_problems'
	  is supported;
	(super_html_global_param) editing of `always_show_problems'
	  is supported.

	* super_proto.h:
	new commands added: SSERV_CMD_CNTS_SET_PREDEF_PERMISSIONS,
	  SSERV_CMD_GLOB_CHANGE_ALWAYS_SHOW_PROBLEMS.

	* team.c: copyright notice is updated;
	(main) `server_always_show_problems' configuration variable is
	  supported.

	* userlist-server.c:
	(cmd_lookup_user) new function to handle ULS_LOOKUP_USER request.

	* userlist_clnt.h: copyright notice is updated;
	(userlist_clnt_lookup_user) new function prototype is added.

	* userlist_proto.h: copyright notice is updated;
	ULS_LOOKUP_USER command is added.

2006-04-07  Alexander Chernov  <cher@ispras.ru>

	* prepare_out.c:
	(prepare_unparse_prob) `test_sets' variable is supported;
	(prepare_unparse_unhandled_prob) `test_sets' is removed.

	* serve-control.c: new actions: SUPER_ACTION_PROB_CHANGE_TEST_SETS,
	  SUPER_ACTION_PROB_CLEAR_TEST_SETS are handled.

	* super-serve.c: new commands: SSERV_CMD_PROB_CHANGE_TEST_SETS,
	  SSERV_CMD_PROB_CLEAR_TEST_SETS are handled.

	* super_actions.h:
	new actions added: SUPER_ACTION_PROB_CHANGE_TEST_SETS,
	  SUPER_ACTION_PROB_CLEAR_TEST_SETS.

	* super_html_3.c:
	added support for the new standard checker `cmp_huge_int';
	(super_html_print_problem) `run_penalty' editing is available only
	  for KIROV contests;
	  editing of `test_sets' is supported;
	(super_html_prob_param) changing of `test_sets' is supported;
	(recompile_checker) checkers without source code are supported:
	  only a warning is printed;
	  the checker object file and executable are removed before
	  compilation;
	  more verbose diagnostics about compilation process is added;
	(check_test_score) warning is printed, if the sum of test scores is
	  less than the full score;
	(super_html_check_tests) test scores are checked even in the case of
	  the standard checker.

	* super_proto.h: new commands: SSERV_CMD_PROB_CHANGE_TEST_SETS,
	  SSERV_CMD_PROB_CLEAR_TEST_SETS.

	* userlist-server.c:
	(cmd_remove_member) a member cannot be removed, if the user is
	  marked `read-only'.

2006-03-27  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-03-19  Alexander Chernov  <cher@ispras.ru>

	* super_html_3.c: (super_html_edit_global_parameters) editing of
	  `disable_failed_test_view' is supported;
	(super_html_global_param) `disable_failed_test_view' is supported.

	* super_proto.h:
	SSERV_CMD_GLOB_CHANGE_DISABLE_FAILED_TEST_VIEW is added.

	* super_actions.h:
	SUPER_ACTION_GLOB_CHANGE_DISABLE_FAILED_TEST_VIEW added.

	* super-serve.c:
	(cmd_set_value) SSERV_CMD_GLOB_CHANGE_DISABLE_FAILED_TEST_VIEW
	  is handled.

	* serve-control.c:
	SUPER_ACTION_GLOB_CHANGE_DISABLE_FAILED_TEST_VIEW is handled.

	* runlog.c:
	(run_set_entry) an stupid unnoticed bug (memcmp instead of memcpy)
	  is fixed.

	* run.c: (prepare_checker_comment) a GCC warning is fixed.

	* prepare_out.c:
	(prepare_unparse_global) `disable_failed_test_view' is handled.

	* prepare_dflt.h: DFLT_G_DISABLE_FAILED_TEST_VIEW is added.

	* prepare.h:
	(struct section_global_data) `disable_failed_test_view' is added.

	* prepare.c:
	`disable_failed_test_view' global configuration variable is added;
	(global_init_func) `disable_failed_test_view' is initialized;
	(set_defaults) `disable_failed_test_view' is handled;
	(prepare_set_global_defaults) `disable_failed_test_view' is handled;
	(prepare_new_global_section) `disable_failed_test_view' is handled.

	* master.c: (action_issue_warning) a GCC warning is fixed.

	* html.c: (write_html_run_status) global configuration variable
	  `disable_failed_test_view' is supported;
	(write_user_problems_summary) the same as above.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* configure.ac: checking for annoying gcc warnings is improved.

2006-03-18  Alexander Chernov  <cher@ispras.ru>

	* parsecfg.c: copyright notice is updated;
	(sarray_unparse) function is moved to parsecfg_2.c;
	(sarray_unparse_2) the same as above.

	* files.make: full_archive.c is made arch-dependant;
	parsecfg_2.c is added.

	* Makefile.win32.in: many additions

	* Makefile.unix.in: (libcommon.a) $(ARCH)/full_archive.o is added.

	* parsecfg_2.c: initial revision

2006-03-17  Alexander Chernov  <cher@ispras.ru>

	* configure.ac: added check for zlib and ncurses

2006-03-03  Alexander Chernov  <cher@ispras.ru>

	* INSTALL, INSTALL.RUS, cher-configure: *** empty log message ***

2006-02-27  Alexander Chernov  <cher@ispras.ru>

	* master_html.c:
	(write_xml_testing_report) incorrect handling of `error' field
	  is fixed.

2006-02-25  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(do_loop) the ignored QUIT packet is written back to the spool
	  directory.

	* prepare_out.c:
	(prepare_unparse_unhandled_global) support for new variables
	  `skip_full_testing', `skip_accept_testing' is added.

	* prepare.h: (struct section_global_data) fields `skip_full_testing',
	  `skip_accept_testing' are added.

	* prepare.c:
	global variables `skip_full_testing', `skip_accept_testing' are
	added.

	* fileutl.h: copyright notice is updated;
	(scan_dir_add_ignored) new function prototype is added.

	* run.c: copyright notice is updated;
	(do_loop) the ignored files are added to the list of ignored files.

2006-02-20  Alexander Chernov  <cher@ispras.ru>

	* TODO, INSTALL, INSTALL.RUS: *** empty log message ***

2006-02-13  Alexander Chernov  <cher@ispras.ru>

	* client_actions.h: copyright notice is updated;
	new actions added: ACTION_FULL_REJUDGE_DISPLAYED_1,
	  ACTION_FULL_REJUDGE_DISPLAYED_2.

	* filter_eval.c: copyright notice is updated;
	(is_latest) a new function, which checks whether the given run
	  is the latest run for the specified user/problem pair;
	(is_afterok) a new function, which checks whether there is
	  a previous OK run for the specified user/problem pair;
	(do_eval) "latest", "curlatest", "afterok", "curafterok"
	  predicates are supported.

	* filter_expr.y: copyright notice is updated;
	new predicates are supported: "latest", "curlatest", "afterok",
	  "curafterok".

	* filter_scan.lex: copyright notice is updated;
	new tokens added: "latest", "curlatest", "afterok", "curafterok".

	* html.c:
	(write_user_problems_summary) in olympiad accepting mode only
	  information about accepted/not accepted status is displayed
	  even if the full judging information is available;
	(new_write_user_runs) the same as above;
	(do_write_kirov_standings) score calculation in the olympiad
	  mode is changed: only the latest run is considered;
	(write_xml_team_accepting_report) a new function, shows only
	  accepted/not accepted information and the related test
	  information in the judge protocol to the user in the
	  olympiad accepting mode;
	(new_write_user_report_view) `write_xml_team_accepting_report'
	  is called in the olympiad accepting mode;
	(write_team_page) call of `new_write_user_runs' is updated;

	* html.h: (new_write_user_runs) `accepting_mode' parameter is added;
	(new_write_user_report_view) `accepting_mode' parameter is added.

	* master.c: copyright notice is updated;
	(confirm_rejudge_displayed) new parameters `cur_action', `next_action'
	  are added, so "Full rejudge displayed runs" is handled;
	(action_rejudge_displayed) new parameter `cmd' is added;
	(main) call of `confirm_rejudge_displayed' is updated;
	  call of `action_rejudge_displayed' is updated;
	  actions ACTION_FULL_REJUDGE_DISPLAYED_1,
	  ACTION_FULL_REJUDGE_DISPLAYED_2 are handled.

	* master_html.c:
	(write_priv_all_runs) "Full rejudge displayed runs" button is added;
	(write_priv_standings) `accepting_mode' is always passed as 0
	  to `do_write_kirov_standings'.

	* protocol.h: SRV_CMD_FULL_REJUDGE_BY_MASK command is added.

	* serve.c:
	(cmd_view) only acceptance tests can be viewed in olympiad accepting
	  mode if full judge protocol viewing is enabled;
	  `accepting_mode' flag is passed to `new_write_user_report_view';
	(struct compile_run_extra) `priority_adjustment' field is added;
	(queue_compile_request) `priority_adjustment' parameter is added;
	(cmd_priv_submit_run) call of `queue_compile_request' is updated;
	(do_submit_run) call of `queue_compile_request' is updated;
	(cmd_rejudge_by_mask) `SRV_CMD_FULL_REJUDGE_BY_MASK' is handled;
	  priority is adjusted by 10 in this case;
	  call of `do_rejudge_by_mask' is updated;
	(rejudge_run) `priority_adjustment' parameter is added;
	  call of `queue_compile_request' is updated;
	(cmd_edit_run) call of `rejudge_run' is updated;
	(read_compile_packet) field `priority_adjustment' of the
	  `struct compile_run_extra' is used;
	(do_rejudge_all) call of `rejudge_run' is updated;
	(do_judge_suspended) call of `rejudge_run' is updated;
	(do_rejudge_problem) call of `rejudge_run' is updated;
	(do_rejudge_by_mask) `priority_adjustment' parameter is added;
	  call of `rejudge_run' is updated.

	* super_html_2.c:
	(super_html_set_contest_var) compilation warning is fixed.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-02-07  Alexander Chernov  <cher@ispras.ru>

	* slice-userlist.c: copyright notice is updated;
	(main) the version banner is printed to the stderr instead of stdout.

2006-02-06  Alexander Chernov  <cher@ispras.ru>

	* super_html_2.c:
	(super_html_set_contest_var) a newly created access node is linked
	  to the XML tree. This fixes a crash when an access rule is edited
	  twice in a row.

	* serve.c:
	(cmd_view) SRV_CMD_VIEW_TEST_* check permission themselves, so
	  need_priv_check is set to 0.

	* configure.ac: copyright notice is updated;
	--with-g++ is renamed to --with-gpp.

2006-01-21  Alexander Chernov  <cher@ispras.ru>

	* clntutil.c:
	(client_print_server_status) minor displaying changes to avoid printing
	  unnecessary information.

	* userlist-server.c:
	(do_list_users) members over the maximal numbers for the given contest
	  are not displayed.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-01-19  Alexander Chernov  <cher@ispras.ru>

	* INSTALL: updated for the current version,
	translated the first section.

	* INSTALL.RUS: updated for the current version

	* master_html.c:
	(generate_daily_statistics) the formatting is slightly changed.

2006-01-18  Alexander Chernov  <cher@ispras.ru>

	* clarlog.c: (clar_add_record) new parameter `j_from' is added;
	(clar_get_record) new parameter `pj_from' is added.

	* clarlog.h: copyright notice is updated;
	(clar_add_record) new parameter `j_from' is added;
	(clar_get_record) new parameter `pj_from' is added.

	* clean-users.c: copyright notice is updated;
	(main) use of `clar_get_record' is updated.

	* html.c: copyright notice is updated;
	(count_unread_clars) call of `clar_get_record' is updated;
	(new_write_user_clars) the same as above;
	(new_write_user_clar) the same as above.

	* master_html.c:
	(write_all_clars) use of `clar_get_record' is updated;
	  the judge's user name is displayed, if available;
	(write_priv_clar) use of `clar_get_record' is updated;
	  the judge's user name is displayed, if available;
	(generate_daily_statistics) use of `clar_get_record' is updated.

	* serve.c: (cmd_view) call of `clar_get_record' is updated;
	(cmd_message) the judge's user_id is passed to `clar_add_record';
	  use of `clar_get_record' is updated;
	(cmd_team_submit_clar) use of `clar_add_record' is updated.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* ej_types.h: copyright notice is updated;
	`ej_time64_t' type is added.

	* clarlog.c: copyright notice is updated;
	many functions are rewritten to use the binary file format.

2006-01-17  Alexander Chernov  <cher@ispras.ru>

	* html.h: copyright notice is updated;
	(generate_daily_statistics) function prototype is added.

	* master_html.c: copyright notice is updated;
	(is_registered_today) a new function, which checks whether a
	  user was registered in the given period of time;
	(generate_daily_statistics) new function to generate the
	  daily statistics e-mail content.

	* serve.c:
	(update_status_file) `stat_reported_before', `stat_report_time'
	  are written to the status file;
	(load_status_file) `stat_reported_before', `stat_report_time'
	  are read from the status file;
	(generate_statistics_email) new function to generate a statistics
	  e-mail for a given period of time;
	(check_stat_generation) new function to check necessity of generation
	  of e-mail statistics;
	(do_loop) `check_stat_generation' is called;
	(main) `check_stat_generation' is called;
	  `update_status_file' is called.

	* protocol.h:
	(struct prot_serve_status_magic_v2) new fields `stat_reported_before',
	  `stat_report_time' are added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-01-15  Alexander Chernov  <cher@ispras.ru>

	* contests.c, contests.c, contests.h, serve-control.c, super-serve.c, super_actions.h, super_html.c, super_html_2.c, super_proto.h:
	dayly -> daily

2006-01-13  Alexander Chernov  <cher@ispras.ru>

	* job-server.c:
	(main) setting directory notifications flags is performed when
	  the daemon process is already created.

	* super_proto.h: new commands added:
	  SSERV_CMD_GLOB_CHANGE_CONTEST_FINISH_TIME,
	  SSERV_CMD_GLOB_CLEAR_CONTEST_FINISH_TIME.

	* super_html_3.c: copyright notice is updated;
	(super_html_edit_global_parameters) form for editing
	  `contest_finish_time' is added;
	(super_html_global_param) commands for editing
	  `contest_finish_time' are supported.

	* super_actions.h: new actions are added:
	  SUPER_ACTION_GLOB_CHANGE_CONTEST_FINISH_TIME,
	  SUPER_ACTION_GLOB_CLEAR_CONTEST_FINISH_TIME.

	* super-serve.c: commands SSERV_CMD_GLOB_CHANGE_CONTEST_FINISH_TIME,
	  SSERV_CMD_GLOB_CLEAR_CONTEST_FINISH_TIME
	  are handled.

	* serve.c:
	(update_status_file) contest_finish_time is written to the status file;
	(do_loop) check for `contest_finish_time' is added.

	* serve-control.c:
	actions SUPER_ACTION_GLOB_CHANGE_CONTEST_FINISH_TIME,
	  SUPER_ACTION_GLOB_CLEAR_CONTEST_FINISH_TIME
	  are handled.

	* protocol.h: copyright notice is updated;
	(struct prot_serve_status_v2) field `finish_time' is added.

	* prepare_out.c: copyright notice is updated;
	(prepare_unparse_global) `contest_finish_time' is unparsed.

	* prepare.h: copyright notice is updated;
	(struct section_global_data) new fields `contest_finish_time',
	  `contest_finish_time_d' are added.

	* prepare.c: copyright notice is updated;
	new global variable `contest_finish_time' is added;
	(set_defaults) `contest_finish_time' is parsed.

	* clntutil.h: copyright notice is updated;
	`server_finish_time' is declared.

	* clntutil.c: copyright notice is updated;
	global variable `server_finish_time' is added;
	(client_check_server_status) `server_finish_time' is read from the
	  server status file;
	(client_print_server_status) the contest finish time is printed, if
	  available.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2006-01-11  Alexander Chernov  <cher@ispras.ru>

	* serve.c: copyright notice is updated;
	"job_packet.h" is included;
	<pwd.h> is included;
	(get_email_sender) new function, which determines the name to be used
	  as the originator (From:) of the e-mail message;
	(cmd_team_submit_run) an e-mail notification is sent, if the elememt
	  <clar_notify_email> is set;
	(mail_check_failed) new function, which sends an e-mail notification
	  for the CHECK_FAILED error;
	(read_compile_packet) e-mailing notifications is supported;
	(read_run_packet) e-mailing notifications is supported.

	* super_html.c: copyright notice is updated;
	(super_html_edit_contest_page) controls for changing values of
	  <cf_notify_email>, <clar_notify_email>, <dayly_stat_email>
	  are genereated.

	* super_html_2.c: copyright notice is updated;
	(super_html_clear_variable) new commands are handled:
	  SSERV_CMD_CNTS_CLEAR_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_DAYLY_STAT_EMAIL;
	(super_html_set_contest_var) new commands are handled:
	  SSERV_CMD_CNTS_CHANGE_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_DAYLY_STAT_EMAIL.

	* super_proto.h: copyright notice is updated;
	new commands are added:
	  SSERV_CMD_CNTS_CHANGE_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_DAYLY_STAT_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_DAYLY_STAT_EMAIL,
	  SSERV_CMD_CNTS_HIDE_NOTIFICATIONS,
	  SSERV_CMD_CNTS_SHOW_NOTIFICATIONS.

	* super_actions.h: copyright notice is updated;
	new actions are added:
	  SUPER_ACTION_CNTS_CHANGE_CF_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_CF_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CHANGE_CLAR_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_CLAR_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CHANGE_DAYLY_STAT_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_DAYLY_STAT_EMAIL,
	  SUPER_ACTION_CNTS_HIDE_NOTIFICATIONS,
	  SUPER_ACTION_CNTS_SHOW_NOTIFICATIONS.

	* super-serve.h: copyright notice is updated;
	(struct sid_state) new field `show_notifications' is added.

	* super-serve.c: copyright notice is updated;
	new commands are handled:
	  SSERV_CMD_CNTS_CHANGE_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CHANGE_DAYLY_STAT_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_CF_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_CLAR_NOTIFY_EMAIL,
	  SSERV_CMD_CNTS_CLEAR_DAYLY_STAT_EMAIL,
	  SSERV_CMD_CNTS_HIDE_NOTIFICATIONS,
	  SSERV_CMD_CNTS_SHOW_NOTIFICATIONS.

	* serve-control.c: copyright notice is updated;
	new actions are handled:
	  SUPER_ACTION_CNTS_CHANGE_CF_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CHANGE_CLAR_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CHANGE_DAYLY_STAT_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_CF_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_CLAR_NOTIFY_EMAIL,
	  SUPER_ACTION_CNTS_CLEAR_DAYLY_STAT_EMAIL,
	  SUPER_ACTION_CNTS_HIDE_NOTIFICATIONS,
	  SUPER_ACTION_CNTS_SHOW_NOTIFICATIONS.

	* contests.h: copyright notice is updated;
	support for the new elements <cf_notify_email>, <clar_notify_email>,
	  <dayly_stat_email> are added;
	(struct contest_desc) fields `cf_notify_email', `clar_notify_email',
	  `dayly_stat_email' are added.

	* contests.c: copyright notice is updated;
	support for the new elements <cf_notify_email>, <clar_notify_email>,
	  <dayly_stat_email> is added.

	* userlist_cfg.c: copyright notice is updated;
	new elements <job_server_log>, <job_server_spool>, <job_server_work>
	  are supported.

	* userlist_cfg.h: copyright notice is updated;
	(struct userlist_cfg) new fields `job_server_log', `job_server_spool',
	  `job_server_work' are added.

	* job-server-cmd.c, job-server.c, job_packet.h, send_job_packet.c:
	initial revision

	* files.make: copyright notice is updated;
	send_job_packet.c, job_packet.h are added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* Makefile.unix.in: copyright notice is updated;
	new targets added: job-server, job-server-cmd.

	* copyright.c: copyright notice is updated.

	* userlist-server.c: copyright notice is updated;
	(cmd_register_contest) the current time is stored to the "date" field;
	(cmd_priv_register_contest) the same as above.

	* userlist.h: copyright notice is updated;
	(struct userlist_contest) "date" field is added.

	* userlist_xml.c: copyright notice is updated;
	(parse_contest) support for the "date" attribute is added;
	(unparse_contest) support for the "date" attribute is added.

2005-12-18  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c:
	(do_write_kirov_standings) RUN_ACCEPTED is counted as a transient run.

	* prepare.c: new problem parameter `enable_compilation' is added;
	(prepare_problem_init_func) `enable_compilation' is handled;
	(set_defaults) `enable_compilation' is handled;
	(prepare_set_prob_value) `enable_compilation' is handled.

	* prepare.h:
	(struct section_problem_data) `enable_compilation' field is added;
	  `PREPARE_FIELD_PROB_ENABLE_COMPILATION' field code is added.

	* prepare_out.c:
	(prepare_unparse_prob) `enable_compilation' is handled.

	* serve-control.c:
	(main) action `SUPER_ACTION_PROB_CHANGE_ENABLE_COMPILATION'
	  is handled.

	* serve.c:
	(cmd_priv_submit_run)  `enable_compilation' problem configuration
	  variable is supported;
	(do_submit_run) `enable_compilation' problem configuration variable
	  is supported;
	(read_compile_packet) `enable_compilation' problem configuration
	  variable is supported.

	* super-serve.c:
	(cmd_set_value) command `SSERV_CMD_PROB_CHANGE_ENABLE_COMPILATION'
	  is handled.

	* super_actions.h:
	added action `SUPER_ACTION_PROB_CHANGE_ENABLE_COMPILATION'.

	* super_html_3.c:
	(super_html_print_problem) controls for changing `enable_compilation'
	  are printed;
	(super_html_prob_param) `SSERV_CMD_PROB_CHANGE_ENABLE_COMPILATION'
	  is handled.

	* super_proto.h:
	added command `SSERV_CMD_PROB_CHANGE_ENABLE_COMPILATION'.

2005-12-16  Alexander Chernov  <cher@ispras.ru>

	* prepare_out.c:
	(generate_abstract_tester) LANG environment variable is set to "C"
	  for the java testers to avoid problems with decimal dots.

	* run.c: (append_msg_to_log) new function;
	(run_tests) if the checker either was terminated by a signal,
	  or returned invalid exit code, a diagnostic message is
	  appended to the checker log.

2005-12-07  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist-server.c:
	(cmd_user_op) `ULS_FIX_PASSWORD' command does not clear the
	  `team_passwd' field.

	* edit-userlist.c:
	(display_registered_users) clearing of the `team_password' field
	  is supported in the `f' command.

2005-12-05  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* edit-userlist.c:
	(display_registered_users) new command "Fix passwords" is added;

	* files.make: submit_run_2.c is added.

	* protocol.h: new command `SRV_CMD_SUBMIT_RUN_2';
	new reply code `SRV_RPL_VALUE';
	(struct prot_serve_pkt_submit_run_2) new packet type;
	(struct prot_serve_pkt_val) new packet type.

	* serve-cmd.c: "xml_utils.h" is included;
	(user_authentificate) new function, which performs unprivileged
	  logins;
	(parse_ip_flags) new function, which performs command line argument
	  parsing (--ssl, --no-ssl, --ip, --session);
	(handle_team_login) new function, which performs "team-login" command;
	(handle_team_logout) new function, which performs "team-logout"
	  commands;
	(handle_submit_run) new function, which performs "team-submit-run";
	all commands now support command-line arguments;
	new commands are "team-login", "team-logout", "team-submit-run".

	* serve.c:
	(do_submit_run) new function, which performs actual handling of
	  unprivileged submit commands;
	(cmd_team_submit_run) function only checks the packet correctness
	  and calls `do_submit_run';
	(cmd_user_submit_run_2) new function, which performs
	  `SRV_CMD_SUBMIT_RUN_2'.

	* serve_clnt.h:
	(serve_clnt_submit_run_2) new function prototype is added.

	* userlist-server.c:
	(cmd_user_op) `ULS_FIX_PASSWORD' command is handled.

	* userlist_proto.h: ULS_FIX_PASSWORD command is added.

2005-11-28  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-11-25  Alexander Chernov  <cher@ispras.ru>

	* parsecfg.c: "pathutl.h" is no longer included;
	<limits.h> is included instead.

	* errlog.c, errlog.h, mischtml.h: initial revision

	* misctext.h: "ej_types.h" is not included;
	<stdio.h> is not included;
	<string.h> is included instead;
	html_hyperref, html_start_form, html_date_select are moved to
	  "mischtml.h".

	* misctext.c: "config.h" is no longer included.

	* pathutl.c: vverr, err, info, do_err_r are moved to "errlog.h".

	* pathutl.h: copyright notice is updated;
	vverr, err, info, do_err_r are moved to "errlog.h".

	* files.make: errlog.c, errlog.h, mischtml.h are added.

	* html_hyperref.c, html_start_form.c:
	"mischtml.h" is included instead of "misctext.h".

	* super_html_2.c: "mischtml.h" is included.

	* expat_iface.c: copyright notice is updated;
	"errlog.h" is included.

	* html.c, master_html.c, super_html.c, super_html_3.c:
	"mischtml.h", "errlog.h" are included.

	* userlist_cfg.c: copyright notice is updated;
	"errlog.h" is included instead of "pathutl.h".

	* cgi.c: copyright notice is updated;
	"config.h" is no longer included;
	"errlog.h" is included instead of "pathutl.h".

	* userlist_xml.c, base64.c:
	"errlog.h" is included instead of "pathutl.h".

	* contests.c, compile_packet_5.c, compile_packet_4.c, compile_packet_2.c, compile_packet_1.c, compile.c, clntutil.c, clean-users.c, clarlog.c, archive_paths.c, filehash.c, full_archive.c, master.c, prepare.c, prepare_out.c, prepare_serve.c, register.c, run.c, run_packet_1.c, run_packet_2.c, run_packet_4.c, run_packet_5.c, runlog.c, runlog_xml.c, serve-cmd.c, serve.c, super-serve.c, team.c, team_extra.c, team_extra_xml.c, teamdb.c, userlist-server.c, userlist.c, users.c, varsubst.c:
	"errlog.h" is included.

2005-11-24  Alexander Chernov  <cher@ispras.ru>

	* super_html_3.c: (recompile_checker) support for C++ is added.

2005-11-18  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* team.c: (submit_if_asked) the message text is slightly changed.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c:
	(write_xml_team_testing_report) if the real time is less than the CPU
	  time, the CPU time is reported as the real time as well to avoid
	  confusion.

	* protocol.c: the text for SRV_ERR_DATA_FORMAT is added.

	* serve.c:
	(cmd_priv_submit_run) the SRV_ERR_DATA_FORMAT error is reported, if
	  the program length mismatch detected;
	(cmd_team_submit_run) the same as above.

	* super_html_3.c:
	(super_html_edit_global_parameters) the `stand_penalty_attr',
	  `ignore_success_time' configuration variables are available
	  for MOSCOW contests.

	* team.c:
	(submit_if_asked) special handling of the -SRV_ERR_DATA_FORMAT error
	  is implemeted to produce a verbose diagnostics.

	* protocol.h: new error SRV_ERR_DATA_FORMAT is added.

2005-11-17  Alexander Chernov  <cher@ispras.ru>

	* super_html_3.c: (super_html_check_tests) gcc warnings are fixed.

	* html.c: (do_write_kirov_standings) gcc warnings are fixed;
	(do_write_moscow_standings) gcc warnings are fixed;
	(do_write_standings) gcc warnings are fixed.

2005-11-17  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c:
	(do_write_kirov_standings) check, that total_pages > 1 is added before
	  a call of `write_kirov_page_table'.

2005-11-16  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(do_write_kirov_standings) `write_kirov_page_table' is moved
	  to its proper place.

	* serve-control.c: (main) new actions are handled:
	  SUPER_ACTION_GLOB_CHANGE_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_COL_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_COL_ATTR.

	* super-serve.c: (cmd_set_value) new commands are supported:
	  SSERV_CMD_GLOB_CHANGE_STAND_ROW_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_ROW_ATTR,
	  SSERV_CMD_GLOB_CHANGE_STAND_PAGE_TABLE_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_PAGE_TABLE_ATTR,
	  SSERV_CMD_GLOB_CHANGE_STAND_PAGE_CUR_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_PAGE_CUR_ATTR,
	  SSERV_CMD_GLOB_CHANGE_STAND_PAGE_ROW_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_PAGE_ROW_ATTR,
	  SSERV_CMD_GLOB_CHANGE_STAND_PAGE_COL_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_PAGE_COL_ATTR.

	* super_html.c: a color scheme is implemented for all forms.

	* super_html_3.c: a color scheme is implemented for all forms;
	(super_html_edit_global_parameters) editing of new configuration
	  variables is supported: `stand_row_attr', `stand_page_table_attr',
	  `stand_page_cur_attr', `stand_page_row_attr', `stand_page_col_attr';
	(super_html_global_param) the same, as above.

	* super_proto.h: new protocol commands are added:
	  SUPER_ACTION_GLOB_CHANGE_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_COL_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_COL_ATTR.

	* super_actions.h: new actions are added:
	  SUPER_ACTION_GLOB_CHANGE_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_TABLE_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_CUR_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_ROW_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_PAGE_COL_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_PAGE_COL_ATTR.

	* run.c:
	(generate_xml_report) the number of the failed test is written
	  correctly in the Moscow contest mode.

	* prepare_out.c:
	(prepare_unparse_global) `stand_row_attr', `stand_page_table_attr',
	  `stand_page_row_attr', `stand_page_col_attr', `stand_page_cur_attr'
	  are unparsed.

	* prepare.h:
	(struct section_global_data) size of standings attribute variables
	  is increased to 128;
	  new fields: `stand_row_attr, `stand_page_table_attr',
	  `stand_page_row_attr', `stand_page_col_attr', `stand_page_cur_attr'.

	* prepare.c:
	new global configuration variables added: stand_row_attr,
	  stand_page_table_attr, stand_page_row_attr, stand_page_col_attr,
	  stand_page_cur_attr;
	(prepare_global_free_func) fields `stand_row_attr',
	  `stand_page_row_attr', `stand_page_col_attr' are freed.

	* parsecfg.h: (sarray_unparse_2) new function prototype added;
	(sarray_parse_2) new function prototype added.

	* parsecfg.c:
	(sarray_unparse_2) new function to unparse the array of string
	  pointers, the function is suitable for editing global conf.
	  variables like `stand_row_attr' in the `super-serve' program;
	(sarray_parse_2) new function to parse the array of string
	  pointers, the function is suitable for editing global conf.
	  variables like `stand_row_attr' in the `super-serve' program.

	* html.c: (write_html_run_status) "Compilation error" is handled like
	  "Ignored" runs, i.e. no score and test information available;
	(write_kirov_page_table) new function, which prints the page
	  links table for the kirov standings;
	(do_write_kirov_standings) speed optimizations: one-dimensional
	  array is used instead of array of pointers for all tables;
	  bucket sort is used instead of selection sort;
	  `stand_row_attr', `stand_page_row_attr', `stand_page_col_attr', etc
	  global variables are supported;
	  "Last success", "Last submit" information is printed;
	(write_moscow_page_table) new function, which prints the page
	  links table for the "Moscow" standings;
	(do_write_moscow_standings) new global configuration variables,
	  which governs the standings table are supported;
	(do_write_standings) speed optimizations: one-dimensional
	  array is used instead of array of pointers for all tables;
	  bucket sort is used instead of selection sort;
	  `stand_row_attr' global variables is supported;
	(write_xml_team_testing_report) "Real time" column is printed.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-11-13  Alexander Chernov  <cher@ispras.ru>

	* fileutl.h: `KEEP_ON_FAIL' flag is added for `generic_write_file'.

	* super_html_2.c:
	(super_html_commit_contest) the `serve.cfg' file is added correctly
	  to the VCS when created.

2005-11-09  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(write_html_run_status) "Moscow" scoring system is supported;
	(write_user_problems_summary) `solved_flag' parameter is added
	  instead of local variable, this allows returning the
	  problem solving status to the caller;
	  "Moscow" scoring system is supported;
	(new_write_user_runs) "ej_cookie_t" type is used for cookies
	  instead of "unsigned long long";
	  "Moscow" scoring system is supported;
	  64-bit compatibility fixes;
	(new_write_user_clars) "ej_cookie_t" type is used for cookies
	  instead of "unsigned long long";
	  64-bit compatibility fixes;
	(new_write_user_clar) 64-bit compatibility fixes;
	(do_write_kirov_standings) the total number of attempts
	  is counted for each user and problem;
	  the standings headers and footers are printed correctly in
	  all corner cases (no users registered, etc);
	  `stand_sort_by_solved' global configuration variable is
	  supported: if this variable is set, the number of solved
	  problems is the primary key for sorting, and the score is
	  the secondary key;
	  `stand_show_att_num' global configuration variable is
	  supported: if this variable is set, the number of attempts
	  is printed in the standings page;
	  "Total", "Success" are localized;
	(do_write_moscow_standings) new function to print the
	  standings in the Moscow scoring system;
	(do_write_standings) "time_t" type is used for timestamps
	  instead of "unsigned long";
	  the standings column is now called "User" instead of "Team";
	(write_standings) Moscow scoring system is supported;
	(do_write_public_log) Moscow scoring system is supported;
	(new_write_user_report_view) "ej_cookie_t" type is used for cookies
	  instead of "unsigned long long";
	  64-bit compatibility fixes;
	(print_nav_buttons) "ej_cookie_t" type is used for cookies
	  instead of "unsigned long long";
	(write_team_page) "ej_cookie_t" type is used for cookies
	  instead of "unsigned long long";
	  `disable_submit_after_ok' global configuration variable is
	  supported: if this variable is set, the already solved
	  problems are removed from the list of problems available
	  for submit.

	* compile_packet_1.c, compile_packet_4.c, compile_packet_5.c, compile_packet_2.c:
	"ej_types.h", "ej_limits.h" are included;
	the limit constants from "ej_limits.h" are used.

	* compile_packet_priv.h:
	constants MAX_CONTEST_ID, MAX_RUN_ID, MAX_LANG_ID are
	  moved to "ej_limits.h".

	* ej_limits.h: EJ_MAX_LANG_ID is added.

	* prepare.c:
	(prepare_set_prob_value) `max_vm_size', `max_stack_size' is
	  not set to 0, if not defined.

	* prepare_out.c:
	(prepare_unparse_prob) `full_score' is unparsed in the MOSCOW
	  scoring system;
	(generate_abstract_tester) `long' incompatibility fix;
	(generate_concrete_tester) `max_vm_size', `max_stack_size'
	  are not generated for the "Linux" arch, if they are
	  equal to -1L.

	* run_packet_1.c, run_packet_2.c, run_packet_4.c, run_packet_5.c:
	"ej_types.h", "ej_limits.h" are included;
	the limit constants from "ej_limits.h" are used.

	* run_packet_priv.h:
	definitions of MAX_CONTEST_ID, MAX_RUN_ID, MAX_USER_ID
	  are moved to "ej_limits.h";
	definition of MAX_SCORING_SYSTEM is removed.

2005-11-08  Alexander Chernov  <cher@ispras.ru>

	* master_html.c:
	(write_priv_all_runs) "Moscow" scoring system is supported;
	(write_priv_standings) "Moscow" scoring system is supported;
	(write_priv_source) "Moscow" scoring system is supported;
	(write_new_run_form) "Moscow" scoring system is supported;
	(write_raw_standings) "Moscow" scoring system is supported.

	* clean-users.c:
	(main) `run_size' now has type "size_t", so printf format specification
	  is updated.

	* html.h:
	(do_write_moscow_standings) new function prototype is added.

	* parsecfg.c: (num_suffix) a new function to parse K, M, G suffixes;
	(copy_param) new parameter type "z" is supported for "size_t";
	  `num_suffix' is used to parse the numeric suffix.

	* prepare.c: new problem configuration variable `skip_testing';
	new tester configuration variable `skip_testing';
	tester configuration variables `max_vm_size', `max_stack_size',
	  `max_data_size' now have type "size_t";
	(prepare_problem_init_func) `skip_testing' is initialized;
	  type of `max_*_size' is "size_t";
	(prepare_problem_free_func) `x_score_tests' is freed;
	(tester_init_func) `skip_testing' is initialized;
	  type of `max_*_size' is "size_t";
	(inh_isdef_size) new function for "size_t" inheritance;
	(inh_copy_size) new function for "size_t" inheritance;
	(prepare_parse_score_tests) new function to parse the `score_tests'
	  specification;
	(set_defaults) "Moscow" scoring system is supported;
	  new `skip_testing' variables are supported;
	  type of `max_*_size' is now "size_t";
	(prepare_tester_refinement) new `skip_testing' variables are supported;
	  type of `max_*_size' is now "size_t";
	(print_tester) the same as above;
	(prepare_copy_problem) `x_score_tests' is reset in the copies problem;
	(prepare_set_prob_value) `skip_testing' is handled;
	  type of `max_*_size' is now "size_t".

	* prepare.h: "ej_types.h" is included;
	SCORE_* definition is moved to "ej_types.h";
	(struct section_problem_data) new fields `skip_testing',
	  `x_score_tests' are added;
	  `max_vm_size', `max_stack_size' now have "size_t" type;
	(struct section_tester_data)
	  new field `skip_testing' is added;
	  `max_vm_size', `max_stack_size', `max_data_size' now have
	  "size_t" type;
	PREPARE_FIELD_PROB_SKIP_TESTING constant is added.

	* prepare_out.c: (num_to_size) `num' parameter now has "int" type;
	(size_t_to_size) new function to unparse a "size_t" argument;
	(prepare_unparse_unhandled_global) `skip_testing' is unparsed;
	(generate_abstract_tester) `max_vm_size', `max_stack_size' now
	  have "size_t" type;
	(generate_concrete_tester) the same as above;
	(prepare_unparse_testers) the same as above.

	* run.c:
	(html_print_by_line) fix for proper printing of pointer difference;
	(unparse_scoring_system) "Moscow" scoring system is supported;
	(generate_xml_report) the same as above;
	(run_tests) `max_stack_size', `max_vm_size', `max_data_size' now
	  have "size_t" type;
	  "Moscow" scoring system is supported;
	(do_loop) a compiler warning at `generic_read_file' is fixed;
	  added support for `skip_testing' problem and tester configuration
	  variables;
	(check_config) support for "Moscow" scoring system is implemented.

	* serve.c:
	(cmd_edit_run) support for the "Moscow" scoring system is added;
	(cmd_new_run) the same as above;
	(read_run_packet) the same as above.

	* super_html_3.c: (num_to_size) parameter `num' now has type "int";
	(size_t_to_size) a new function, which converts "size_t" argument
	  to human-readable form (with K, M, or G suffixes);
	(super_html_print_problem) `max_vm_size', `max_stack_size' now have
	  "size_t" type;
	(num_suffix) a new function, which parses a numeric suffix K, M, or G;
	(super_html_prob_param) `max_vm_size', `max_stack_size' now have
	  "size_t" type;
	(super_html_read_serve) the same as above.

2005-11-04  Alexander Chernov  <cher@ispras.ru>

	* ej_limits.h, ej_types.h: *** empty log message ***

	* html_hyperref.c:
	"ej_cookie_t" is used instead of "unsigned long long" for cookies.

	* edit-userlist.c: "ej_types.h" is included;
	"ej_ip_t" is used instead of "unsigned long" for IP addresses.

	* contests.h, contests.c: "ej_types.h" is included;
	"time_t" is used instead of "unsigned long" for timestamps;
	"ej_ip_t" is used instead of "unsigned long" for IP addresses.

	* clntutil.h, clntutil.c: copyright notice is updated;
	"ej_types.h" is included;
	"time_t" is used instead of "unsigned long" for timestamps;
	"ej_ip_t" is used instead of "unsigned long" for IP addresses.

	* clean-users.c:
	"size_t" is used instead of "unsigned long" for `clar_size'.

	* clarlog.h: copyright notice is updated;
	<time.h>, <stdlib.h> are included;
	"time_t" is used for timestamps;
	"size_t" is used for sizes;
	"off_t" is used for file offsets.

	* clarlog.c: copyright notice is updated;
	"time_t" is used for timestamps;
	"size_t" is used for sizes;
	"off_t" is used for file offsets.

	* base64.h: copyright notice is updated;
	<stdlib.h> is included;
	`size_t' is used instead of `int' for size parameter.

	* base64.c: copyright notice is updated;
	(base64_encode) `size' parameter now has type "size_t";
	(base64_decode) `size' parameter now has type "size_t".

	* archive_paths.c: "ej_types.h", "ej_limits.h" are included;
	limit constants MAX_RUN_NUM, MAX_RUN_32DIGITS are moved to
	  "ej_limits.h";
	(b32_number) `num' parameter now has type "unsigned".

	* filehash.c: "ej_types.h" is included;
	(struct hash_entry) `tick' field now has type "unsigned".

	* files.make: ej_limits.h, ej_types.h are added.

	* filter_tree.c:
	"ej_ip_t" is used for IP-addresses instead of "unsigned long";
	"ruint32_t" is used for SHA1 hash array type instead of
	  "unsigned long".

	* filter_tree.h: copyright notice is updated;
	"ej_types.h" is included;
	"ej_ip_t" is used for IP-addresses instead of "unsigned long";
	"ruint32_t" is used for SHA1 hash array type instead of
	  "unsigned long".

	* full_archive.h: <reuse/integral.h> is inclded;
	(struct full_archive_entry_header) "rint32_t" type is used instead
	  of "long" for binary compatibility between 32-bit and 64-bit
	  platforms.

	* html.h: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* html_start_form.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long".

	* master.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"ruint32_t" type is used instead of "unsigned long" in the
	  SHA1 array;
	"int" is used for nanosecond component of timestamp instead of "long";
	(action_new_run) `ssl_flag' is passed to `serve_clnt_new_run';
	(action_submit_run) `ssl_flag' is passed to `serve_clnt_submit_run';
	(log_out_if_asked) `ssl_flag' is passed to `userlist_clnt_logout';
	(display_master_page) `ssl_flag' is passed to `serve_clnt_master_page'.

	* master_html.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"int" is used for nanosecond component of timestamp instead of "long".

	* misctext.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long".

	* misctext.h: "ej_types.h" is included;
	<time.h> is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long".

	* printing.c:
	(print_banner_page) printf specifier for "info.size" field
	  is corrected.

	* protocol.h: "ej_types.h" is included;
	SCORE_* constants are moved to "ej_types.h";
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	(struct prot_serve_status_v1) "ej_time_t" 32-bit type is used
	  for compatibility between 32-bit and 64-bit platforms;
	(struct prot_serve_status_v2) the same as above.

	* register.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	(action_register_new_user) `ssl_flag' is passed to
	  `userlist_clnt_register_new'.

	* runlog.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"ruint32_t" type is used instead of "unsigned long" in the
	  SHA1 array;
	"int" is used for nanosecond component of timestamp instead of "long";
	"off_t" is used for file offsets instead of "int";
	(struct run_header) "ej_time_t" type (which has fixed size of 32 bit)
	  is used to ensure compatibility between 32-bit and 64-bit
	  architectures;
	(struct run_entry) "ej_time_t", "ej_size_t" 32-bit types are used
	  for compatibility between 32-bit and 64-bit platforms.

	* runlog.h: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"ruint32_t" type is used instead of "unsigned long" in the
	  SHA1 array;
	"int" is used for nanosecond component of timestamp instead of "long";
	(struct run_header) "ej_time_t" type (which has fixed size of 32 bit)
	  is used to ensure compatibility between 32-bit and 64-bit
	  architectures;
	(struct run_entry) "ej_time_t", "ej_size_t" 32-bit types are used
	  for compatibility between 32-bit and 64-bit platforms.

	* runlog_import.c:
	"int" is used instead of "long" for nanosecond timestamp.

	* runlog_xml.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"ruint32_t" type is used instead of "unsigned long" in the
	  SHA1 array;
	"int" is used instead of "long" for nanosecond timestamp.

	* serve-cmd.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".
	(handle_logout) `ssl' parameter is passed as 1 to
	  `userlist_clnt_logout';
	(handle_dump_master_runs) `ssl' parameter is passed as 1 to
	  `serve_clnt_master_page'.

	* serve-control.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* serve.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"time_t" type is used for timestamps instead "unsigned long";
	"size_t" type is used for storing various sizes;
	"ruint32_t" type is used instead of "unsigned long" in the
	  SHA1 array;
	(cmd_get_param) "Moscow" contest type is supported;
	(read_compile_packet) fixed a GCC warning;
	(read_run_packet) the same as above.

	* serve_clnt.h: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	(serve_clnt_submit_run) `ssl' parameter is added;
	(serve_clnt_submit_clar) `ssl' parameter is added;
	(serve_clnt_master_page) the same as above;
	(serve_clnt_new_run) the same as above.

	* super-serve.c: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* super-serve.h: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long".

	* super_html.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* super_html.h: "ej_types.h" is included;
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* super_html_2.c, super_html_3.c:
	"ej_cookie_t" type is used for cookies instead of "unsigned long long";
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long".

	* team.c: "ej_types.h" is included;
	"ej_ip_t" type is used for IP-addresses instead of "unsigned long";
	"ej_cookie_t" type is used for cookies inst. of "unsigned long long";
	(send_clar_if_asked) call of `serve_clnt_submit_clar' is updated;
	(submit_if_asked) call of `serve_clnt_submit_run' is updated;
	(action_logout) call of `userlist_clnt_logout' is updated.

	* team_extra.c: "ej_limits.h" is included;
	new limit constants from "ej_limits.h" are used insteaf of
	  RUNLOG_MAX_TEAM_ID, CLARLOG_MAX_CLAR_ID;
	(b32_number) `num' argument now has type "unsigned";
	(team_extra_append_warning) "ej_ip_t" is used for IP-address.

	* team_extra.h: copyright notice is updated;
	"ej_types.h" is included;
	"ej_ip_t" type is used instead of "unsigned long" for IP-addresses.

	* teamdb.c:
	(teamdb_get_uid_by_pid) "ej_cookie_t", "ej_ip_t" types are used.

	* teamdb.h: "ej_types.h" is included;
	(teamdb_get_uid_by_pid) "ej_cookie_t", "ej_ip_t" types are used.

	* tsc.c: copyright notice is updated;
	"ej_tsc_t" is used for CPU timestamps instead of "unsigned long long".

	* tsc.h: "ej_types.h" is included;
	"ej_tsc_t" is used for CPU timestamps instead of "unsigned long long".

	* userlist-server.c: "ej_types.h" is included;
	"ej_cookie_t" is used for cookies instead of "unsigned long long";
	"ej_ip_t" is used for IP-addresses instead of "unsigned long";
	"ej_tsc_t" is used for CPU timestamps intead of "unsigned long long";
	(generate_random_unsigned) this is new name for `generate_random_long'
	  and returns "unsigned int" instead of "unsigned long";
	contest identifier is "int" everywhere;
	user identifier is "int" everywhere.

	* userlist.c:
	(userlist_parse_date) "time_t" is used instead of "unsigned long";
	(userlist_unparse_date) the same as above;
	(userlist_delete_user_field) the same as above;
	(userlist_build_login_hash) "ej_tsc_t" type is used instead
	  of "unsigned long long";
	(userlist_build_cookie_hash) the same as above.

	* userlist.h: code cleanups:
	"ej_types.h" is included;
	PRIV_LEVEL_* constants are moved to "ej_types.h";
	USERLIST_UC_* constants are moved to "ej_types.h";
	"ej_ip_t" type is used instead of "unsigned long" for IP-addresses;
	"ej_cookie_t" type is used instead of "unsigned long long" for cookies;
	"time_t" type is used instead of "unsigned long" for timestamps.

	* userlist_xml.c:
	(parse_ip) "ej_ip_t" type is used instead of "unsigned long";
	(userlist_unparse_ip) the same as above;
	(parse_date) "time_t" type is used instead of "unsigned long";
	(unparse_date) the same as above.

	* xml_utils.h: "ej_types.h" is included;
	"ej_ip_t" type is used instead of "unsigned long" or "unsigned int".

	* genpasswd.c: initial revision

	* userlist_clnt.h: "ej_types.h" is included;
	"ej_ip_t" is used instead "unsigned long" for IP-addresses;
	"ej_cookie_t" is used instead of "unsigned long long" for cookies;
	(userlist_clnt_register_new) `ssl' parameter is added;
	(userlist_clnt_list_users) `ssl' parameter is added;
	(userlist_clnt_logout) `ssl' parameter is added.

	* userlist_proto.h: "ej_types.h" is included;
	general ejudge type definitions are moved to "ej_types.h";
	"ej_ip_t" type is used instead of "unsigned long" for IP-addresses;
	"ej_cookie_t" type is used instead of "long long" for cookies;
	"int" is used for contest identifiers instead of "long";
	"int" is used for user identifiers instead of "unsigned long";
	(struct userlist_table) `vintage' now has type "int";
	(struct userlist_pk_register_new) `ssl' field is added;
	(struct userlist_pk_do_logout) `ssl' field is added;
	(struct userlist_pk_list_users) `ssl' field is added;

	* users.c: "ej_types.h" is included;
	"ej_ip_t" is used for `user_ip' variable;
	(main) `ssl_flag' is passed to `userlist_clnt_list_users'.

2005-11-03  Alexander Chernov  <cher@ispras.ru>

	* compile.c: 
	(do_loop) fixes for 64-bit platforms.

	* cgi.c: 
	(parse_multipart) fixes for 64-bit platforms.

	* master_html.c: 
	(write_priv_users) fixes for 64-bit platforms;
	(write_priv_user) the same as above.

	* misctext.c: 
	(text_number_lines) fixes for 64-bit platforms.

	* ncurses_utils.c: 
	(do_choose_file) fixes for 64-bit platforms.

	* register.c: fixes for 64-bit platforms.

	* runlog_import.c: 
	(runlog_import_xml) fixes for 64-bit platforms.

	* sformat.c: 
	(sformat_message) fixes for 64-bit platforms.

	* super-serve.c: 
	(cmd_main_page) fixes for 64-bit platforms;
	(cmd_create_contest) fixes for 64-bit platforms.

	* team.c: fixes for 64-bit platforms.

	* teamdb.c: 
	(open_connection) fixes for 64-bit platforms;
	(teamdb_refresh) the same as above.

	* userlist-server.c:
	(attach_contest_extra) fixes for 64-bit platforms;
	(allocate_new_user) the same as above;
	(cmd_get_user_info) the same as above;
	(cmd_priv_get_user_info) the same as above;
	(cmd_list_all_users) the same as above;
	(cmd_list_standings_users) the same as above;
	(cmd_get_user_contests) the same as above.

	* userlist.c:
	(userlist_build_cookie_hash) fixes for 64-bit platforms.

	* serve_clnt.h:
	(serve_clnt_send_packet) parameter `size' now has type `size_t'.

	* serve_clnt.h:
	(serve_clnt_rejudge_by_mask) "const" qualifier is added to the
	  `mask' parameter.

	* super_clnt.h:
	(super_clnt_send_packet) `size' parameter now has `size_t' type.

	* userlist_clnt.h:
	(userlist_clnt_set_info) "const" qualifier is added to `info'
	  parameter;
	(userlist_clnt_set_passwd) "const" qualifier is added to
	  `old_pwd', `new_pwd' parameters;
	(userlist_clnt_team_set_passwd) "const" qualifier is added to
	  `old_pwd', `new_pwd' parameters.

2005-11-02  Alexander Chernov  <cher@ispras.ru>

	* configure.ac:
	added auto-detection of necesserity of -Wno-pointer-sign flag.

	* Makefile.unix.in:
	WPTRSIGN variable is added and used in CFLAGS, this variable
	is autoconfigured by configure.

	* master_html.c:
	(write_priv_all_runs) "use of uninitialized value" warning is fixed.

	* serve-cmd.c:
	(handle_full_import_xml) a bug in error reporting is fixed.

	* super-serve.c:
	(cmd_main_page) "use of uninitialized value" warning is fixed.

	* super_html.c:
	(super_html_main_page) "use of uninitialized value" warning is fixed;
	(super_html_edit_contest_page) a typo is fixed.

	* super_html_2.c:
	(super_html_set_contest_var) access tree node is not deleted,
	  if `default_is_allow' field is set.

	* super_html_3.c:
	(super_html_get_serve_header_and_footer) "use of uninitialized value"
	  warning is fixed;
	(invoke_compile_process) "missing sentinel point" warning is fixed.

	* userlist-server.c:
	(do_list_users) "use of uninitialized value" warning is fixed.

2005-10-31  Alexander Chernov  <cher@ispras.ru>

	* testing_report_xml.c:
	(parse_scoring) `Moscow' scoring system is supported.

	* edit-userlist.c:
	(display_user) new commands `o' (random password), `y' (copy
	  password) are handled;
	(display_registered_users) new command `f' is handled (modify
	  user's flag).

	* userlist-server.c:
	(cmd_user_op) new function to handle the new commands:
	  ULS_RANDOM_PASSWD, ULS_RANDOM_TEAM_PASSWD, ULS_COPY_TO_TEAM,
	  ULS_COPY_TO_REGISTER.

	* userlist_proto.h:
	new commands added: ULS_RANDOM_PASSWD, ULS_RANDOM_TEAM_PASSWD,
	  ULS_COPY_TO_TEAM, ULS_COPY_TO_REGISTER.

2005-10-29  Alexander Chernov  <cher@ispras.ru>

	* register.c:
	(action_register_new_user) check for e-mail sending error is
	  implemented and an appropriate error message is displayed
	  to the user.

	* userlist-server.c:
	(send_email_message) error is reported to the caller, if mail
	  sending has failed;
	(cmd_register_new) added check for email-sending failure and
	  reporting an appropriate error code.

	* userlist_proto.c: copyright notice is updated;
	message for the ULS_ERR_EMAIL_FAILED error is added.

	* userlist_proto.h: new error code ULS_ERR_EMAIL_FAILED is added.

2005-10-25  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c:
	(cmd_team_login) authentification policy is changed: is the
	  `disable_team_password' is set for the contest, only the registration
	  password is checked, but if `disable_team_password' is not set,
	  only the team password is checked.

	* prepare.c:
	New global configuration variable `score_tests' is added;
	(set_defaults) "moscow" scoring system is parsed;
	(prepare_set_global_defaults) "moscow" scoring system is parsed.

	* prepare.h: new SCORE_MOSCOW scoring system is added;
	(struct section_problem_data) field `score_tests' is added.

	* prepare_out.c:
	(prepare_unparse_global) "Moscow" scoring system is supported;
	(prepare_unparse_prob) `score_tests' variable is unparsed.

	* protocol.h: new SCORE_MOSCOW scoring system is added.

	* serve-control.c:
	(main) actions SUPER_ACTION_PROB_CHANGE_SCORE_TESTS,
	  SUPER_ACTION_PROB_CLEAR_SCORE_TESTS are handled.

	* super-serve.c:
	(cmd_set_value) commands SSERV_CMD_PROB_CHANGE_SCORE_TESTS,
	  SSERV_CMD_PROB_CLEAR_SCORE_TESTS are handled.

	* super_actions.h:
	new actions are added: SUPER_ACTION_PROB_CHANGE_SCORE_TESTS,
	  SUPER_ACTION_PROB_CLEAR_SCORE_TESTS.

	* super_html_3.c:
	(super_html_edit_global_parameters) New "moscow" scoring system is
	  supported;
	(super_html_edit_global_parameters) the same as above;
	(super_html_print_problem) form for editing `score_tests' variable is
	  printed;
	(super_html_prob_param) editing of `score_tests' is supported.

	* super_proto.h: new commands SSERV_CMD_PROB_CHANGE_SCORE_TESTS,
	  SSERV_CMD_PROB_CLEAR_SCORE_TESTS are added.

2005-10-24  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	new global configuration variable `disable_submit_after_ok' added.

	* prepare.h:
	(struct section_global_data) new field `disable_submit_after_ok'
	  added.

	* prepare_out.c:
	(prepare_unparse_global) unparsing of `disable_submit_after_ok'
	  is added.

	* serve-control.c:
	(main) changing the value of `disable_submit_after_ok' is supported.

	* super-serve.c:
	(cmd_set_value) changing the value of `disable_submit_after_ok'
	  is supported.

	* super_actions.h:
	new action SUPER_ACTION_GLOB_CHANGE_DISABLE_SUBMIT_AFTER_OK added.

	* super_html_3.c:
	(super_html_edit_global_parameters) form for editing
	  `disable_submit_after_ok' is added;
	(super_html_global_param) changind of `disable_submit_after_ok'
	  is supported.

	* super_proto.h:
	new command SSERV_CMD_GLOB_CHANGE_DISABLE_SUBMIT_AFTER_OK added.

2005-10-22  Alexander Chernov  <cher@ispras.ru>

	* run_packet.h:
	(struct run_request_packet) new field `time_limit_adj' is added.

	* prepare.c:
	global parameters `stand_show_att_num', `stand_sort_by_solved' are
	  added;
	problem parameter `lang_time_adj' is added.

	* prepare.h:
	(struct section_global_data) new fields `stand_show_att_num',
	  `stand_sort_by_solved' are added;
	(struct section_problem_data) new field `lang_time_adj' is added.

	* prepare_out.c:
	(prepare_unparse_global) `stand_show_att_num', `stand_sort_by_solved'
	  are unparsed;
	(prepare_unparse_prob) `lang_time_adj' is unparsed.

	* run.c:
	(run_tests) the `time_limit_adj' field of the incoming packet is
	  handled;
	(do_loop) the force quit packets are ignored in the unmanaged mode.

	* run_packet_1.c:
	(run_request_packet_read) the `time_limit_adj' field is handled.

	* run_packet_2.c:
	(run_request_packet_write) field `time_limit_adj' is handled.

	* run_packet_priv.h:
	(struct run_request_bin_packet) field `time_limit_adj' is added;
	maximal value of time limit adjustments (MAX_TIME_LIMIT_ADJ)
	is 100.

	* serve-control.c:
	editing of the new configuration variables `stand_show_att_num',
	  `stand_sort_by_solved', `lang_time_adj' is supported.

	* serve.c:
	(read_compile_packet) new `lang_time_adj' problem configuration
	  variable is supported.

	* super-serve.c:
	editing of the new configuration variables `stand_show_att_num',
	  `stand_sort_by_solved', `lang_time_adj' is supported.

	* super_actions.h: new actions added:
	  SUPER_ACTION_GLOB_CHANGE_STAND_SHOW_ATT_NUM,
	  SUPER_ACTION_GLOB_CHANGE_STAND_SORT_BY_SOLVED,
	  SUPER_ACTION_PROB_CHANGE_LANG_TIME_ADJ,
	  SUPER_ACTION_PROB_CLEAR_LANG_TIME_ADJ.

	* super_html_3.c:
	(super_html_edit_global_parameters) forms for editing
	  `stand_show_att_num' and `stand_sort_by_solved' are generated;
	(super_html_global_param) changing values of `stand_show_att_num'
	  and `stand_sort_by_solved' is supported;
	(super_html_print_problem) form for editing `lang_time_adj' is
	  generated;
	(super_html_prob_param) changing value of `lang_time_adj'
	  is supported.

	* super_proto.h:
	new protocol commands added: SSERV_CMD_GLOB_CHANGE_STAND_SHOW_ATT_NUM,
	  SSERV_CMD_GLOB_CHANGE_STAND_SORT_BY_SOLVED,
	  SSERV_CMD_PROB_CHANGE_LANG_TIME_ADJ,
	  SSERV_CMD_PROB_CLEAR_LANG_TIME_ADJ.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-10-20  Alexander Chernov  <cher@ispras.ru>

	* copyright.c: URL of ejudge is changed to www.ejudge.ru.

2005-10-17  Alexander Chernov  <cher@ispras.ru>

	* register.c: `:' character is allowed in user name.

	* prepare_out.c:
	(generate_abstract_tester) stupid bug fixed: missed leading "/" in
	  path.

2005-10-15  Alexander Chernov  <cher@ispras.ru>

	* prepare.c: new global configuration variables `stand_fail_attr',
	  `stand_trans_attr' are added.

	* prepare.h:
	(struct section_global_data) new fields `stand_fail_attr',
	  `stand_trans_attr' are added.

	* prepare_out.c:
	(prepare_unparse_global) `stand_fail_attr', `stand_trans_attr' are
	  unparsed.

	* serve-control.c:
	new actions for editing of `stand_fail_attr', `stand_trans_attr'
	  are handled.

	* super-serve.c:
	(cmd_set_value) new commands for editing the value of
	  `stand_fail_attr', `stand_trans_attr' are handled.

	* super_actions.h: new actions added:
	  SUPER_ACTION_GLOB_CHANGE_STAND_FAIL_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_FAIL_ATTR,
	  SUPER_ACTION_GLOB_CHANGE_STAND_TRANS_ATTR,
	  SUPER_ACTION_GLOB_CLEAR_STAND_TRANS_ATTR.

	* super_html_3.c:
	(super_html_edit_global_parameters) editing forms for
	  `stand_fail_attr', `stand_trans_attr' are generated;
	(super_html_global_param) changing value of `stand_fail_attr',
	  `stand_trans_attr' is supported.

	* super_proto.h:
	new commands added: SSERV_CMD_GLOB_CHANGE_STAND_FAIL_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_FAIL_ATTR,
	  SSERV_CMD_GLOB_CHANGE_STAND_TRANS_ATTR,
	  SSERV_CMD_GLOB_CLEAR_STAND_TRANS_ATTR.

	* runlog.c, runlog.h:
	(run_get_entries_ptr) new function, which returns a constant pointer
	  to runs array.

	* edit-userlist.c:
	(display_contests_menu) the `items' array is properly allocated and
	  initialized.

2005-10-13  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c:
	(generate_ejudge_xml) capability bits MASTER_LOGIN, JUDGE_LOGIN
	  are added for the administrator user.

2005-10-13  Alexander Chernov  <cher@ispras.ru>

	* sformat.c:
	(sformat_message) many new format specifications are supported:
	  %Uc, %UC, %Uo, %UO, %Ut, %UT, %Uu, %UU, %Uf, %UF, %Ud, %UD
	  %UL, %Up, %Uh, %UH, %UP
	  %UM[pracg]<num>[fFmMsSgGehoOuUtTdDaAHbBcC]

	* userlist-server.c:
	(split_table_spec) new function, which splits the user table rows
	  specification in the form "f1|f2|...|fn" into the array of
	  fields;
	(free_table_spec) new function that frees the array of fields;
	(do_list_users) customization of the registered users table using
	  the new elements <users_table_format>, <users_table_format_en>,
	  <users_table_legend>, <users_table_legend_en> is supported.

	* super_proto.h: new commands added:
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_FORMAT,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_FORMAT_EN,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_LEGEND,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_LEGEND_EN,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_FORMAT,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_FORMAT_EN,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_LEGEND,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_LEGEND_EN.

	* super_html_2.c:
	(super_html_clear_variable) support for clearing elements
	  <users_table_format>, <users_table_format_en>,
	  <users_table_legend>, <users_table_legend_en> is implemented;
	(super_html_set_contest_var) support for setting values of the
	  abovementioned elements is implemented.

	* super_html.c:
	(super_html_edit_contest_page) support for editing of elements
	  <users_table_format>, <users_table_format_en>, <users_table_legend>,
	  <users_table_legend_en> is implemented.

	* super_actions.h: new actions added:
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_FORMAT,
	  SUPER_ACTION_CNTS_CLEAR_USERS_TABLE_FORMAT,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_FORMAT_EN,
	  SUPER_ACTION_CNTS_CLEAR_USERS_TABLE_FORMAT_EN,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_LEGEND,
	  SUPER_ACTION_CNTS_CLEAR_USERS_TABLE_LEGEND,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_LEGEND_EN,
	  SUPER_ACTION_CNTS_CLEAR_USERS_TABLE_LEGEND_EN.

	* super-serve.c:
	new commands SSERV_CMD_CNTS_CHANGE_USERS_TABLE_FORMAT,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_FORMAT_EN,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_LEGEND,
	  SSERV_CMD_CNTS_CHANGE_USERS_TABLE_LEGEND_EN,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_FORMAT,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_FORMAT_EN,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_LEGEND,
	  SSERV_CMD_CNTS_CLEAR_USERS_TABLE_LEGEND_EN
	  are handled.

	* serve-control.c:
	new actions SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_FORMAT,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_FORMAT_EN,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_LEGEND,
	  SUPER_ACTION_CNTS_CHANGE_USERS_TABLE_LEGEND_EN
	  are handled.

	* contests.h:
	new elements <users_table_format>, <users_table_format_en>,
	<users_table_legend>, <users_table_legend_en> are supported;
	(struct contest_desc) new fields `users_table_format',
	  `users_table_format_en', `users_table_legend',
	  `users_table_legend_en' are added.

	* contests.c:
	new elements <users_table_format>, <users_table_format_en>,
	<users_table_legend>, <users_table_legend_en> are supported;
	(node_free) new elements are supported;
	(parse_contest) new elements are supported;
	(contests_unparse) new elements are supported.

2005-10-12  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* super_proto.h:
	SSERV_CMD_GLOB_CHANGE_USERS_ON_PAGE command is added.

	* super_html_3.c:
	(super_html_edit_global_parameters) editing of `users_on_page'
	  is supported;
	(super_html_global_param) changing the value of `users_on_page'
	  is supported.

	* super_actions.h:
	new action SUPER_ACTION_GLOB_CHANGE_USERS_ON_PAGE is added.

	* super-serve.c:
	SSERV_CMD_GLOB_CHANGE_USERS_ON_PAGE command is handled.

	* serve.c:
	(update_standings_file) call of `write_standings' is updated;
	(create_symlinks) multiple symlinks to the standings table are
	  created if standings page separation is supported;
	(do_loop) `teamdb_refresh' is called before creation of symlinks
	  in order to calculate the number of pages correctly.

	* serve-control.c:
	action SUPER_ACTION_GLOB_CHANGE_USERS_ON_PAGE is handled.

	* prepare_out.c:
	(prepare_unparse_global) `users_on_page' variable is unparsed.

	* prepare.h:
	(struct section_global_data) new field `users_on_page' is added;
	  new field `stand_file_name_2' is added.

	* prepare.c:
	new global configuration variable `users_on_page' is added;
	(make_stand_file_name_2) new function, which generates
	  the file name for second and further pages of the
	  standings table;
	(set_defaults) `make_stand_file_name_2' is called;

	* master_html.c:
	(write_priv_standings) calls of `do_write_standings',
	  `do_write_kirov_standings' are updated;
	(write_raw_standings) the same as above.

	* html.h: (write_standings) function prototype is updated;
	(do_write_kirov_standings) function prototype is updated;
	(do_write_standings) function prototype is updated.

	* html.c: (do_write_kirov_standings) parameter `stand_dir' is added;
	  parameter `header_str' is added;
	  standings header is now printed in this function instead of the
	  caller function;
	  the standings are separated into several pages, if the
	  `users_on_page' global configuration variable is set;
	(do_write_standings) new parameter `header_str' is added;
	  new parameter `user_name' is added;
	  the standings table header is printed in this function instead
	  of the caller;
	(write_standings) new parameter `users_on_page' is added;
	  lots of previously commented code is removed;
	  the standings table header is now printed in the corresponding
	  functions;
	  call of `do_write_kirov_standings', `do_write_standings'
	  is updated;
	(write_virtual_standings) call of `do_write_standings'
	  is updated.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-10-07  Alexander Chernov  <cher@ispras.ru>

	* edit-userlist.c:
	(display_registered_users) new commands 't' and '0' are supported. The
	  first command toggles selection for all users, the second command
	  clears the selection;
	  registration of one or selected users for selected contests is
	  supported;
	(display_contests_menu) new commands ':', 't', '0' are supported for
	  selecting contests;
	(do_display_user_menu) the selection is preserved over editing
	  sessions;
	  new commands 't', '0' are supported (see above);
	  registration of one or selected users for selected contests is
	  supported.

2005-10-06  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* mkChangeLog.c: copyright notice is updated;
	(main) date parsing is updated for CVS 1.12.

2005-10-06  Alexander Chernov  <cher@ispras.ru>

	* userlist_xml.c: phones tag support is removed;
	(parse_phones) function is removed;
	(parse_members) <phone> element is treated as string;
	  grade valid range is greatly extended;
	(do_parse_user) <phone> element is treated as string;
	(unparse_phones) function is removed;
	(unparse_member) <phone> is unparsed as a string;
	(unparse_user) <phone> is unparsed as a string.

	* userlist.h: USERLIST_T_PHONES tag code is removed;
	user field code USERLIST_NN_PHONE is added;
	member field code USERLIST_NM_PHONE is added;
	(struct userlist_member) `phone' field is now string;
	(struct userlist_user) `phone' field is now string.

	* userlist.c:
	(userlist_get_member_field_str) `phone' field is supported;
	(userlist_delete_member_field) `phone' field is supported;
	(userlist_set_member_field_str) `phone' field is supported;
	(userlist_get_user_field_str) `phone' field is supported;
	(userlist_set_user_field_str) `phone' field is supported;
	(userlist_delete_user_field) `phone' field is supported.

	* userlist-server.c:
	(remove_all_user_cookies) the previous implementation did not
	  refresh the cookie hash, so it was rewritten;
	(do_set_user_info) changing `phone' field of the user and members
	  is supported.

	* super_proto.h:
	new commands added: SSERV_CMD_CNTS_CLEAR_REGISTER_NAME_COMMENT,
	  SSERV_CMD_CNTS_CLEAR_ALLOWED_LANGUAGES,
	  SSERV_CMD_CNTS_CHANGE_MEMBER_DELETE,
	  SSERV_CMD_CNTS_CHANGE_REGISTER_NAME_COMMENT,
	  SSERV_CMD_CNTS_CHANGE_ALLOWED_LANGUAGES.

	* super_html_3.c:
	(super_html_update_variant_map) renamed from `update_variant_map' and
	  made non-static;
	(super_html_edit_variants) call of `super_html_update_variant_map'
	  is updated;
	  the page footer is printed using `super_html_contest_footer_menu';
	(super_html_variant_param) incorrect parsing of the parameter value
	  is fixed.

	* super_html_2.c:
	(super_html_clear_variable) clearing of <user_name_comment>,
	  <allowed_languages> is supported;
	(super_html_set_contest_var) setting of DISABLE_MEMBER_DELETE,
	  <user_name_comment>, <allowed_languages> is supported;
	  bug is fixed with incorrect memory freeing;
	(super_html_commit_contest) variant map is loaded from file,
	  if necessary.

	* super_html.h:
	(super_html_update_variant_map) function prototype is added.

	* super_html.c:
	(super_html_contest_page_menu) "Variants" link is added to the variant
	  mapping editing page;
	(super_html_edit_contest_page) DISABLE_MEMBER_DELETE contest flag
	  editing is supported;
	  <user_name_comment> element editing is supported;
	  <allowed_languages> element editing is supported.

	* super_actions.h:
	new actions added: SUPER_ACTION_CNTS_CHANGE_MEMBER_DELETE,
	  SUPER_ACTION_CNTS_CHANGE_REGISTER_NAME_COMMENT,
	  SUPER_ACTION_CNTS_CLEAR_REGISTER_NAME_COMMENT,
	  SUPER_ACTION_CNTS_CHANGE_ALLOWED_LANGUAGES,
	  SUPER_ACTION_CNTS_CLEAR_ALLOWED_LANGUAGES.

	* super-serve.c:
	new commands are handled: CNTS_CLEAR_REGISTER_NAME_COMMENT,
	  CNTS_CLEAR_ALLOWED_LANGUAGES,
	  CNTS_CHANGE_MEMBER_DELETE,
	  CNTS_CHANGE_REGISTER_NAME_COMMENT,
	  CNTS_CHANGE_ALLOWED_LANGUAGES.

	* serve-control.c:
	new actions are handled: CNTS_CLEAR_REGISTER_NAME_COMMENT,
	  CNTS_CLEAR_ALLOWED_LANGUAGES,
	  CNTS_CHANGE_MEMBER_DELETE,
	  CNTS_CHANGE_REGISTER_NAME_COMMENT,
	  CNTS_CHANGE_ALLOWED_LANGUAGES.

	* run.c:
	(check_config) standard checkers are supported for variant problems.

	* register.c: editing of 'Phone' field is supported;
	<allowed_languages> element of the contest XML file is handled;
	<user_name_comment> element is handled;
	DISABLE_MEMBER_DELETE flag is handled;
	(parse_allowed_languages) new function to parse "allowed_languages"
	  parameter;
	(initialize) new contest XML fields are handled;
	(read_user_info_from_form) setting `show_login', `show_email',
	  `use_cookies_default' variables is no longer supported, these
	  variables are always set to 0, 0, 1;
	  specific handling of `languages' user info field is implemented;
	(read_user_info_from_server) `show_email', `use_cookies_default',
	  `show_login' flags are always set to 0, 1, 0;
	  `phone' member field is supported;
	  `grade' valid value range is increased;
	(map_user_languages) new function to parse the user's `languages'
	  field;
	(display_edit_registration_data_page) forms for changing the
	  values of `show_login', `show_email', `use_cookies_default'
	  flags are removed, since these parameters are now not
	  changeable;
	  <user_name_comment> element is supported;
	  special handling of `languages' field is implemented;
	  message of the number of members in the role is not printed,
	  is this number is not changeable;
	  "Delete" button is not printed, if DISABLE_MEMBER_DELETE
	  flag is set for the contest;
	(action_change_password) the login page is displayed after
	  password change.

2005-10-05  Alexander Chernov  <cher@ispras.ru>

	* edit-userlist.c: editing of `Phone' fields is supported.

	* contests.h:
	new elements <user_name_comment>, <allowed_languages> are added;
	new field codes for `phone' user and member fields are added;
	(struct contest_desc) new fields `user_name_comment',
	  `allowed_languages', `disable_member_delete' are added.

	* contests.c:
	support for new elements <user_name_comment>, <allowed_languages>
	  is added;
	(node_free) `user_name_comment', `allowed_languages' fields are
	  freed;
	(parse_client_flags) `DISABLE_MEMBER_DELETE' flag support
	  is added;
	(parse_contest) new elements are handled;
	(contests_unparse) new elements are handled.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-09-29  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* prepare.c:
	(prepare_global_free_func) `free_variant_map' is renamed to
	  `prepare_free_variant_map';
	(prepare_free_variant_map) see above;
	(prepare_free_variant_map) `name' field is freed;
	(parse_variant_map) variant number is allowed to be 0.

	* prepare.h:
	(prepare_unparse_global) `need_variant_map' parameter is added;
	(prepare_free_variant_map) new function prototype;
	(prepare_unparse_variants) new function prototype.

	* prepare_out.c: "prepare_serve.h" is included;
	(prepare_unparse_global) `need_variant_map' parameter is added;
	  `variant_map_file' configuration variable is printed, if the
	  `need_variant_map' parameter is added;
	(prepare_unparse_unhandled_global) `variant_map_file' is handled
	  fully;
	(prepare_unparse_prob) `variant_num' is handled;
	(prepare_unparse_unhandled_prob) `variant_num' is no longer
	  handled;
	(generate_abstract_tester) the default value for `check_dir'
	  is changed for DOS checker;
	(prepare_unparse_variants) new function to unparse the
	  variant map.

	* prepare_serve.h:
	(struct variant_map_item) `name', `var_num' fields are added;
	(struct variant_map) `prob_map_size', `prob_rev_map_size'
	  fields are added.

	* serve-control.c: <ctype.h> is included;
	(action_view_contest) SSERV_CMD_PROB_EDIT_VARIANTS,
	  SSERV_CMD_PROB_EDIT_VARIANTS_2 actions are supported;
	(action_variant_param) new function to implement
	  variant assingment table editing;
	(main) new actions are handled.

	* super-serve.c:
	(super_serve_clear_edited_contest) `var_header_text',
	  `var_footer_text' are freed;
	(cmd_main_page) new commands handled: SSERV_CMD_PROB_EDIT_VARIANTS,
	  SSERV_CMD_PROB_EDIT_VARIANTS_2;
	(cmd_set_value) new commands handled:
	  SSERV_CMD_PROB_CHANGE_VARIANT_NUM,
	  SSERV_CMD_PROB_CHANGE_VARIANTS,
	  SSERV_CMD_PROB_DELETE_VARIANTS.

	* super-serve.h:
	(struct sid_state) new fields added: `var_header_text',
	  `var_footer_text'.

	* super_actions.h: new actions added.

	* super_html.c:
	(super_html_main_page) "Master" and "Judge" CGI program are
	  opened in a new browser window;
	(super_html_contest_page) the same as above.

	* super_html.h: (super_html_edit_variants) new function prototype;
	(super_html_variant_param) new function prototype.

	* super_html_2.c:
	(super_html_commit_contest) saving of the `variant_map' file
	  is supported; the contest root and conf directories are
	  commited to the VCS.

	* super_html_3.c: "userlist_clnt.h" is included;
	"userlist_proto.h" is included;
	"userlist.h" is included;
	"prepare_serve.h" is included;
	(super_html_print_problem) editing of `variant_num' is supported;
	(super_html_prob_param) setting of `variant_num' is supported;
	(unparse_serve_cfg) detection whether the variant map is required
	  is added, and the call of `prepare_unparse_global' is updated;
	(super_html_check_tests) variant problems are supported;
	(parse_variant_map) new function to parse the variant map file;
	(vmap_sort_func) function for sorting variant map users;
	(update_variant_map) new function for updating the variant map
	  with the current contest information;
	(super_html_edit_variants) new function to display the
	  "Variant assignment table" page;
	(super_html_variant_param) new function to edit the
	  variants assignments.

	* super_proto.h:
	new commands added: SSERV_CMD_PROB_CHANGE_VARIANT_NUM,
	  SSERV_CMD_PROB_EDIT_VARIANTS, SSERV_CMD_PROB_EDIT_VARIANTS_2,
	  SSERV_CMD_PROB_CHANGE_VARIANTS, SSERV_CMD_PROB_DELETE_VARIANTS.

	* userlist-server.c:
	(remove_all_user_cookies) new function to remove all the user's
	  cookies;
	(cmd_set_passwd) all the user's cookies are removed after password
	  change;
	(cmd_team_set_passwd) the same as above.

	* vcs.c:
	(svn_add_dir) new function to perform "add dir" action for SVN;
	(cvs_add_dir) new function to perform "add dir" action for CVS;
	(vcs_add_dir) new function to perform "add dir" action.

	* vcs.h: (vcs_add_dir) new function prototype.

2005-09-27  Alexander Chernov  <cher@ispras.ru>

	* collect-emails.c: the copyright notice is updated;
	(main) the program banner is printed to the stderr.

2005-09-24  Alexander Chernov  <cher@ispras.ru>

	* super_proto.h: SSERV_CMD_CLEAR_MESSAGES command is added.

	* super_html_3.c:
	(recompile_checker) C checker compilation command is fixed.

	* super_html.c:
	(super_html_contest_page) "Clear" button action changed to
	  SUPER_ACTION_CLEAR_MESSAGES.

	* super_actions.h: SUPER_ACTION_CLEAR_MESSAGES is added.

	* super-serve.c:
	(cmd_simple_command) `SSERV_CMD_CLEAR_MESSAGES' is handled;
	(contest_mngmt_cmd) `SSERV_CMD_CLEAR_MESSAGES' is handled.

	* serve-control.c: SUPER_ACTION_CLEAR_MESSAGES action is supported.

2005-09-23  Alexander Chernov  <cher@ispras.ru>

	* super_html_3.c:
	(recompile_checker) command line option for gcc is fixed.

2005-09-22  Alexander Chernov  <cher@ispras.ru>

	* dos2unix_str.c: initial revision

	* super_html_3.c:
	(super_html_global_param) dos2unix recoding is performed for
	  template texts;
	support for new standard checkers added:
	  cmp_bytes, cmp_int_seq, cmp_long_long_seq
	  cmp_unsigned_int_seq, cmp_unsigned_long_long_seq,
	  cmp_double, cmp_double_seq,
	  cmp_long_double, cmp_long_double_seq;
	(super_html_print_problem) editing of `checker_env' is supported;
	(super_html_prob_param) editing of `checker_env' is supported;
	(dos2unix_str) moved to a separate files.

	* super_html_2.c:
	(super_html_set_contest_var) dos2unix recoding is performed for
	  header and footer texts.

	* misctext.h: (dos2unix_str) new function prototype is added.

	* files.make: dos2unix_str.c is added.

	* super_proto.h:
	new commands added: SSERV_CMD_PROB_CHANGE_CHECKER_ENV,
	  SSERV_CMD_PROB_CLEAR_CHECKER_ENV.

	* super_actions.h:
	new actions added: SUPER_ACTION_PROB_CHANGE_CHECKER_ENV,
	  SUPER_ACTION_PROB_CLEAR_CHECKER_ENV.

	* super-serve.c: new super-serve commands are handled:
	  SSERV_CMD_PROB_CHANGE_CHECKER_ENV,
	  SSERV_CMD_PROB_CLEAR_CHECKER_ENV.

	* serve-control.c:
	new actions handled: SUPER_ACTION_PROB_CHANGE_CHECKER_ENV,
	  SUPER_ACTION_PROB_CLEAR_CHECKER_ENV.

	* prepare_out.c: (prepare_unparse_prob) `checker_env' is generated;
	(prepare_unparse_unhandled_prob) `checker_env' is no longer
	  printed because handled.

	* parsecfg.h: (sarray_unparse) new function prototype;
	(sarray_parse) new function prototype.

	* parsecfg.c:
	(sarray_unparse) new function, which generates string representation
	  for a set of environment variables to be used in contest
	  settings editing;
	(sarray_parse) new function, which parses string representation
	  for a set of environment variables.

	* ejudge-setup.c:
	(generate_install_script) creation of symlink for serve-control
	  is added.

	* Makefile.unix.in:
	`po' file is generated only if ENABLE_NLS flag is set.

	* INSTALL.RUS, INSTALL: fixes and additions

2005-09-16  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c, super_html_2.c:
	$Id$ is properly escaped in order not to be substutued by
	  the ejudge CVS.

	* super_html_2.c:
	(get_contest_access_by_num) new function to return the reference to
	  IP access list by the ip access number;
	(copy_contest_access) new function to copy IP access lists;
	(super_html_set_contest_var) `get_contest_access_by_num' is used, so
	  the code is slightly restructured;
	  `SSERV_CMD_CNTS_COPY_ACCESS' is handled using `copy_contest_access';
	(super_html_serve_probe_run) new function to handle
	  `SSERV_CMD_SERVE_MNG_PROBE_RUN';
	(super_html_commit_contest) "$Id$" is printed to the header of the
	  new contest XML file and serve.cfg file;
	  the new contest XML file is put under version control;
	  version control for the serve.cfg is supported, but the new serve.cfg
	  is not put under version control automatically;
	  call of `super_serve_start_serve_test_mode' is updated.

2005-09-16  Alexander Chernov  <cher@ispras.ru>

	* super_html_2.c: fix

	* ejudge-setup.c, super_html_2.c:
	\$Id\$ is properly escaped in order not to be substutued by
	  the ejudge CVS.

	* team.c:
	(main) link to the "Problem status summary" is added to the table of
	  contents;
	  the link to the problem statements is not printed in the table of
	  contents in the virtual contest mode.

	* super_proto.h:
	new protocol commands: SSERV_CMD_SERVE_MNG_PROBE_RUN,
	  SSERV_CMD_CNTS_COPY_ACCESS,
	  SSERV_CMD_GLOB_CHANGE_CPU_BOGOMIPS,
	  SSERV_CMD_GLOB_DETECT_CPU_BOGOMIPS,
	  SSERV_CMD_PROB_CHANGE_START_DATE,
	  SSERV_CMD_PROB_CLEAR_START_DATE,
	  SSERV_CMD_PROB_CHANGE_DEADLINE,
	  SSERV_CMD_PROB_CLEAR_DEADLINE.

	* super_html_3.c: "cpu.h" is included;
	(html_date_select) is moved to a separate file;
	(super_html_edit_global_parameters) editing of `cpu_bogomips' is
	  supported;
	(super_html_global_param) handling of `cr_serialization_key' is fixed;
	  editing of `cpu_bogomips' is supported;
	(super_html_edit_languages) the language's `compile_id' is used as the
	  language key in the parameter editing forms;
	(super_html_print_problem) editing of `start_date', `deadline'
	  is supported;
	(super_html_prob_cmd) default suffix for `tgz_sfx' is fixed;
	(super_html_prob_param) editing of `start_date', `deadline' is
	  supported.

	* super_html_2.c:
	(get_contest_access_by_num) new function to return the reference to
	  IP access list by the ip access number;
	(copy_contest_access) new function to copy IP access lists;
	(super_html_set_contest_var) `get_contest_access_by_num' is used, so
	  the code is slightly restructured;
	  `SSERV_CMD_CNTS_COPY_ACCESS' is handled using `copy_contest_access';
	(super_html_serve_probe_run) new function to handle
	  `SSERV_CMD_SERVE_MNG_PROBE_RUN';
	(super_html_commit_contest) "\$Id\$" is printed to the header of the
	  new contest XML file and serve.cfg file;
	  the new contest XML file is put under version control;
	  version control for the serve.cfg is supported, but the new serve.cfg
	  is not put under version control automatically;
	  call of `super_serve_start_serve_test_mode' is updated.

2005-09-15  Alexander Chernov  <cher@ispras.ru>

	* super_html.h: (super_html_serve_probe_run) new function prototype.

	* super_html.c: (html_date_select) moved to a separate file;
	(super_html_contest_page) "Do probe run" button for the `serve'
	  is uncommented - invokes SUPER_ACTION_SERVE_MNG_PROBE_RUN action;
	(super_html_edit_access_rules) added generation of a control to
	  copy ip access rules - invokes SUPER_ACTION_CNTS_COPY_ACCESS
	  action.

	* super_actions.h: new actions: SUPER_ACTION_CNTS_COPY_ACCESS,
	  SUPER_ACTION_GLOB_CHANGE_CPU_BOGOMIPS,
	  SUPER_ACTION_GLOB_DETECT_CPU_BOGOMIPS,
	  SUPER_ACTION_PROB_CHANGE_START_DATE,
	  SUPER_ACTION_PROB_CLEAR_START_DATE,
	  SUPER_ACTION_PROB_CHANGE_DEADLINE,
	  SUPER_ACTION_PROB_CLEAR_DEADLINE.

	* super-serve.h:
	(super_serve_start_serve_test_mode) parameter `pass_socket' is added.

	* super-serve.c:
	(super_serve_start_serve_test_mode) new parameter `pass_socket'
	  is added;
	  this socket is passed with -S option to the `serve';
	(cmd_main_page) SSERV_CMD_SERVE_MNG_PROBE_RUN command is handled,
	  `super_html_serve_probe_run' is called in this case;
	(cmd_set_value) SSERV_CMD_CNTS_COPY_ACCESS,
	  SSERV_CMD_PROB_CHANGE_START_DATE,
	  SSERV_CMD_PROB_CLEAR_START_DATE,
	  SSERV_CMD_PROB_CHANGE_DEADLINE,
	  SSERV_CMD_PROB_CLEAR_DEADLINE,
	  SSERV_CMD_GLOB_CHANGE_CPU_BOGOMIPS,
	  SSERV_CMD_GLOB_DETECT_CPU_BOGOMIPS
	  are handled.

	* serve.c: (cmd_team_page) parameter `accepting_mode' is passed to
	  `write_team_page'.

	* serve-control.c:
	(action_view_contest) SSERV_CMD_SERVE_MNG_PROBE_RUN is handled;
	(action_copy_ip_param) new function to handle ip access list
	  copying command;
	(action_prob_date_param) new function to handle problem date
	  parameters commands;
	(main) new actions SUPER_ACTION_SERVE_MNG_PROBE_RUN,
	  SUPER_ACTION_CNTS_COPY_ACCESS,
	  SUPER_ACTION_PROB_CLEAR_START_DATE,
	  SUPER_ACTION_PROB_CLEAR_DEADLINE,
	  SUPER_ACTION_PROB_CHANGE_START_DATE,
	  SUPER_ACTION_PROB_CHANGE_DEADLINE,
	  SUPER_ACTION_GLOB_CHANGE_CPU_BOGOMIPS,
	  SUPER_ACTION_GLOB_DETECT_CPU_BOGOMIPS
	  are handled.

	* prepare_out.c: (do_str_mb_empty) function is commented out;
	(prepare_unparse_global) `cpu_bogomips' is printed;
	(prepare_unparse_prob) `start_date', `deadline' are printed;
	(prepare_unparse_unhandled_prob) `tgz_dir' is commented out;
	  `deadline', `start_date' is commented out;
	(prepare_unparse_testers) problems with `disable_testing' are ignored;
	(prepare_further_instructions) problems with `disable_testing'
	  are ignored.

	* prepare.h:
	(struct section_global_data) `cpu_bogomips' field is added.

	* prepare.c: "cpu.h" is included;
	new global parameter `cpu_bogomips' is added;
	(prepare_new_global_section) `cpu_bogomips' is initialized.

	* misctext.h: (html_date_select) function prototype is added.

	* html.h: (write_team_page) parameter `accepting_mode' is added.

	* html.c:
	(write_user_problems_summary) new function to report the summary
	  for all problems on the team's page;
	(write_team_page) new parameter `accepting_mode' is added;
	  new "Problem status summary" section is printed;
	  link to the problem text is generated;
	  `write_user_problems_summary' is called.

	* ejudge-setup.c: "cpu.h" is included;
	(generate_serve_cfg) "cpu_bogomips" is generated;
	  "\$Id\$" is generated;
	(generate_contest_xml) "\$Id\$" is added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-09-14  Alexander Chernov  <cher@ispras.ru>

	* files.make: html_date_select.c is added.

	* html_date_select.c: initial revision

2005-09-12  Alexander Chernov  <cher@ispras.ru>

	* cpu.h: initial revision

	* files.make: cpu.h, win32/cpu.c, unix/cpu.c are added.

	* Makefile.unix.in: libcommon.a: $(ARCH)/cpu.o added

2005-08-27  Alexander Chernov  <cher@ispras.ru>

	* copyright.c: (make_copyright) ejudge home page is updated.

2005-08-19  Alexander Chernov  <cher@ispras.ru>

	* super_proto.h: new commands: SSERV_CMD_GLOB_CHANGE_TGZ_DIR,
	  SSERV_CMD_GLOB_CLEAR_TGZ_DIR,
	  SSERV_CMD_PROB_CHANGE_BINARY_INPUT.

	* super_html_3.c: "ej_process.h" is included;
	(super_html_edit_global_parameters) editing of `tgz_dir' is supported;
	(super_html_global_param) editing `tgz_dir' is supported;
	(read_process_output) moved to a separate file;
	(load_cs_languages) call of `read_process_output' is updated;
	(super_html_edit_languages) "Update versions" button is added;
	(super_html_update_versions) new function to update the version
	  info for all supported languages;
	(super_html_print_problem) editing of `binary_input' is supported;
	(super_html_prob_cmd) `binary_input', `tgz_dir', `tgz_sfx' are
	  properly initialized in handling of `SSERV_CMD_PROB_ADD_ABSTRACT'
	  request;
	  editing of `binary_input' is supported;
	(super_html_read_serve) error is reported, if no abstract testers
	  are defined;
	(check_test_file) new parameter `bin_flag' is added. The test files
	  are not checked for end-of-line characters, if this flag is set;
	(get_compiler_path) call of `read_process_output' is updated;
	(super_html_check_tests) problems, which testing is disabled
	  are skipped;
	  `binary_input' problem variable is handled.

	* super_html_2.c: "ej_process.h" is included;
	"vcs.h" is included;
	(diff_func) new function to generate difference file for two
	  contest XML files;
	(super_html_commit_contest) the difference between the old and the
	  new versions of serve.cfg and contest.xml files is printed;
	  the updated version of the contest.xml is commited to the
	  version control system.

	* super_html.h: (super_html_open_contest) `ip' parameter is added;
	(super_html_close_contest) the same as above;
	(super_html_make_invisible_contest) the same as above;
	(super_html_make_visible_contest) the same as above;
	(super_html_serve_managed_contest) the same as above;
	(super_html_serve_unmanaged_contest) the same as above;
	(super_html_run_managed_contest) the same as above;
	(super_html_run_unmanaged_contest) the same as above;
	(super_html_update_versions) new function prototype is added.

	* super_html.c: "vcs.h" is included;
	(commit_contest_xml) new function to commit the updated file;
	(super_html_open_contest) `ip' parameter is added;
	  the IP-address is printed to the audit record;
	  the updated XML is commited to the version control system;
	(super_html_close_contest) the same as above;
	(super_html_make_invisible_contest) the same as above;
	(super_html_make_visible_contest) the same as above;
	(super_html_serve_managed_contest) the same as above;
	(super_html_serve_unmanaged_contest) the same as above;
	(super_html_run_managed_contest) the same as above;
	(super_html_run_unmanaged_contest) the same as above.

	* super_actions.h:
	new actions added: SUPER_ACTION_GLOB_CHANGE_TGZ_DIR,
	  SUPER_ACTION_GLOB_CLEAR_TGZ_DIR,
	  SUPER_ACTION_PROB_CHANGE_BINARY_INPUT,
	  SUPER_ACTION_LANG_UPDATE_VERSIONS.

	* super-serve.c:
	(cmd_simple_command) call of `super_html_open_contest' updated;
	  call of `super_html_close_contest' updated;
	  call of `super_html_make_visible_contest' updated;
	  call of `super_html_make_invisible_contest' updated;
	(cmd_simple_top_command) SSERV_CMD_LANG_UPDATE_VERSIONS handled;
	(cmd_set_value) SSERV_CMD_PROB_CHANGE_BINARY_INPUT handled;
	  SSERV_CMD_GLOB_CHANGE_TGZ_DIR handled;
	  SSERV_CMD_GLOB_CLEAR_TGZ_DIR handled.

	* serve-control.c:
	(parse_config) bug in parsing of the configuration file is fixed:
	  the configuration file name was parsed as the file contents;
	  attribute "ssl" for <ip> element is supported in the configuration
	  file;
	(check_source_ip) "ssl" attribute is handled to discriminate
	  the SSL and the non-SSL connections;
	(main) SUPER_ACTION_LANG_UPDATE_VERSIONS is handled;
	  SUPER_ACTION_PROB_CHANGE_BINARY_INPUT;
	  SUPER_ACTION_GLOB_CHANGE_TGZ_DIR is handled;
	  SUPER_ACTION_GLOB_CLEAR_TGZ_DIR is handled.

	* run.c:
	(run_tests) the tests are not converted unix->dos, if `binary_input'
	  flag is set for the problem.

	* prepare_out.c: (c_armor) bug fixed;
	(prepare_unparse_global) `show_deadline' is handled;
	  `tgz_dir' is handled;
	(prepare_unparse_unhandled_global) `tgz_dir' removed, because
	  handled in `prepare_unparse_global';
	(prepare_unparse_prob) `binary_input' is handled;
	  handling of `info_sfx' improved;
	  `use_tgz', `tgz_sfx', `tgz_pat' are handled;
	  `tests_to_accept' is handled better;
	(prepare_unparse_unhandled_prob) handling of `tgz_sfx' improved;
	(generate_abstract_tester) testers for DOS and Perl are supported;
	(prepare_unparse_testers) the testers are generated in the
	  order of the corresponding enumerated type;
	(prob_instr) instructions for .tgz files are generated,
	  if necessary.

	* prepare_dflt.h:
	default values for `show_deadline', `binary_input' configuration
	  variables are added.

	* prepare.h:
	(struct section_problem_data) new field `binary_input' is added;
	new field codes: PREPARE_FIELD_PROB_BINARY_INPUT,
	  PREPARE_FIELD_PROB_USE_TGZ, PREPARE_FIELD_PROB_TGZ_DIR.

	* prepare.c: fixed type of the `stand_show_ok_time' global variable;
	new problem variable `binary_input';
	(global_init_func) `show_deadline' is initialized;
	(prepare_problem_init_func) `binary_input' is initialized;
	(set_defaults) `show_deadline' is initialized properly;
	  `binary_input' is handled;
	(prepare) fixed a bug in initialization of conditional variables;
	(prepare_set_global_defaults) `tgz_dir' is handled;
	  `show_deadline' is handled;
	(prepare_set_problem_defaults) `binary_input' is handled;
	  `disqualified_penalty' is initialized to the `run_penalty' by
	  default;
	  `tgz_sfx', `info_sfx' are initialized to default values;
	(prepare_new_global_section) `show_deadline' is initialized;
	(prepare_parse_config_file) conditional variables are initialized;
	(prepare_set_prob_value) `binary_input' field is handled;
	  `use_tgz' field is handled;
	  `tgz_dir' field is handled;
	  handling of `info_sfx', `tgz_sfx' is updated.

	* parsecfg.c:
	(read_variable) fixed invalid reading of escaped characters
	  inside "string".

	* files.make: new files added: vcs.[ch], ej_process.[ch].

	* contests.h:
	(contests_unparse_and_save) new parameters added: `diff_func',
	  `p_diff_txt'.

	* contests.c:
	(parse_member) removed initialization of `min_count' and
	  `max_count' fields to -1: they must be initialized to 0;
	(unparse_fields) `min_count', `max_count', `init_count' are
	  unparsed even if their values are 0. 0 is valid.
	(contests_unparse_and_save) two parameters added:
	  `diff_func', `p_diff_txt', which allows getting the diff
	  between the old and the new versions of the file.

	* Makefile.unix.in:
	(libcommon.a) added ej_process.o to the list of dependencies.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* ej_process.h, vcs.c, vcs.h: initial revision

2005-08-10  Alexander Chernov  <cher@ispras.ru>

	* INSTALL, INSTALL.RUS: *** empty log message ***

2005-08-10  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c:
	(generate_contest_xml) "managed" and "run_managed" attributes are
	  set in the generated contest.

	* prepare_out.c:
	(generate_abstract_tester) references to "capexec" and "libdropcaps.so"
	  are generated only if the kernel support is detected.

2005-08-08  Alexander Chernov  <cher@ispras.ru>

	* edit-userlist.c: 
	(do_display_user_menu) minor spelling fix.

2005-08-07  Alexander Chernov  <cher@ispras.ru>

	* contests.c: new attribute "ssl" for element <ip> is added;
	(parse_access) attribute "ssl" is handled;
	(do_check_ip) `ssl' parameter is added;
	(contests_check_ip) `ssl' parameter is added;
	(contests_check_register_ip) the same;
	(contests_check_register_ip_2) the same;
	(contests_check_users_ip) the same;
	(contests_check_users_ip_2) the same;
	(contests_check_team_ip) the same;
	(contests_check_team_ip_2) the same;
	(contests_check_judge_ip) the same;
	(contests_check_judge_ip_2) the same;
	(contests_check_master_ip) the same;
	(contests_check_master_ip_2) the same;
	(contests_check_serve_control_ip) the same;
	(contests_check_serve_control_ip_2) the same;
	(unparse_access) "ssl" attribute is supported.

	* contests.h: new attribute "ssl" for element <ip> is added;
	(struct contest_ip) `ssl' field is added;
	(contests_check_ip) `ssl' parameter is added;
	(contests_check_register_ip) the same;
	(contests_check_register_ip_2) the same;
	(contests_check_users_ip) the same;
	(contests_check_users_ip_2) the same;
	(contests_check_team_ip) the same;
	(contests_check_team_ip_2) the same;
	(contests_check_judge_ip) the same;
	(contests_check_judge_ip_2) the same;
	(contests_check_master_ip) the same;
	(contests_check_master_ip_2) the same;
	(contests_check_serve_control_ip) the same;
	(contests_check_serve_control_ip_2) the same.

	* master.c:
	(make_self_url) connections over https (secure channel) are supported:
	  self-referencing URL is constructed correctly, and the global
	  variable `ssl_flag' is set;
	(authentificate) `ssl_flag' is passed to `userlist_clnt_priv_cookie',
	  `userlist_clnt_priv_login';
	(main) `ssl_flag' is passed to `contests_check_master_ip',
	  `contests_check_judge_ip'.

	* master_html.c:
	(write_xml_testing_report) "real-time" for each run is reported,
	  if available.

	* prepare.c:
	new global configuration variable: `enable_memory_limit_error';
	new tester configuration variable: `enable_memory_limit_error'.

	* prepare.h:
	(struct section_global_data) `enable_memory_limit_error' field added;
	(struct section_tester_data) `enable_memory_limit_error' field added.

	* prepare_dflt.h: DFLT_G_ENABLE_MEMORY_LIMIT_ERROR is added.

	* prepare_out.c:
	(prepare_unparse_global) `enable_memory_limit_error' variable is
	  supported;
	(generate_abstract_tester) `enable_memory_limit_error' configuration
	  variable is set for the "Linux" and "Linux-shared" abstract testers.

	* register.c:
	(initialize) support for connections over https (secure channel) is
	  implemented: self-referencing URL is constructed correctly, and the
	  global `ssl_flag' variable is set;
	(check_contest_eligibility) `ssl_flag' is passed to
	  `contests_check_register_ip';
	(authentificate) `ssl_flag' is passed to `userlist_clnt_lookup_cookie',
	  `userlist_clnt_login'.

	* run.c:
	(struct testinfo) `real_time' field is added to store the real
	  execution time on the test;
	(generate_xml_report) "real-time" attribute of the <test> element
	  is generated, if set;
	(run_tests) `task_SetMaxTimeMillis' function is used only if
	  present in the reuse library. The result of the `configure' tests
	  is used;
	  memory limit error detection is implemented;
	  `task_EnableMemoryLimitError' function is called, if supported by
	  the reuse library (as reported by configure script);
	  `task_GetRealTime' function is called, if supported by the reuse
	  library;
	  `task_IsMemoryLimit' function is called, if memory limit error
	  detection is enabled in the incoming run request packed and in
	  the current tester configuration. Also support from the reuse
	  library is required.

	* run_packet.h:
	(struct run_request_packet) `memory_limit' flag is added.

	* run_packet_1.c:
	(run_request_packet_read) FLAGS_MEMORY_LIMIT flag is supported.

	* run_packet_2.c:
	(run_request_packet_write) FLAGS_MEMORY_LIMIT flag is supported.

	* run_packet_priv.h: new flag `FLAGS_MEMORY_LIMIT' is added.

	* serve-cmd.c: 
	(authentificate) new parameter `ssl' in call of
	  `userlist_clnt_priv_cookie' is set to 1;
	(handle_login) new parameter `ssl' in call of
	  `userlist_clnt_priv_login' is set to 1.

	* serve-control.c:
	(make_self_url) connectons over https (secure channel) are supported,
	  the self-referencing URL is constructed correctly, and the
	  global variable `ssl_flag' is set;
	(authentificate) the `ssl_flag' is passed to
	  `userlist_clnt_priv_cookie', `userlist_clnt_priv_login';
	(action_set_param) call of `super_clnt_set_param' is updated;
	(action_set_date_param) the same as above;
	(action_set_ip_param) the `ssl' CGI parameter variable is parsed
	  and passed to the server;
	(action_perform_permission_op) call of `super_clnt_set_param' is
	  updated;
	(action_save_form_fields) the same as above;
	(action_lang_cmd) the same as above;
	(action_prob_cmd) the same as above;
	(action_prob_param) the same as above;
	(action_prob_add_abstract) the same as above;
	(action_prob_add) the same as above;
	(main) SUPER_ACTION_GLOB_CHANGE_ENABLE_MEMORY_LIMIT_ERROR is handled.

	* serve.c:
	(struct client_state) `ssl' field is added to store whether the
	  connection uses https (secure channel);
	(get_peer_local_user) call of `teamdb_get_uid_by_pid' is updated,
	  and the `ssl' flag is stored to the client state structure;
	(read_compile_packet) the value of the `enable_memory_limit_error'
	  global configuration variable is stored to the run request packet.

	* super-serve.c:
	(struct client_state) `ssl' field is added to store whether the
	  connection uses https (secure channel);
	(get_peer_local_user) call of `userlist_clnt_get_uid_by_pid_2'
	  is updated, and the value of the `ssl' flag is stored to the
	  client state structure;
	(cmd_main_page) `ssl' flag is passed to `super_html_main_page',
	  `super_html_contest_page', `super_html_log_page';
	(cmd_set_value) `param5' is passed to `super_html_set_contest_var';
	  `SSERV_CMD_GLOB_CHANGE_ENABLE_MEMORY_LIMIT_ERROR' is handled.

	* super_actions.h:
	new action SUPER_ACTION_GLOB_CHANGE_ENABLE_MEMORY_LIMIT_ERROR added.

	* super_clnt.h: (super_clnt_set_param) `param5' parameter is added.

	* super_html.c:
	(super_html_main_page) `ssl' parameter is added, which is set to 1
	  by the CGI-script, if the connection uses https (secure channel);
	  `ssl' flag is passed to `contests_check_judge_ip_2',
	    `contests_check_master_ip_2',
	    `contests_check_serve_control_ip_2';
	(super_html_contest_page) the same as above;
	(super_html_log_page) the same as above;
	(print_access_summary) support for "ssl" attribute of the <ip>
	  element is added;
	(html_ssl_select) new function to generate HTML selection form
	  for the `ssl' flag;
	(super_html_edit_access_rules) dialog for changing `ssl' flag of the
	  <ip> element is generated.

	* super_html.h: (super_html_main_page) `ssl' parameter is added;
	(super_html_contest_page) `ssl' parameter is added;
	(super_html_log_page) `ssl' parameter is added;
	(super_html_set_contest_var) `param5' parameter is added.

	* super_html_2.c:
	(super_html_set_contest_var) parameter `param5' is added according
	  to the change in the corresponding command packet;
	  editing of the `ssl' attribute of IP limitations is supported.

	* super_html_3.c: (super_html_edit_global_parameters) editing of
	  `enable_memory_limit_error' is supported;
	(super_html_global_param) changing value of `enable_memory_limit_error'
	  is supported.

	* super_proto.h:
	new command SSERV_CMD_GLOB_CHANGE_ENABLE_MEMORY_LIMIT_ERROR added;
	(struct prot_super_pkt_set_param) field `param5' is added.

	* team.c:
	(make_self_url) support for connections over https is added. The
	  self-referencing URL is constructed correctly, and the global
	  variable `ssl_flag' is set;
	(authentificate) the `ssl_flag' is passed to
	  `userlist_clnt_team_cookie' and `userlist_clnt_team_login';
	(main) the `ssl_flag' is passed to `contests_check_team_ip' to
	  allow discrimination between secure and unsecure connections.

	* teamdb.c:
	(teamdb_get_uid_by_pid) new parameter `p_ssl' is added to store
	  the `ssl' flag, i.e. whether the connection uses secure channel;
	  this information is received from the userlist-server.

	* teamdb.h:
	(teamdb_get_uid_by_pid) new parameter `p_ssl' is added to store whether
	  the connection uses https (secure channel).

	* testing_report_xml.c:
	the "real-time" attribute of the <test> element is supported;
	(parse_test) "real-time" attribute is parsed.

	* testing_report_xml.h:
	(struct testing_report_test) field `real_time' added to store the real
	  execution time for a test.

	* unicorn-configure: upgraded to fpc-2.0.0.

	* userlist-server.c:
	(struct client_state) `ssl' field is added to store whether the client
	  uses https (secure channel);
	(cmd_do_login) `ssl' flag of the incoming packet is handled, i.e.
	  connections over https are supported;
	(cmd_team_login) the same as above;
	(cmd_priv_login) the same as above;
	(cmd_check_cookie) the same as above;
	(cmd_team_check_cookie) the same as above;
	(cmd_priv_check_cookie) the same as above;
	(cmd_get_uid_by_pid) the `ssl' flag is stored to the outbound packet;
	(cmd_get_uid_by_pid_2) the same as above.

	* userlist_clnt.h:
	(userlist_clnt_login) `ssl' parameter is added, which should be set
	  to 1, if the connection uses https (secure channel);
	(userlist_clnt_team_login) the same as above;
	(userlist_clnt_lookup_cookie) the same as above;
	(userlist_clnt_team_cookie) the same as above;
	(userlist_clnt_priv_login) the same as above;
	(userlist_clnt_priv_cookie) the same as above;
	(userlist_clnt_get_uid_by_pid) new parameter `p_ssl' is added, which is
	  used to store the ssl flag of the connection, i.e. whether the
	  connection uses https (secure channel);
	(userlist_clnt_get_uid_by_pid_2) the same as above.

	* userlist_proto.h: 
	(struct userlist_pk_do_login) `ssl' field is added;
	(struct userlist_pk_check_cookie) `ssl' field is added;
	(struct userlist_pk_uid) `ssl' field is added;
	(struct userlist_pk_uid_2) `ssl' field is added.

	* users.c: copyright notice is updated;
	(initialize) added support for https. If the connection uses https
	  rather that http, self-referencing url is constructed correctly,
	  and the global flag `ssl_flag' is set;
	(main) `ssl_flag' is passed to `contests_check_users_ip' to allow
	  discrimination between secure and insecure connections.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-08-06  Alexander Chernov  <cher@ispras.ru>

	* configure.ac: added check for the new reuse functions:
	  task_SetMaxTimeMillis, task_GetRealTime, task_IsMemoryLimit,
	  task_EnableMemoryLimitError.

	* config.h.in: added HAVE_* macros for the new reuse functions:
	  task_SetMaxTimeMillis, task_GetRealTime, task_IsMemoryLimit,
	  task_EnableMemoryLimitError.

2005-07-30  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist-server.c:
	(attach_contest_extra) avoid shared memory key == 0.

2005-07-28  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* files.make:
	new files added: userlist_clnt/get_param.c, serve_clnt/get_param.c.

	* super_html_3.c:
	(super_html_check_tests) the test score is checked only if the
	  contest is not in ACM system.

	* serve-cmd.c: <reuse/logger.h> is included;
	(handle_userlist_server_param) new function to handle userlist-server
	  parameter request commands;
	(handle_serve_get_param) new function to handle serve parameter
	  request commands;
	new commands handled: "dump-problems", "dump-standings",
	  "get-contest-name", "get-contest-type";
	(main) default logger level is set to LOG_WARNING.

	* serve.c:
	(cmd_get_param) new function to perform various parameter viewing
	  requests;
	(dump_problems) new function to dump the problems info in the CSV
	  format;
	(cmd_view) `DUMP_PROBLEMS' request is handled;
	  "Content-type" HTML header is printed in this function in the
	  `DUMP_STANDINGS' request;
	`DUMP_PROBLEMS', `GET_CONTEST_TYPE' requests are handled.

	* serve_clnt.h: (serve_clnt_get_param) new function prototype.

	* super_html_3.c:
	(check_test_score) new function to validate the test score lists;
	(super_html_check_tests) checking of test score is added using the
	  `check_test_score' function.

	* userlist-server.c:
	(cmd_get_contest_name) bug in output packet length calculation is
	  fixed.

	* userlist_clnt.h:
	(userlist_clnt_get_param) new function prototype added.

	* protocol.h:
	new commands added: SRV_CMD_DUMP_PROBLEMS, SRV_CMD_GET_CONTEST_TYPE;
	new reply code added: SRV_RPL_DATA;
	(struct prot_serve_pkt_data) new reply structure.

	* master_html.c:
	(write_raw_standings) "Content-Type" header generation is moved out
	  of this function.

2005-07-23  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	`time_limit_millis' problem configuration variable is added;
	(prepare_problem_init_func) `time_limit_millis' initialized to -1;
	(set_defaults) `time_limit_millis' problem configuration variable
	  is supported;
	(prepare_set_problem_defaults) `time_limit_millis' is supported;
	(prepare_set_prob_value) `time_limit_millis' is supported.

	* prepare.h:
	(struct section_problem_data) `time_limit_millis' field is added;
	`PREPARE_FIELD_PROB_TIME_LIMIT_MILLIS' field code is added.

	* prepare_out.c:
	(prepare_unparse_prob) `time_limit_millis' variable is supported.

	* run.c:
	(run_tests) `time_limit_millis' problem configuration variable
	  is supported.

	* serve-control.c: editing `time_limit_millis' is supported.

	* super-serve.c:
	(cmd_set_value) SSERV_CMD_PROB_CHANGE_TIME_LIMIT_MILLIS request
	  is supported.

	* super_actions.h:
	SUPER_ACTION_PROB_CHANGE_TIME_LIMIT_MILLIS action added.

	* super_html_3.c:
	(super_html_print_problem) support for editing `time_limit_millis'
	  problem configuration variable is added;
	(super_html_prob_cmd) `time_limit_millis' is initialized to 0;
	(super_html_prob_param) `time_limit_millis' variable is supported.

	* super_proto.h:
	SSERV_CMD_PROB_CHANGE_TIME_LIMIT_MILLIS action is added.

2005-07-22  Alexander Chernov  <cher@ispras.ru>

	* super-serve.h:
	Too many fixes and additions. The super-serve functionality is
	  basically implemented.

	* super_proto.c: texts for two new errors are added.

	* super_html.c:
	Too many fixes and additions. The super-serve functionality is
	  basically implemented.

	* super_proto.h: many new commands added.

	* super_actions.h: many new actions added.

	* super-serve.c:
	Many new additions. Interactive editing of contest settings is
	  supported.

	* serve-control.c:
	Many new additions. The functionality is basically implemented.

	* super_html.h: super-serve functionality is basically completed.

	* super_html_2.c: in progress...

	* prepare.c: "prepare_vars.h" is included;
	"prepare_dflt.h" is included;
	"userlist_cfg.h" is included;
	new global configuration variables: `secure_run', `stand_ignore_after',
	  `ignore_success_time';
	new problem configuration variable: `check_cmd';
	section free functions are added to all section descriptors;
	all the default values for fields are moved to "prepare_dflt.h";
	(global_init_func) almost all fields are initialized to -1;
	(prepare_global_free_func) new function to free the global section;
	(prepare_language_free_func) new function to free the language
	  section;
	(prepare_problem_init_func) fields `time_limit', `real_time_limit',
	  `full_score', `max_vm_size', `max_stack_size' are initialized to -1;
	(prepare_problem_free_func) new function to free the problem
	  section;
	(prepare_tester_free_func) a new function;
	(free_testsets) a new function;
	(free_deadline_penalties) a new function;
	(free_personal_deadlines) a new function;
	(free_variant_map) a new function;
	(free_user_adjustment_map) a new function;
	(free_user_adjustment_info) a new function;
	(set_defaults) global fields are initialized;
	  initialization of problem section variable is reorganized;
	  new fields are reorganized;
	(prepare_set_global_defaults) a new function, which processes the
	  global section and set default values to unset variabled;
	(prepare_set_problem_defaults) a new function, which processes the
	  problem configuration section and set the default values to
	  unset variables;
	(prepare_new_global_section) a new function, which creates a brand
	  new global section and sets reasonable default values;
	(prepare_parse_config_file) new function;
	(prepare_alloc_global) new function;
	(prepare_alloc_language) new function;
	(prepare_alloc_problem) new function;
	(prepare_alloc_tester) new function;
	(prepare_copy_problem) new function;
	(prepare_set_prob_value) new function.

	* prepare.h:
	(struct section_global_data) new fields added: `secure_run',
	  `stand_ignore_after', `stand_ignore_after_d', `ignore_success_time',
	  `unhandled_vars';
	(struct section_problem_data) new fields are added: `check_cmd',
	  `max_vm_size', `max_stack_size', `unhandled_vars';
	(struct section_tester_data) new field `unhandled_vars';
	all definitions of external variables are moved to a separate header
	  file;
	(prepare_new_global_section) new function prototype;
	(prepare_parse_config_file) new function prototype;
	(prepare_set_global_defaults) new function prototype;
	(prepare_global_free_func) new function prototype;
	(prepare_language_free_func) new function prototype;
	(prepare_problem_free_func) new function prototype;
	(prepare_tester_free_func) new function prototype;
	(prepare_free_config) new function prototype;
	(prepare_alloc_global) new function prototype;
	(prepare_alloc_language) new function prototype;
	(prepare_alloc_problem) new function prototype;
	(prepare_alloc_tester) new function prototype;
	(prepare_problem_init_func) new function prototype;
	(prepare_copy_problem) new function prototype;
	(prepare_set_prob_value) new function prototype;
	(prepare_unparse_global) new function prototype;
	(prepare_unparse_unhandled_global) new function prototype;
	(prepare_check_forbidden_global) new function prototype;
	(prepare_unparse_lang) new function prototype;
	(prepare_unparse_unhandled_lang) new function prototype;
	(prepare_check_forbidden_lang) new function prototype;
	(prepare_unparse_prob) new function prototype;
	(prepare_unparse_unhandled_prob) new function prototype;
	(prepare_check_forbidden_prob) new function prototype;
	(prepare_unparse_testers) new function prototype;
	(prepare_further_instructions) new function prototype;
	(prepare_unparse_is_supported_arch) new function prototype;
	(prepare_unparse_is_supported_tester) new function prototype;
	(prepare_set_problem_defaults) new function prototope.

	* html.c:
	(do_write_kirov_standings) new global configuration variable
	  `stand_ignore_after' is supported: all the submits after the
	  specified date are ignored;
	(do_write_standings) `stand_ignore_after' configuration variable is
	  supported;
	  `ignore_success_time' global configuration variable is supported.

	* serve.c:
	(cmd_priv_command_0) the archive directories are removed only
	  if the corresponding configuration variable is set;
	  it is possible to change limited duration to unlimited and vice
	  versa;
	(main) call of `run_open' function is updated.

	* serve-cmd.c:
	(handle_dump_all_users) new function to dump the whole user
	  database;
	new command "dump-all-users" is supported.

	* runlog.h: 
	(run_open) new parameter `init_duration' is added.

	* runlog.c:
	(read_runlog) parameter `init_duration' is added, which is the initial
	  contest duration;
	  if the new file is created, its header is initialized correctly and
	  flushed to the file;
	(run_open) new parameter `init_duration' is added, which is used when
	  a new runlog file is created;
	(run_reset) file version number is set to 1, and the file header is
	  flushed;
	(runlog_check) invalid duration is considered to be < -1;
	RUN_CHECK_FAILED is a valid run status.

	* run.c:
	(html_print_by_line) <i> tag is no longer generated to the output;
	(run_tests) output file, error file, checker output file are not
	  read explicitly, if the full archive mode is set;
	(do_loop) `last_activity_time' variable is correctly updated;
	(check_config) score summ is not checked in the ACM mode.

	* ejudge-setup.c:
	(generate_serve_cfg) "secure_run" parameter set in the configuration
	  file, if secure execution is supported;
	(generate_contest_xml) capability bit names are fixed;
	(generate_ejudge_xml) <super_serve_log> element is generated,
	  capability bit names are fixed.

	* edit-userlist.c:
	(display_user) call of `userlist_clnt_add_field' is updated;
	(do_display_user_menu) user selection and mass user operation commands
	  are supported, new commands are added:
	  `:' - select/unselect a user;
	  'c' - register one user/selected users for a contest;
	  'm' - add many new users using login pattern.

	* contests.c: "fileutl.h" is included;
	(contests_unparse_and_save) the contest XML file is not overwritten
	  if it is not changed;
	  default permission for a new file is set to 0644.

	* contest_tmpl.c: additions and improvements.

	* master.c:
	(action_dump_users) call of `userlist_clnt_dump_database' is updated.

	* master_html.c:
	(write_priv_all_runs) calculation of compiling and running runs
	  is added.

	* compile.c: (do_loop) the compile request packet is properly freed.

	* clean-users.c: 
	(main) call of `run_open' is updated.

	* team.c:
	(action_change_password) if the team password is disabled, the master
	  password is changed;
	(main) `Change password' option is always available.

	* teamdb.c:
	(teamdb_dump_database) call of `userlist_clnt_dump_database' is
	  updated;

	* testing_report_xml.c:
	(parse_testing_report) 0 tests for a problem is allowed.

	* userlist-server.c:
	(do_dump_database) new parameter `html_flag' is added. If this
	  parameter is not set, html decorations (Content-type:, etc),
	  are not generated;
	(do_dump_whole_database) new function to dump the whole user
	  database;
	(cmd_dump_database) call of `do_dump_database' is updated;
	(cmd_dump_whole_database) new function to handle
	  ULS_DUMP_WHOLE_DATABASE request;
	(cmd_add_field) when a new user is added, its id is returned
	  to the client;
	(cmd_table) ULS_DUMP_WHOLE_DATABASE is handled.

	* userlist_clnt.h:
	(userlist_clnt_add_field) parameter `user_id' is now a pointer
	  parameter `p_user_id', because when a new user is created, its
	  user_id is returned to the client and is stored in this variable;
	(userlist_clnt_dump_database) parameter `cmd' is added;
	  parameter `html_flag' is added.

	* userlist_proto.h: ULS_DUMP_WHOLE_DATABASE command is added;
	(struct userlist_pk_dump_database) new field `html_flag' is added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* configure.ac: `runperl' script is added.

	* prepare_dflt.h, prepare_out.c, super_html_3.c: initial revision

2005-07-08  Alexander Chernov  <cher@ispras.ru>

	* userlist_clnt.h:
	(userlist_clnt_admin_process) new parameters added:
	  `p_uid', `p_login', `p_name'.

	* userlist-server.c:
	(cmd_admin_process) the verbose information including user id,
	  user login, and user name is returned to the client.

	* teamdb.c:
	(open_connection) use of `userlist_clnt_admin_process' is updated.

	* parsecfg.h: <stdio.h> is included;
	(parse_param) the second parameter now has `FILE *' type as it should;
	  new parameter `p_cond_count' is added.

	* parsecfg.c:
	(parse_param) the input stream parameter is passed as FILE * instead
	  of void * hack;
	  new parameter `p_cond_count' is added, where the count for
	  conditional compilation fragments is stored;
	(param_free) the empty section name is treated as the [global]
	  section.

	* files.make:
	new files added: html_start_form.c, prepare_out.c, super_html_3.c,
	  prepare_vars.h, prepare_dflt.h.

	* ejudge-setup.c:
	(generate_serve_cfg) generation of `serve.cfg' is updated: memory
	  limits are set to 64M, check_cmd is moved to [problem] section.

	* edit-userlist.c, clean-users.c: 
	(main) use of `userlist_clnt_admin_process' is updated.

2005-07-04  Alexander Chernov  <cher@ispras.ru>

	* master.c: 
	(initialize) call of `parse_param' is updated.

	* team.c: (initialize) call of `parse_param' is updated.

2005-07-03  Alexander Chernov  <cher@ispras.ru>

	* prepare_vars.h: initial revision

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* sformat.c, sformat.h:
	(sformat_message) all structure pointers are declared as `const'.

	* varsubst.c, team_extra.c: copyright notice is updated;
	"prepare_vars.h" is included.

	* serve.c, runlog_xml.c, runlog_import.c, run.c:
	"prepare_vars.h" is included.

	* printing.c: copyright notice is updated;
	"prepare_vars.h" is included.

	* prepare_serve.c, master_html.c, html.c:
	"prepare_vars.h" is included.

	* diff.c: copyright notice is updated;
	"prepare_vars.h" is included.

	* compile_packet_1.c, compile.c, archive_paths.c:
	"prepare_vars.h" is included.

2005-06-27  Alexander Chernov  <cher@ispras.ru>

	* parsecfg.h: copyright notice is updated;
	(struct config_section_info) new field `free_func' is added;
	(param_free) new function prototype added;
	(param_merge) new function prototype added;
	(param_alloc_section) new function prototype added.

	* parsecfg.c: <reuse/logger.h> is included;
	(param_free) new function implemented;
	(param_alloc_section) new function implemented;
	(param_merge) new function implemented.

2005-06-26  Alexander Chernov  <cher@ispras.ru>

	* cher-configure: support for FreePascal 2.0.0

	* configure.ac: compilers version scripts are added

2005-06-24  Alexander Chernov  <cher@ispras.ru>

	* prepare.h: PREPARE_USE_CPP flag is removed.

	* prepare.c:
	(prepare) support for preprocessor invokation is removed.

	* html_start_form.c: initial revision

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* misctext.h: <stdio.h> is included;
	(html_start_form) prototype is added.

	* master_html.c:
	(html_start_form) is moved to a separate file (html_start_form.c);
	calls of `html_start_form' are updated according to prototype change.

	* html.h: (html_start_form) prototype is moved to misctext.h.

	* html.c: calls of `html_start_form' are updated.

	* run.c, compile.c, serve.c:
	(main) removed handling of `-E' option (preprocessor invocation)
	  since conditional compilation support is implemented in the
	  configuration parser itself.

	* super_html.c:
	(html_start_form) is moved to a separate file (html_start_form.c);
	calls of `html_start_form' are updated according to prototype change.

	* contests.c: "xml_utils.h", "misctext.h" are included;
	(node_free) `CONTEST_CONTEST' and `CONTEST_CAP' nodes are handled
	  properly by freeing all the strings stored. Now the strings in the
	  tree have only one reference from the primary point of use;
	(parse_access) `text' fields of DOM tree are freed;
	  `xml_parse_ip_mask' is used;
	(parse_member) `text' fields of DOM tree are freed;
	(parse_capabilities) `text' fields of DOM tree are freed;
	  `caps_node' field is set;
	(parse_contest) new parameter `no_subst_flag' is added. If this
	  parameter is set, no default values are assigned to the fields;
	(parse_one_contest_xml) new parameter `no_subst_flag' is added,
	  which is passed to the `parse_contest' function;
	(contests_load) a new function, which just loads the XML file;
	(contests_new_node) a new function, which creates a new DOM node;
	(contests_free) NULL pointers are supported;
	(contests_free_2) new function to release an arbitrary subtree
	  of the DOM tree;
	(contests_get) use of `parse_one_contest_xml' is updated;
	(contests_write_header) `cnts' parameter is now "const";
	(unparse_access) new static function is implemented;
	(unparse_fields) new static function is implemented;
	(unparse_text) new static function is implemented;
	(contests_unparse) new function which generates textual representation
	  for the given contest DOM tree;
	(contests_unparse_and_save) new function, which saves the XML
	  for the given contest.

	* contests.h:
	(struct contest_desc) `autoregister', `disable_team_password' fields
	    how have `unsigned char' type instead of `int';
	  `reg_deadline' field now has `time_t' type instead of
	    `unsigned long';
	  field `caps_node' is added to simplify editing of the DOM tree;
	(contests_load) new function prototype;
	(contests_free) new function prototype;
	(contests_free_2) new function prototype;
	(contests_new_node) new function prototype;
	(contests_unparse_and_save) new function prototype;
	(contests_write_header) `cnts' parameter is now "const".

	* ejudge-setup.c:
	(generate_contest_xml) capabilities OPCAP_PRINT_RUN, OPCAP_EDIT_CONTEST
	  are set on the new contest;
	(generate_ejudge_xml) capability OPCAP_EDIT_CONTEST is set.

	* files.make: new files added:
	  super_clnt/create_contest.c, super_clnt/set_param.c;
	  contest_tmpl.c, html_hyperref.c, super_html_2.c;
	  xml_utils/parse_ip_mask.c, xml_utils/unparse_ip_mask.c.

	* html.h:
	(html_hyperref) the function prototype is moved to `misctext.h'.

	* master.c:
	(log_out_if_asked) use of `userlist_clnt_logout' is updated.

	* master_html.c:
	(html_hyperref) the function is moved to a separate file
	  `html_hyperref.c'.

	* misctext.h: (html_hyperref) new function prototype is added.

	* opcaps.c: copyright notice is updated;
	new capability `OPCAP_EDIT_CONTEST' is supported;
	(opcaps_check) the implementation is moved to opcaps.h as inline
	  function;
	(opcaps_unparse) new function to generate a textual representation
	  of capability bits;
	(opcaps_is_contest_cap) new function to check whether a capability
	  bit is a contest capability bit;
	(opcaps_get_name) new function, which returns the name of the
	  capability bit.

	* opcaps.h: copyright notice is updated;
	new capability `OPCAP_EDIT_CONTEST' is added;
	(opcaps_check) is implemented as inline function;
	(opcaps_unparse) new function prototype;
	(opcaps_is_contest_cap) new function prototype;
	(opcaps_get_name) new function prototype.

	* serve-cmd.c:
	(handle_logout) use of `userlist_clnt_logout' is updated.

	* serve-control.c:
	(action_view_contest) `EDIT_CONTEST_XML' command is supported;
	(action_create_contest) new function is implemented;
	(action_edit_current_contest) new function is implemented;
	(action_edit_permissions) new function is implemented;
	(action_create_contest_2) new function is implemented;
	(action_simple_command) new function is implemented;
	(action_simple_contest_edit_command) new function is implemented;
	(action_simple_edit_command) new function is implemented;
	(action_set_param) new function is implemented;
	(action_set_date_param) new function is implemented;
	(action_set_ip_param) new function is implemented;
	(action_perform_permission_op) new function is implemented;
	(action_save_form_fields) new function is implemented;
	(main) many new actions to support editing of `contest.xml' file
	  are supported.

	* super-serve.c:
	(startup_err) bug is fixed: vsnprintf is called instead snprintf;
	(sid_state_find) new function is implemented;
	(sid_state_add) new function is implemented;
	(sid_state_get) new function is implemented;
	(sid_state_clear) new function is implemented;
	(sid_state_delete) new function is implemented;
	(sid_state_cleanup) new function is implemented;
	(cmd_main_page) many new commands for editing of contest.xml
	  are supported;
	(cmd_create_contest) new function is implemented;
	(cmd_simple_top_command) new function is implemented;
	(cmd_set_value) new function is implemented;
	(packet_handlers) many new commands for editing of contest.xml
	  are supported.

	* super-serve.h: copyright notice is updated;
	(struct sid_state) new structure to store the server state
	  regarding communication with the client with the given session_id.

	* super_actions.h: many new actions for contest editing are added;
	unimplemented actions are marked with /* ! */.

	* super_clnt.h: copyright notice is updated;
	(super_clnt_create_contest) new function prototype;
	(super_clnt_set_param) new function prototype.

	* super_html.c: <time.h> is included;
	(hyperref) the function is removed, since its replacement
	  function `html_hyperref' is now located in a separate file;
	(html_hidden_var) new function implemented;
	(html_boolean_select) new function implemented;
	(html_edit_text_form) new function implemented;
	(html_date_select) new function implemented;
	(html_numeric_select) new function implemented;
	(super_html_main_page) new parameter `sstate' is added;
	  `html_hyperref' is used instead of `hyperref';
	  added controls to change vieving mode: viewing of invisible,
	    closed, or unmanageable files;
	  added controls to create a new contest or edit the current
	    contest;
	  added button to restart the server;
	(super_html_contest_page) `html_hyperref' is used instead of
	    `hyperref';
	  added control to edit the contest configuration file;
	(super_html_report_error) new function implemented;
	(super_html_create_contest) new function implemented;
	(print_string_editing_row) new static function implemented;
	(print_access_summary) new static function implemented;
	(print permissions) new static function implemented;
	(print_form_fields_2) new static function implemented;
	(print_form_fields_3) new static function implemented;
	(print_form_fields) new static function implemented;
	(super_html_edit_contest_page) new function implemented;
	(super_html_edit_access_rules) new function implemented;
	(super_html_edit_permission) new function implemented;
	(print_field_row_select) new static function implemented;
	(super_html_edit_form_fields) new function implemented;
	(super_html_edit_template_file) new function implemented;
	(super_html_create_contest_2) new function implemented.

	* super_html.h: copyright notice is updated;
	(super_html_main_page) the `sstate' parameter is added;
	(super_html_edit_contest_page) new function prototype;
	(super_html_edit_access_rules) new function prototype;
	(super_html_edit_permission) new function prototype;
	(super_html_edit_form_fields) new function prototype;
	(super_html_edit_template_file) new function prototype;
	(super_html_create_contest) new function prototype;
	(super_html_create_contest_2) new function prototype;
	(super_html_commit_contest) new function prototype;
	(contest_tmpl_new) new function prototype;
	(contest_tmpl_clone) new function prototype;
	(super_html_clear_variable) new function prototype;
	(super_html_set_contest_var) new function prototype;
	(super_html_report_error) new function prototype.

	* super_html_2.c:
	(super_html_commit_contest) the current contest is cleared after
	  successful commit.

	* super_proto.c: copyright notice is updated;
	texts for the new error codes are added.

	* super_proto.h:
	many new super-serve commands are added to support editing of
	  contest.xml file;
	new error codes: CONTEST_ALREADY_USED, CONTEST_EDITED, NOT_IMPLEMENTED,
	  INVALID_PARAMETER, CONTEST_NOT_EDITED, DUPLICATED_LOGIN.
	new packet structures: prot_super_pkt_create_contest,
	  prot_super_pkt_set_param.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-06-23  Alexander Chernov  <cher@ispras.ru>

	* team.c: 
	(action_logout) call of `userlist_clnt_logout' is updated.

	* userlist-server.c:
	(cmd_is_valid_cookie) new function to perform ULS_IS_VALID_COOKIE
	  command;
	(cmd_table) ULS_IS_VALID_COOKIE command is handled.

	* userlist_clnt.h: 
	(userlist_clnt_logout) new parameter `cmd' is added.

	* userlist_proto.h: copyright notice is updated;
	new command ULS_IS_VALID_COOKIE is added.

	* xml_utils.h: 
	(xml_parse_ip_mask) new function prototype;
	(xml_unparse_ip_mask) new function prototype.

	* contest_tmpl.c, html_hyperref.c, super_html_2.c: initial revision

2005-06-15  Alexander Chernov  <cher@ispras.ru>

	* run.c: "digest_io.h", "filehash.h" are included;
	(struct testinfo) new fields added: has_input_digest,
	  has_correct_digest, has_info_digest, input_digest, correct_digest,
	  info_digest;
	(generate_xml_report) the input, correct, and info files digest (sha1)
	  is written to the protocol file, if available;
	(run_tests) in the full archive mode the input, correct and info
	  files digests are calculated.

	* master_html.c: "filehash.h", "digest_io.h" are included;
	(write_tests) when input, correct, or info files are displayed, their
	  sha1 checksum (digest) is checked against the checksum stored in the
	  testing protocol file, and a warning is displayed in case of
	  mismatch.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* testing_report_xml.h:
	(struct testing_report_test) new fields added: has_input_digest,
	  has_correct_digest, has_info_digest, input_digest, correct_digest,
	  info_digest.

	* testing_report_xml.c:
	new attributes supported: input-digest, correct-digest, info-digest.

	* sha.h: documetation comments are fixed.

	* files.make: digest_[1-5].c, filehash.c, {unix,win32}/timestamp.c
	digest_io.h, filehash.h, timestamp.h are added.

	* Makefile.unix.in:
	$(ARCH)/timestamp.c is added to libcommon.a dependencies.

	* digest_1.c, digest_2.c, digest_3.c, digest_4.c, digest_5.c, digest_io.h, filehash.c, filehash.h, timestamp.h:
	initial revision

2005-05-17  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* master_html.c:
	(write_xml_testing_report) the `team_comment' is used in the judge's
	  report if the `comment' is not available.

2005-05-11  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* serve.c: (cmd_priv_submit_run) audit record generation is added;
	(cmd_upload_report) the same as above;
	(cmd_team_print) the same as above;
	(cmd_team_submit_run) the same as above;
	(read_run_packet) audit log format is slightly changed;
	(rejudge_run) the same as above.

	* master_html.c:
	(write_tests) `xml_report_archive_dir' directory is tried first for
	  the XML testing protocol.

	* userlist_xml.c:
	(parse_date) `tm_isdst' field is properly initialized with -1.

	* userlist.c: copyright notice is updated;
	(userlist_parse_date) `tm_isdst' field is properly initialized with
	  -1.

	* revinfo.c: copyright notice is updated;
	(read_verdb) `tm_isdst' field is properly initialized with -1.

	* prepare.c:
	(parse_date) `tm_isdst' field is properly initialized with -1;
	(set_defaults) `info_sfx', `tgz_sfx' fields are initialized even
	  for the `serve' program.

	* master.c:
	(sched_if_asked) `tm_isdst' field is properly initialized with -1.

	* filter_tree.c:
	(filter_tree_eval_node) `tm_isdst' field is properly initialized with
	  -1.

	* contests.c:
	(parse_date) `tm_isdst' field is properly initialized with -1.

2005-05-03  Alexander Chernov  <cher@ispras.ru>

	* team.c:
	GLOBAL CHANGE: now only one session id passing mode (SID_URL) is
	  supported, the code that handles all other types of session id
	  passing is removed;
	sid_mode enumerated type (SID_DISABLED, etc) is removed;
	global configuration variable `enable_session_mode' is removed;
	(struct section_global_data) `enable_session_mode' field is removed;
	(hyperref) `sid' parameter is removed;
	  handling of all session id passing mode other that SID_URL is
	  removed;
	(set_cookie_if_needed) function removed;
	(read_state_params) handling of all session id passing mode other that
	  SID_URL is removed;
	(display_enter_password) call of `set_cookie_if_needed' is removed;
	  html generation for session id mode is removed;
	(get_cookie) function removed;
	(open_userlist_server) call of `set_cookie_if_needed' is removed;
	(permission_denied) the same as above;
	(error_not_registered) the same as above;
	(error_cannot_participate) the same as above;
	(fatal_server_error) the same as above;
	(authentificate) handling of all session id passing mode other that
	  SID_URL is removed;
	  need_cookie parameter is always passed as 1 in call of
	  `userlist_clnt_team_login';
	(operation_status_page) handling of all session id passing mode other
	  that SID_URL is removed;
	  call of `set_cookie_if_needed' removed;
	  call of `hyperref' updated;
	(print_refresh_button) handling of all session id passing mode other
	  that SID_URL is removed;
	  call of `hyperref' updated;
	(print_standings_button) the same as above;
	(print_logout_button) the same as above;
	(show_clar_if_asked) call of `set_cookie_if_needed' removed;
	(request_source_if_asked) the same as above;
	(action_standings) the same as above;
	(request_report_if_asked) call of `set_cookie_if_needed' removed;
	  call of `serve_clnt_view' is updated;
	(request_printing_if_asked)  call of `set_cookie_if_needed' removed;
	(action_view_test) call of `serve_clnt_view' is updated;
	(action_logout) handling of all session id passing mode other
	  that SID_URL is removed;
	  call of `set_cookie_if_needed' removed;
	(display_team_page) call of `serve_clnt_team_page' is updated;
	(main) call of `set_cookie_if_needed' removed;
	  handling of all session id passing mode other that SID_URL is
	  removed.

	* serve.c:
	(cmd_team_page) handling of the sid_mode field in the incoming packet
	  is removed, since the field is removed;
	  call of `write_team_page' is updated;
	(cmd_master_page) handling of the sid_mode field in the incoming packet
	  is removed, since the field is removed;
	  call of `write_master_page' is updated;
	  call of `write_priv_all_runs' is updated;
	(cmd_priv_standings) handling of the sid_mode field in the incoming
	  packet is removed, since the field is removed;
	  call of `write_priv_standings' is updated;
	(cmd_view) handling of the sid_mode field in the incoming packet is
	  removed, since the field is removed;
	  call of `write_priv_source' is updated;
	  call of `write_new_run_form' is updated;
	  call of `write_priv_report' is updated;
	  call of `write_priv_clar' is updated;
	  call of `write_priv_users' is updated;
	  call of `write_priv_user' is updated;
	  call of `new_write_user_report_view' is updated;
	(cmd_team_show_item) handling of SRV_CMD_SHOW_REPORT is removed,
	  because the command is handled in `cmd_view'.

	* master_html.c:
	GLOBAL CHANGE: now only one session id passing mode (SID_URL) is
	  supported, the code that handles all other types of session id
	  passing is removed;
	sid_mode enumerated type (SID_DISABLED, etc) is removed;
	(html_start_form) `sid_mode' parameter is removed;
	  handling of session id passing modes other that SID_URL is removed;
	(html_hyperref) `sid_mode' parameter is removed;
	  handling of session id passing modes other that SID_URL is removed;
	  "sid_mode" CGI variable is not generated into URL;
	(print_nav_buttons) `sid_mode' parameter is removed;
	  handling of session id passing modes other that SID_URL is removed;
	(write_priv_all_runs) `sid_mode' parameter is removed;
	  calls of `html_start_form' are updated;
	  handling of session id passing modes other that SID_URL is removed;
	  calls of `html_hyperref' are updated;
	  calls of `print_nav_buttons' are updated;
	(write_all_clars) `sid_mode' parameter is removed;
	  calls of `html_start_form' are updated;
	  handling of session id passing modes other that SID_URL is removed;
	  calls of `html_hyperref' are updated;
	  calls of `print_nav_buttons' are updated;
	(write_master_page) `sid_mode' parameter is removed;
	  call of `write_priv_all_runs' is updated;
	  call of `write_all_clars' is updated;
	(write_priv_standings) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	(write_priv_source) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  handling of session id passing modes other that SID_URL is removed;
	  calls of `html_hyperref' are updated;
	  calls of `html_start_form' are updated;
	(write_new_run_form) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  calls of `html_start_form' are updated;
	(write_xml_testing_report) `sid_mode' parameter is removed;
	  calls of `html_hyperref' are updated;
	(write_priv_report) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  if `team_report_flag' is enabled, the team's version of XML log
	  is generated by calling `write_xml_team_testing_report';
	  call of `write_xml_testing_report' is updated;
	(write_priv_clar) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  calls of `html_start_form' are updated;
	(write_priv_users) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  calls of `html_start_form' are updated;
	  handling of session id passing modes other that SID_URL is removed;
	(write_priv_user) `sid_mode' parameter is removed;
	  calls of `print_nav_buttons' is updated;
	  calls of `html_start_form' are updated.

2005-05-02  Alexander Chernov  <cher@ispras.ru>

	* master.c:
	GLOBAL CHANGE: session id passing mode constants (SID_DISABLED, etc)
	  are removed, now only URL passing is supported (SID_URL), and the
	  code that handled other passing modes is removed;
	(read_state_params) code for handling non-SID_URL passing modes
	  is removed;
	(hyperref) `sid_mode' parameter is removed;
	  code for handling non-SID_URL passing modes is removed;
	(set_cookie_if_needed) function removed;
	(display_enter_password_2) hidden HTML variable `sid_mode' is no
	  longer generated;
	(get_cookie) function removed;
	(open_userlist_server) call of `set_cookie_if_needed' removed;
	(permission_denied) the same as above;
	(error_not_registered) the same as above;
	(error_cannot_participate) the same as above;
	(fatal_server_error) the same as above;
	(authentificate) code for handling non-SID_URL passing modes is
	  removed;
	  1 is passed as the `use_cookies' flag to
	  `userlist_clnt_priv_login';
	(print_refresh_button) code for handling non-SID_URL passing modes is
	  removed;
	(print_standings_button) the same as above;
	(print_update_button) the same as above;
	(print_teamview_button) the same as above;
	(print_logout_button) the same as above;
	(print_dump_runs_button) the same as above;
	(print_write_xml_runs_button) the same as above;
	(print_export_xml_runs_button) the same as above;
	(print_dump_users_button) the same as above;
	(print_dump_standings_button) the same as above;
	(operation_status_page) code for handling non-SID_URL passing modes is
	  removed;
	  call of `set_cookie_if_needed' is removed;
	(view_source_if_asked) call of `set_cookie_if_needed' is removed;
	  call of `serve_clnt_view' is updated;
	(action_view_team) the same as above;
	(action_view_audit_log) call of `serve_clnt_view' is updated;
	(action_view_test) the same as above;
	(action_new_run_form) call of `set_cookie_if_needed' is removed;
	  call of `serve_clnt_view' is updated;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(action_dump_runs) the same as above;
	(action_write_xml_runs) the same as above;
	(action_export_xml_runs) the same as above;
	(action_dump_users) call of `set_cookie_if_needed' is removed;
	(action_dump_standings) call of `set_cookie_if_needed' is removed;
	  call of `serve_clnt_view' is updated;
	(confirm_reset_if_asked) call of `set_cookie_if_needed' is removed;
	(confirm_update_standings) the same as above;
	(confirm_clear_team_passwords) the same as above;
	(confirm_regenerate_register_if_asked) the same as above;
	(confirm_regenerate_if_asked) the same as above;
	(confirm_rejudge_all) the same as above;
	(confirm_judge_suspended) the same as above;
	(confirm_rejudge_displayed) the same as above;
	(confirm_squeeze) the same as above;
	(confirm_continue) the same as above;
	(confirm_clear_run) the same as above;
	(do_generate_register_passwords_if_asked) the same as above;
	(do_generate_passwords_if_asked) the saem as above;
	(action_merge_runs) the same as above;
	(action_set_team_status) call of `set_cookie_if_needed' is removed;
	  call of `serve_clnt_view' is updated;
	(action_compare_runs) the same as above;
	(view_clar_if_asked) the same as above;
	(send_msg_if_asked) call of `set_cookie_if_needed' is removed;
	  call of `serve_clnt_view' is updated;
	  the code for handling non-SID_URL passing modes is removed;
	(send_msg_if_asked) the same as above;
	(log_out_if_asked) the code for handling non-SID_URL passing modes
	  is removed;
	(view_standings_if_asked) call of `serve_clnt_standings' is updated;
	(display_master_page) call of `serve_clnt_master_page' updated
	  (sid_mode) parameter is removed;
	(main) call of `set_cookie_if_needed' is removed.

	* html.c:
	session id passing mode constants (SID_DISABLED, etc) are removed,
	now only URL passing is supported (SID_URL), and the code that handled
	other passing modes is removed;
	(new_write_user_runs) `sid_mode' parameter is removed;
	  handling of session id passing mode other than SID_URL is removed;
	(new_write_user_clars) the same as above;
	(write_xml_team_testing_report) function is made non-static because
	  it is used from `master_html.c' when the team view is requested;
	(new_write_user_report_view) `sid_mode' parameter is removed;
	  call of `write_xml_testing_report' is updated;
	(print_nav_buttons) `sid_mode' parameter is removed;
	  handling of session id passing mode other than SID_URL is removed;
	(write_team_page) the same as above.

	* super_html.c: copyright notice is updated;
	(super_html_main_page) sid_mode CGI parameter is removed from URLs
	  of `master', `judge' and `team' programs.

	* serve_clnt.h:
	(serve_clnt_team_page) `sid_mode' parameter is removed;
	(serve_clnt_master_page) the same as above;
	(serve_clnt_standings) the same as above;
	(serve_clnt_view) the same is above.

	* serve-cmd.c: sid_mode (SID_DISABLED, etc) enumeration is removed;
	(handle_login) sid_mode == SID_URL is removed from parameters of
	  `userlist_clnt_priv_login': 1 is used instead;
	(handle_dump_runs) call of `serve_clnt_view' is updated;
	(handle_dump_source) call of `serve_clnt_view' is updated;
	(handle_dump_master_runs) sid_mode == SID_URL parameter is removed
	  from `serve_clnt_master_page'.

	* register.c: copyright notice is updated;
	(authentificate) "SID" is used as CGI variable name instead of "sid";
	(display_edit_registration_data_page) the same as above;
	(display_main_page) the same as above;
	(action_change_lang_at_main_page) the same as above;
	(action_login) the same as above;
	(action_change_password) the same as above;
	(action_remove_member) the same as above;
	(action_register_for_contest) the same as above.

	* protocol.h:
	(struct prot_serve_pkt_team_page) `sid_mode' field is removed;
	(struct prot_serve_pkt_master_page) the same as above;
	(struct prot_serve_pkt_standings) the same as above;
	(struct prot_serve_pkt_view) the same as above.

	* html.h: (new_write_user_runs) `sid_mode' parameter is removed;
	(new_write_user_clars) the same as above;
	(new_write_user_report_view) the same as above;
	(write_team_page) the same as above;
	(write_master_page) the same as above;
	(write_priv_standings) the same as above;
	(write_priv_all_runs) the same as above;
	(write_priv_source) the same as above;
	(write_new_run_form) the same as above;
	(write_priv_report) the same as above;
	(write_priv_clar) the same as above;
	(write_priv_users) the same as above;
	(write_priv_user) the same as above;
	(html_start_form) the same as above;
	(html_hyperref) the same as above;
	(write_xml_testing_report) the same as above;
	(write_xml_team_testing_report) new function prototype.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_clnt.h: copyright notice is updated.

	* serve.c: <ctype.h> is included;
	(move_files_to_insert_run) xml_report_archive_dir, audit_log_dir
	  are handled;
	(cmd_upload_report) the report in the xml_report_archive_dir is
	  removed and the uploaded report is stored in either
	  report_archive_dir or team_report_archive_dir;
	(do_squeeze_runs) xml_report_archive_dir, audit_log_dir are handled;
	(cmd_priv_command_0) xml_report_archive_dir, audit_log_dir are
	  cleared on SRV_CMD_RESET;
	(read_compile_packet) the compiling protocol is stored to
	  xml_report_archive_dir;
	  report_archive_dir and team_report_archive_dir are no longer used;
	  handling of removed fields in struct run_request_packet filling
	  is also removed;
	(read_run_packet) the testing protocol is stored to
	  xml_report_archive_dir;
	  report_archive_dir and team_report_archive_dir are no longer used.

	* runlog_import.c: copyright notice is updated;
	(rename_archive_files) `xml_report_archive_dir', `full_archive_dir',
	  `audit_log_dir' archive directories are handled.

	* runlog.h: (run_is_team_report_available) new function prototype;
	(run_is_report_available) new function prototype.

	* runlog.c:
	(run_is_team_report_available) a new function, which accepts the
	  run status and returns the flag whether the team protocol
	  should be available for such run;
	(run_is_report_available) a new function, which accepts the run status
	  and returns the flag whether the master protocol should be
	  available for such run.

	* run_packet_priv.h:
	flags corresponding to the removed fields are removed;
	(struct run_request_bin_packet) `locale_id' field is removed.

	* run_packet_2.c:
	(run_request_packet_write) handling of removed fields is removed.

	* run_packet_1.c:
	(run_request_packet_read) handling of removed fields is removed.

	* run_packet.h:
	(struct run_request_packet) the following fields removed: `locale_id',
	  `team_enable_rep_view', `report_error_code', `html_report',
	  `xml_report'.

	* run.c:
	`run' now always generate one report in XML format, so lot of
	  no longer used code is removed;
	(setup_locale) function removed;
	(result2str) function removed;
	(html_print_by_line) _() (gettext translation) is no longer used;
	(print_by_line) function removed;
	(generate_report) function removed;
	(generate_team_report) function removed;
	(run_tests) `locale_id', `team_enable_rep_view', `report_error_code'
	  parameters are removed;
	  team protocol is no longer generated;
	  generate_xml_report is called instead of generate_report;
	(do_loop) team protocol is no longer generated;
	  unnecessary variables are removed.

	* protocol.h: error SRV_ERR_REPORT_NOT_AVAILABLE is added.

	* protocol.c: error text for SRV_ERR_REPORT_NOT_AVAILABLE is added.

	* prepare.h:
	(struct section_global_data) `xml_report_archive_dir' field added.

	* prepare.c:
	(set_defaults) xml_report_archive_dir is properly initialized;
	(create_dirs) xml_report_archive_dir is created.

	* misctext.h:
	new constants CONTENT_TYPE_TEXT, CONTENT_TYPE_HTML, CONTENT_TYPE_XML
	  are defined;
	(get_content_type) new function prototype.

	* misctext.c:
	(get_content_type) new function to determine the content type of
	  a text file (XML, HTML or plain text).

	* master_html.c:
	(write_priv_report) the xml_report_archive_dir is checked for the
	  report first, using report_archive_dir as fallback for
	  compatibility;
	  `get_content_type' function is used to determine the report type;
	(write_tests) `get_content_type' is used.

	* html.c: "testing_report_xml.h" is included;
	(write_xml_team_testing_report) new function, which prints a
	  contestant's view of the testing protocol from the XML report;
	(new_write_user_report_view) when the report file is loaded,
	  the xml_report_archive_dir is tried first, then, as fallback,
	  the team_report_archive_dir or report_archive_dir;
	  the xml_report_archive_dir may either contain a testing report
	  in XML format, or report in the plain text format, which is
	  shown to the contestant only if the run status is RUN_COMPILE_ERR;
	  new function `get_content_type' is used to determine the file
	  type.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-05-01  Alexander Chernov  <cher@ispras.ru>

	* testing_report_xml.h:
	(struct testing_report_test) `team_comment' field is added.

	* testing_report_xml.c: new attribute `team-comment' is added;
	(parse_test) attribute `team-comment' is handled;
	(testing_report_test_free) the same as above.

	* run.c:
	(generate_xml_report) `team_comment' is also generated to the output
	  XML file.

	* serve.c: "xml_utils.h" is included;
	(append_audit_log) new function, which adds a record to the audit log
	  for the specified run;
	(cmd_view) SRV_CMD_SHOW_REPORT is now handled here instead of
	  `cmd_team_show_item', in the case of this command the privilege
	  check is relaxed;
	  new commands SRV_CMD_VIEW_TEST_INPUT, SRV_CMD_VIEW_TEST_OUTPUT,
	  SRV_CMD_VIEW_TEST_ANSWER, SRV_CMD_VIEW_TEST_ERROR,
	  SRV_CMD_VIEW_TEST_CHECKER, SRV_CMD_VIEW_TEST_INFO,
	  SRV_CMD_VIEW_AUDIT_LOG are handled;
	(cmd_team_show_item) arguments of call of `new_write_user_report_view'
	  are updated, however, the SRV_CMD_SHOW_REPORT command is no
	  longer handled by this function because various session information
	  passed from the client is requered for `new_write_user_report_view',
	  but this information is not provided by the packet type
	  handled by `cmd_team_show_item';
	(move_files_to_insert_run) `full_archive_dir' is handled;
	(cmd_priv_submit_run) call of `archive_dir_prepare' is updated;
	(cmd_upload_report) the same as above;
	(cmd_team_submit_run) the same as above;
	(do_squeeze_runs) `full_archive_dir' is handled;
	(cmd_rejudge_by_mask) call of `do_rejudge_by_mask' is updated;
	(cmd_priv_command_0) `full_archive_dir' is cleared in handling of
	  SRV_CMD_RESET;
	  call of `do_rejudge_all' is updated;
	  call of `do_judge_suspended' is updated;
	  call of `do_rejudge_problem' is updated;
	(cmd_edit_run) call of `rejudge_run' is updated;
	(cmd_new_run) call of `archive_dir_prepare' is updated;
	(read_compile_packet) the same as above;
	  `xml_report' and `full_archive' flags are set in the run request;
	(time_to_str) a new function, which is moved here from `run.c',
	  this function converts time in unix format with usecs into
	  string representation;
	(dur_to_str) a new function, which accepts two timestamps, calculates
	  duration between them, and convert the calculated duration into
	  string representation;
	(read_run_packet) new parameter `run_full_archive_dir' is accepted,
	  which is the path to the spool directory for the full output
	  archive;
	  calls of `archive_dir_prepare' are updated;
	  if the global configuration variable `enable_full_archive' is set,
	  the full archive file is stored into an appropriate directory;
	  auditing information, which includes detailed timing statistics
	  previously generated by `run.c' into the judging protocol, is
	  generated;
	(rejudge_run) new parameter `p' for the client state is added, this
	  parameter is used for auditing purposes;
	  audit record is generated;
	(do_rejudge_all) new parameter `p' for the client state is added,
	  this parameter is passed to `rejudge_run';
	(do_judge_suspended) new parameter `p' for the client state is added,
	  this parameter is passed to `rejudge_run';
	(do_rejudge_problem) new parameter `p' for the client state is added,
	  this parameter is passed to `rejudge_run';
	(do_rejudge_by_mask) new parameter `p' for the client state is added,
	  this parameter is passed to `rejudge_run';
	(packet_handlers) SRV_CMD_SHOW_REPORT is handled by cmd_view;
	  new commands SRV_CMD_VIEW_TEST_INPUT, SRV_CMD_VIEW_TEST_OUTPUT,
	  SRV_CMD_VIEW_TEST_ANSWER, SRV_CMD_VIEW_TEST_ERROR,
	  SRV_CMD_VIEW_TEST_CHECKER, SRV_CMD_VIEW_TEST_INFO,
	  SRV_CMD_VIEW_AUDIT_LOG - all handled by cmd_view;
	(struct run_dir_item) field `full_report_dir' is added;
	(do_build_run_dirs) new parameter `full_report_dir' for the
	  corresponding field of struct run_dir_item is added;
	(do_loop) call of `do_build_run_dirs' is updated.

	* run.c: "full_archive.h" is included;
	(struct testinfo) all the file size fields (input_size, output_size,
	  error_size, correct_size, chk_out_size) are now of the `long' type
	  instead of `size_t', the fields are initialized with -1 as
	  "no file checked" flag;
	(html_print_by_line) <i> html formatting is removed because this
	  function is used for generation of XML log as well;
	(time_to_str) function moved to serve.c;
	(dur_to_str) function moved to serve.c;
	(prepare_checker_comment) new function, which prepares the checker
	  output for use in the "details" field of the XML judging report:
	  the output is truncated length 80 and html-armored;
	(unparse_scoring_system) new function, which prints a string
	  representation for the scoring system value;
	(generate_xml_report) new function to generate a juding report in the
	  XML format;
	(generate_report) many new parameters are added:
	  req_pkt - the run request;
	  variant - the variant;
	  correct_available_flag - whether the correct output is available;
	  info_available_flag - whether the test info file is available;
	  additional_comment - additional text (currently about test sets);
	  `generate_xml_report' is called, if the xml_report flag is enabled
	  in the request packet;
	  generation of the timing information is moved to serve.c, and the
	  timing information is added to the audit log for the run;
	(run_tests) new parameter `full_report_path' which is filled by the
	  function with the full path to the full output archive;
	  if `full_archive' flag of the request packet is set, the archive
	  with full (not truncated) output files of the program being tested
	  is created;
	  the original test input file is used when the report is generated
	  instead of the test input file is the working directory (because
	  the latter may be modified by the program being tested);
	  a verbose judging comment about testsets is generated;
	  call of `generate_report' is updated with the new parameters;
	(do_loop) creation of the full output archive is supported.

	* prepare.c:
	new global configuration parameters: xml_report, enable_full_archive;
	(global_init_func) new parameters are initialized to -1,
	  `enable_continue' parameter is also initialized to -1, as the
	  default value is 1 now;
	(set_defaults) the test and related information paths are initialized
	  in the SERVE mode as well because now the serve program accesses
	  test, correct answers, test info information files;
	  `full_archive_dir', `audit_log_dir' are initialized;
	  default value of `enable_continue' variable is 1;
	  default value of `html_report' variable is 1;
	(create_dirs) `full_archive_dir', `audit_log_dir' directories are
	  created;
	  `run_full_archive_dir' is created for all active testers.

2005-04-30  Alexander Chernov  <cher@ispras.ru>

	* master_html.c:
	"testing_report_xml.h", "full_archive.h" are included;
	<reuse/osdeps.h> is included;
	<zlib.h>, <sys/types.h>, <sys/stat.h>, <fcntl.h> are included;
	(print_nav_buttons) "Audit log" link is printed;
	(write_xml_testing_report) new function, which generates HTML
	  for a testing report in XML format;
	(write_priv_report) "text/xml" content type is supported, and
	  `write_xml_testing_report' is called in this case;
	(write_tests) new function, which handles requests to view
	  tests, correct answers, output files, etc;
	(write_audit_log) new function, which handles request to view
	  the audit log.

	* master.c:
	(action_view_audit_log) new function, which issues the corresponding
	  server command;
	(action_view_test) new function;
	(main) new client actions supported: ACTION_VIEW_TEST_INPUT,
	  ACTION_VIEW_TEST_OUTPUT, ACTION_VIEW_TEST_ANSWER,
	  ACTION_VIEW_TEST_ERROR, ACTION_VIEW_TEST_CHECKER,
	  ACTION_VIEW_TEST_INFO, ACTION_VIEW_AUDIT_LOG.

	* html.c:
	(new_write_user_report_view) new parameters added: sid_mode,
	  sid, self_url, hidden_vars, extra_args;
	  if the content-type of the report file is XML, the
	  `write_xml_testing_report' function is called.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.h: (new_write_user_report_view) many new parameters added:
	  sid_mode, sid, self_url, hidden_vars, extra_args;
	(write_tests) new function prototype;
	(write_xml_testing_report) new function prototype;
	(write_audit_log) new function prototype.

	* prepare.h:
	(struct section_global_data) new fields added: full_archive_dir,
	  audit_log_dir, run_full_archive_dir, xml_report, enable_full_archive;
	(struct section_tester_data) new field added: run_full_archive_dir.

	* protocol.h: new command SRV_CMD_VIEW_AUDIT_LOG added.

	* client_actions.h: new action ACTION_VIEW_AUDIT_LOG is added.

	* archive_paths.h: copyright notice is updated;
	(archive_dir_prepare) new parameter `no_unlink_flag' is added, if this
	  parameter is set to 1, the function does not remove old files
	  in the destination directory.

	* archive_paths.c: copyright notice is updated;
	(archive_dir_prepare) new parameter `no_unlink_flag' is added, if this
	  parameter is set to 1, the function does not remove old files
	  in the destination directory;
	(archive_rename) call of `archive_dir_prepare' is updated.

	* team.c: copyright notice is updated;
	(request_report_if_asked) `serve_clnt_view' is called instead
	  `serve_clnt_show_item';
	(action_view_test) new function to implement test information viewing;
	(main) new actions supported: VIEW_TEST_INPUT, VIEW_TEST_OUTPUT,
	  VIEW_TEST_ANSWER, VIEW_TEST_ERROR, VIEW_TEST_CHECKER,
	  VIEW_TEST_INFO.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* runlog.c:
	(run_get_priv_successes) added check, that one participant submitted
	  a solution several times.

	* testing_report_xml.c:
	(parse_testing_report) removed one too strict check.

	* userlist-server.c:
	(cmd_team_login) added check, that register_passwd is not NULL;
	(cmd_priv_login) the same as above.

2005-04-28  Alexander Chernov  <cher@ispras.ru>

	* protocol.c:
	strings for the new error codes BAD_TEST_NUM and BAD_XML are added.

	* protocol.h:
	new request codes added: VIEW_TEST_INPUT, VIEW_TEST_OUTPUT,
	  VIEW_TEST_ANSWER, VIEW_TEST_ERROR, VIEW_TEST_CHECKER,VIEW_TEST_INFO;
	new error codes added: BAD_TEST_NUM, BAD_XML.

	* client_actions.h:
	new actions added: ACTION_VIEW_TEST_INPUT, ACTION_VIEW_TEST_OUTPUT,
	 ACTION_VIEW_TEST_ANSWER, ACTION_VIEW_TEST_ERROR,
	 ACTION_VIEW_TEST_CHECKER, ACTION_VIEW_TEST_INFO.

	* testing_report_xml.c: added support for `info-available' attribut;
	fixed bugs in attribute tables.

	* testing_report_xml.h:
	(struct testing_report_xml) added new field `info_available'.

	* full_archive.c, full_archive.h: initial revision

2005-04-25  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po, ejudge.ru_RU.KOI8-R.po:
	*** empty log message ***

	* files.make: new files added: full_archive.c, testing_report_xml.c,
	  xml_utils/parse_int_attr.c, xml_utils/unparse_run_status.c,
	  full_archive.h, testing_report_xml.h.

	* run_packet.h:
	(struct run_request_packet) new fields `full_archive', `xml_report'
	  are added.

	* run_packet_1.c:
	(run_request_packet_read) added handling of `full_archive' and
	  `xml_report' fields.

	* run_packet_2.c:
	(run_request_packet_write) added handling of `full_archive' and
	  `xml_report' fields.

	* run_packet_priv.h:
	bits for new flags FLAGS_FULL_ARCHIVE, FLAGS_XML_REPORT are added.

	* runlog.c: (run_status_to_str_short) moved to a separate file:
	  xml_utils/unparse_run_status;
	(run_is_valid_test_status) new function, which returns 1, if the
	  given run status may appear as an outcome of one test during
	  testing.

	* runlog.h:
	(run_is_valid_test_status) new function prototype is added.

	* serve-control.c: copyright notice is updated;
	(parse_config) use of `xml_leaf_elem' is updated.

	* xml_utils.h: copyright notice is updated;
	(xml_leaf_elem) new parameter `empty_allowed_flag' is added;
	(xml_parse_int_attr) new function prototype is added.

	* team_extra_xml.c: copyright notice is updated;
	fixed incorrect initialization of element and attribute names table.

	* testing_report_xml.h, testing_report_xml.c: initial revision

	* copyright.c: copyright notice is updated

2005-04-22  Alexander Chernov  <cher@ispras.ru>

	* INSTALL, INSTALL.RUS: *** empty log message ***

2005-04-22  Alexander Chernov  <cher@ispras.ru>

	* FAQ.RUS: initial revision

2005-04-14  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(set_defaults) the compile->serve spool directory scheme is changed,
	  both `compile' and `serve' use the subdirectory with the
	  contest number as the base directory of all the exchange directories;
	  the run->serve spool directory scheme is changed similarly;
	(create_dirs) new compile->serve and run->serve directories are
	  created;
	  symlinks are no longer used.

	* serve.c:
	(read_compile_packet) the function now has 3 arguments instead of 1:
	  `compile_status_dir', `compile_report_dir' are added;
	  the new parameters are used instead of the global configuration
	  variables of the same name to access the compile->serve
	  directories;
	(read_run_packet) the function now has 4 parameters instead of 1:
	  `run_status_dir', `run_report_dir', `run_team_report_dir'
	  are added;
	  the new function parameters are used instead of the global
	  configuration variables of the same name to access the
	  run->serve spool directories;
	(do_build_compile_dirs) a new function - see below;
	(build_compile_dirs) a new function, which makes the list of all
	  the compile->serve exchange directories `compile_dirs' using the
	  `compile_status_dir' and `compile_report_dir' of all the language
	  sections, the list of the exchange directories is build so it has
	  no duplicates;
	(do_build_run_dirs) a new function - see below;
	(build_run_dirs) a new function, which makes the list of all the
	  run->serve exchange directories `run_dirs' using the
	  `run_status_dir', `run_report_dir', `run_team_report_dir' variables
	  of all the tester sections, the list of the exchange directories has
	  no duplicates;
	(do_loop) all the directories in the `compile_dirs' list of directories
	  are scanned instead of a single global `compile_status_dir';
	  call of `read_compile_packet' is updated;
	  all the directories in the `run_dirs' list of directories are
	  scanned instead of a single global `run_status_dir';
	  call of `read_run_packet' is updated;
	(main) call of `build_compile_dirs' is added;
	  call of `build_run_dirs' is added.

	* prepare.h:
	(struct section_language_data) new fields `compile_status_dir',
	  `compile_report_dir' are added;
	(struct section_tester_data) new fields `run_status_dir',
	  `run_report_dir', `run_team_report_dir' are added.

2005-04-12  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c:
	(generate_compile_cfg) a fix for a stupid bug again.

	* ejudge-setup.c:
	(generate_compile_cfg) a typo is fixed that caused a compilation error
	  if Visual Basic compiler (mbas) was not detected.

2005-04-11  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(set_defaults) the contest identifier in the status and report dirs is
	  printed with 6 digits instead of 4 (%06d).

	* run.c, compile.c:
	(do_loop) the contest identifier in the status and report dirs is
	  printed with 6 digits instead of 4 (%06d).

2005-04-10  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c:
	(generate_serve_cfg) the suffix of Visual Basic programs changed to
	   ".vb";
	(generate_compile_cfg) the same as above.

	* configure.ac:
	enabled compilation and testing of a simple Visual Basic program.

	* configure.ac:
	added experimental support for the Mono Visual Basic compiler (mbas);
	added check that uudecode program is present;
	added warning, when uudecode program is not found.

	* config.h.in: added COMPILE_MBAS_VERSION
	added EJUDGE_PROGRAM_UUDECODE

	* Makefile.unix.in:
	(log) new subdirectories added to the list of directories where
	  ChangeLog is generated: extra scripts super_clnt xml_utils.

2005-04-10  Alexander Chernov  <cher@ispras.ru>

	* ejudge-setup.c:
	(generate_master_cfg) `;' as comment char is replaced with `#';
	(generate_serve_cfg) `;' as comment char is replaced with `#';
	  added support for Mono C# (mcs) and Mono Visual Basic (mbas)
	  compilers, they use new architecture `msil'. Both compilers are
	  by default disabled, though;
	(generate_compile_cfg) `;' as comment char is replaced with `#';
	  added support for Mono C# (mcs) and Mono Visual Basic (mbas)
	  compilers;
	(generate_install_script) the EJUDGE_PROGRAM_UUDECODE macro from
	  config.h is used instead of hard-coded uudecode.

2005-04-09  Alexander Chernov  <cher@ispras.ru>

	* configure.ac:
	Support for the Mono C# compiler and runtime is added.

	* config.h.in: COMPILE_MONO_VERSION is added

2005-04-08  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c, super-serve.c, serve.c, run.c, compile.c: 
	(main) the program refuses to run under the uid == 0 (root).

2005-04-07  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* configure.ac:
	added check, that the CAP_SYS_OPERATIONS patch is supported by
	  the running kernel;
	fixed condition when CONF_HAS_LIBCAP variable is set;
	added warning at the end of configuration, if the CAP_SYS_OPERATIONS
	  bit is supported by the libcap library, but is not supported
	  by the running kernel.

	* teamdb.h: copyright notice is updated;
	definition of TEAMDB_MAX_SCRAMBLED_PASSWD_SIZE is removed;
	(teamdb_register_update_hook) new function prototype;
	(teamdb_unregister_update_hook) new function prototype;
	(teamdb_get_user_status_map) new function prototype.

	* teamdb.c: copyright notice is updated;
	added support for callbacks, which are called each time when the
	  user database is reloaded from the server;
	(teamdb_register_update_hook) a new function to register a new
	  update callback;
	(teamdb_unregister_update_hook) a new function to remove a
	  registered update callback function;
	(call_update_hooks) a new function to call all the registered
	  callback functions;
	(teamdb_refresh) `call_update_hooks' is called each time when
	  the user database is reloaded;
	(teamdb_toggle_flags) reload of the user database is forced;
	(teamdb_get_user_status_map) a new function, which returns the
	  user status flags for all the users registered for the contest.

	* serve.c:
	(read_compile_packet) the value of new global configuration
	  variable `disable_sound' is passed in the run request packet
	  to the `run' program.

	* runlog.c: "teamdb.h" is included;
	(run_open) the function registers the user database update callback;
	(run_get_prev_successes) a new function, which returns the number of
	  previous successful attempts on this problem by different users;
	  the function is implemented to support the new `score_bonus'
	  feature of KIROV contests;
	  the function needs the table of various flags (invisible, banned,
	  etc) of all the users registered for the contest, so the array
	  of flags is requested by `update_user_flags'. The array of flags
	  is cached, and it is dropped by a callback which is called, when
	  the user database is updated.
	(teamdb_update_callback) a new function, which is called each time
	  when the user database is updated, the function drops the
	  cached user flags array;
	(update_user_flags) a new function, which loads the new array
	  of flags of all the registered users. The new function
	  `teamdb_get_user_status_map' is used.

	* runlog.h: (run_get_prev_successes) new function prototype is added.

	* prepare.h:
	(struct section_global_data) new field `disable_sound' is added;
	(struct section_problem_data) new fields `score_bonus',
	  `score_bonus_total', `score_bonus_val' are added.

	* prepare.c: new global parameter `disable_sound' added;
	new problem parameter `score_bonus' added;
	(parse_score_bonus) new function to parse a score_bonus specification;
	(set_defaults) `parse_score_bonus' is called.

2005-04-06  Alexander Chernov  <cher@ispras.ru>

	* master_html.c:
	(print_raw_record) new parameter `prev_successes' is added;
	  the value of `prev_successes' parameter is printed to the output
	  as the last field;
	(write_priv_all_runs) use of `print_raw_record' is updated;
	  if the contest scoring system is KIROV, the current runlog entry
	  is not invisible, the number of previous successes of the different
	  participants on the same contest, the number of previous succeses
	  is calculated by a call of `run_get_priv_successes';
	  calls of `print_raw_record' and `write_html_run_status' are updated.

	* html.h: 
	(calc_kirov_score) new parameter `prev_successes' added;
	(write_html_run_status) new parameter `prev_successes' added.

	* html.c: (calc_kirov_score) new parameter `prev_successes' is added;
	  the `score_bonus' problem configuration variable is supported, the
	  value of `prev_successes' parameter is used to calculate the score
	  bonus, the score bonus is also displayed as the last optional
	  parameter;
	(write_html_run_status) new parameter `prev_successes' is added, the
	  parameter is then passed to `calc_kirov_score' for further
	  processing;
	(new_write_user_runs) if the current run has OK status, the contest
	  type is KIROV, the run is visible, and the `score_bonus' problem
	  configuration variable is set for the current problem, the number of
	  previous successes of other users is calculated by call of
	  `run_get_prev_successes'; the calculated value is then passed to
	  `write_html_run_status' function;
	(do_write_kirov_standings) the number of previous successes of other
	  participants is passed as the new parameter of `calc_kirov_score';
	(do_write_public_log) if the current run has OK status, the contest
	  type is KIROV, and the `score_bonus' problem configuration variable
	  is set for the current problem, the number of previous successes of
	  other users is calculated by call of `run_get_prev_successes';
	  the calculated value is then passed to `write_html_run_status'
	  function.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* ejudge-setup.c: copyright notice is updated;
	(generate_contest_xml) removed russian name of the test contest because
	  it may conflict with the default encoding.

	* Makefile.win32.in:
	new modules required for compile and run are added.

2005-04-02  Alexander Chernov  <cher@ispras.ru>

	* super-serve.c: 
	(start_serve) a stupid typo is fixed.

	* super-serve.c: copyright notice is updated;
	(delete_contest_extra) the contest serve socket is removed;
	(start_serve) information about the started serve process is printed.

2005-03-31  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(calc_kirov_score) removed the limitation, that the gained score
	  cannot exceed the full score for a problem;
	(do_write_kirov_standings) the same as above.

	* edit-userlist.c: copyright notice is updated.

	* edit-userlist.c:
	some support for operation on a group of users is added;
	(generate_reg_user_item) a new function, which generates a menu
	  string corresponding to a given user;
	(display_registered_users) call of `generate_reg_user_item' is used
	  instead of generating the menu string using the snprintf function;
	  new command ':' is supported: this command toggles selection for
	  the current user and advances to the next user;
	  new command 'c' is supported: this command registers one user or
	  all the selected users to a specified contest;
	  commands 'r', 'd', 'b', 'i', 'l' supports changing the corresponding
	  attribute for all the selected files.

2005-03-30  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* serve.c:
	"compile_packet.h", "run_packet.h", "curtime.h" are included;
	(cmd_priv_submit_run) call of `run_change_status' is updated, because
	  the function now requires new parameter `judge_id';
	  call of `queue_compile_request' is updated;
	(cmd_team_submit_run) the same changes, as above;
	(send_run_quit_command) a new function, which generates the QUIT
	  command for the run program and writes the packet to the run
	  spool directory;
	(cmd_priv_command_0) `send_run_quit_command' is called instead of
	  directly writing the QUIT packet;
	(cmd_edit_run) use of `rejudge_run' is changed, since `rejudge_run'
	  now requires `force_full_rejudge' parameter;
	(write_run_packet) is removed because superseded by
	  `run_request_packet_write';
	(read_compile_packet) almost completely rewritten, because the
	  compile and run programs now use binary packet formats. Special
	  functions are provided for parsing and generating packets
	  in the new format;
	  also a special structure is threaded through compile to make
	  it possible to pass to the run special parameters without stroring
	  them in the database. `struct compile_run_extra' is used to pass
	  information through the compile program. Currently this structure
	  contains `accepting_mode' flag, which allows full testing of
	  a submit in the accepting_mode of the contest in the OLYMPIAD
	  scoring system;
	(read_run_packet) new binary format of the run reply packet
	  is handled;
	(queue_compile_request) completely rewritten to support the new
	  binary format of the compile request packet;
	  also the function now updates the run database itself;
	(rejudge_run) new parameter `force_full_rejudge' is added. This
	  parameter only works in the OLYMPIAD contests when the contest
	  is in the accepting mode. If this parameter is 1, the run is forced
	  to be tested in the judging mode, i.e. on all tests; this might be
	  useful to test judge solutions during the contest;
	  use of `queue_compile_request' is updated;
	(do_rejudge_all) use of `rejudge_run' is updated;
	(do_judge_suspended) the same as above;
	(do_rejudge_problem) the same as above.

	* run_packet_priv.h: new flag FLAGS_DISABLE_SOUND is added;
	(struct run_reply_bin_packet) fields `ts7', `ts7_us' are added.

	* run_packet_5.c: 
	(run_reply_packet_write) `score' == -1 is allowed;
	  `ts7', `ts7_us' fields are written.

	* run_packet_4.c: 
	(run_reply_packet_read) score == -1 is allowed;
	  `ts7', `ts7_us' fields are read.

	* run_packet_2.c:
	(run_request_packet_write) `disable_sound' field is supported.

	* run_packet_1.c:
	(run_request_packet_read) if the contest_id == -1, the further parsing
	  of the packet is stopped, and the function returns immediately;
	  contest_id == -1 designates the special QUIT packet;
	  `disable_sound' field is parsed in the packet;
	  order of reading of the text fields is corrected.

	* run_packet.h:
	(struct run_request_packet) new field `disable_sound' is added;
	(struct run_reply_packet) new fields `ts7', `ts7_us' are added;
	(run_request_packet_quit) new function prototype is added.

	* run.c: "run_packet.h", "curtime.h" are included;
	(time_to_str) a new function to convert a time into the string format,
	  the function is used to report start end finish time of request
	  processing;
	(dur_to_str) a new function to convert a duration into the string
	  format. The function is used to report duration of various
	  stages of request processing;
	(generate_report) new parameter `reply_pkt' is added, which is the
	  pointer to the run reply packet filled during the testing;
	  added printing of time profiling information;
	(run_tests) new parameter `req_pkt' is added --- the pointer to the
	  run request packet;
	  new parameter `reply_pkt' is added --- the pointer to the run
	  reply packet;
	  `reply_string' parameter is removed, since the testing result is
	  written to the structure using the `reply_pkt' pointer;
	  the function now fills the `status', `failed_test', `score'
	  fields of the reply_pkt structure;
	  `disable_sound' parameter of the request packet is supported.
	  If this parameter is set, no sound is played.
	  `ts7', `ts7_us' fields of the reply_pkt structure are filled;
	  call of `generate_report' is updated;
	(parse_packet) function is removed, because is replaced with
	  `run_request_packet_read';
	(do_loop) the run request packet is now in the binary format, and
	  `run_request_packet_read' is used to convert the packet into
	  the run request structure;
	  the run reply packet is also in the binary format,
	  `run_request_packet_write' is used to convert the reply structure
	  into the packet.

	* files.make: run_packet_7.c is added.

	* compile_packet_2.c:
	(compile_request_packet_write) the terminated \0 in strings is not written
	  to the packet.

	* compile_packet_1.c:
	(compile_request_packet_read) the terminated \0 in strings is not written
	  to the packet.

	* run_packet_7.c: initial revision

2005-03-27  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* runlog_xml.c:
	(unparse_runlog_xml) added generation of `status' field (forgotten
	  after some changes).

	* run_packet_priv.h, run_packet_6.c, run_packet_5.c, run_packet_4.c, run_packet_3.c, run_packet_2.c, run_packet_1.c:
	basically implemented, not yet tested.

	* compile.c:
	"runlog.h", "compile_packet.h", "curtime.h" are included;
	the `compile' now uses a new binary protocol for communication with
	  the `serve' program. The data packet format is described in
	  compile_packet.h and compile_packet_priv.h header files;
	to generate and parse compile request and reply packets new
	  functions from compile_packet?.c are used;
	the new compile request and reply packets include various timestamps,
	  which are filled by all participating parties, the `compile'
	  program fills the required timestamp fields;
	(do_loop) changes as described above.

2005-03-13  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* master_html.c:
	(write_priv_all_runs) a serious bug related to insufficient checking
	  of error condition is fixed. If the filter expression parsing
	  failed, the function attempted to allocate memory with undefined size.

	* filter_tree.c:
	(filter_tree_delete) NULL pointer is now a valid argument (do nothing);
	(filter_tree_clear) `abort' called.

	* filter_expr.y: major emacs mode is changed

	* filter_scan.lex:
	to the previous revision: error reporting is slightly improved.

	* filter_scan.lex: major emacs mode is changed

2005-03-05  Alexander Chernov  <cher@ispras.ru>

	* run_packet.h, run_packet_1.c, run_packet_2.c, run_packet_3.c, run_packet_4.c, run_packet_5.c, run_packet_6.c, run_packet_priv.h:
	initial revision

	* files.make:
	new files added: run_packet_[1-6].c, run_packet.h, run_packet_priv.h.

	* compile_packet_priv.h: bugs fixed.

	* compile_packet_4.c: 
	(compile_reply_packet_read) bugs fixed.

	* compile_packet_3.c: 
	(compile_request_packet_free) bugs fixed.

	* compile_packet_2.c: 
	(compile_request_packet_write) bugs fixed.

	* compile_packet_1.c: 
	(compile_request_packet_read) bugs fixed.

	* runlog.h: (run_change_status) new parameter `judge_id' is added.

	* runlog.c:
	(run_change_status) new parameter `judge_id' is added to store the
	  compile and testing request identifier.

2005-03-03  Alexander Chernov  <cher@ispras.ru>

	* files.make: compile_packet_?.c, compile_packet_priv.h are added.

	* compile_packet_priv.h, compile_packet.h, compile_packet_1.c, compile_packet_2.c, compile_packet_3.c, compile_packet_4.c, compile_packet_5.c, compile_packet_6.c:
	initial revision

	* files.make:
	new files added: compile_packet.[ch], curtime.h, unix/curtime.c,
	  win32/curtime.c.

	* Makefile.win32.in:
	$(ARCH)/curtime.o is added to libcommon.a, compile, and run dependency
	  list.

	* Makefile.unix.in:
	$(ARCH)/curtime.o is added to libcommon.a dependency list.

	* curtime.h: initial revision

2005-03-02  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* serve.c: `olympiad_judging_mode' variable is made static back;
	(cmd_master_page) calls of `write_master_page', `write_priv_all_runs'
	  are updated;
	(cmd_view) call of `write_priv_source' is updated.

	* html.h: 
	(write_master_page) `accepting_mode' parameter is added;
	(write_priv_all_runs) `accepting_mode' parameter is added;
	(write_priv_source) `accepting_mode' parameter is added.

	* master_html.c:
	(write_change_status_dialog) new parameter `accepting_mode' is
	  added, which is used instead of the value of the
	  `olympiad_judging_mode' global variable;
	(write_priv_all_runs) new parameter `accepting_mode' is added;
	  call of `write_change_status_dialog' is updated;
	(write_master_page) new parameter `accepting_mode' is added;
	  call of `write_priv_all_runs' is updated;
	(write_priv_source) new parameter `accepting_mode' is added;
	  call of `write_change_status_dialog' is updated;
	(write_new_run_form) call of `write_change_status_dialog' is updated.

	* runlog.h: new run statuses added: RUN_PENDING, RUN_MEM_LIMIT_ERR,
	  RUN_SECURITY_ERR, RUN_FULL_REJUDGE, RUN_LAST;
	(run_is_failed_attempt) new function prototype;
	(run_status_to_str_short) new function prototype;
	(run_str_short_to_status) new function prototype.

	* runlog.c:
	(run_status_str) new run statuses RUN_PENDING, RUN_MEM_LIMIT_ERR,
	  RUN_SECURITY_ERR are supported;
	(run_is_failed_attempt) new function, which returns 1, if the
	  run status corresponds to a failed run (for any reason except
	  compilation error or check failed);
	(run_status_to_str_short) a new function to convert the run status
	  value to short string (as in the filter expression);
	(run_str_short_to_status) a new function to perform reverse
	  conversion.

	* master_html.c:
	(write_change_status_dialog) completely rewritten unsing table-driven
	  approach instead of hard-coded printfs;
	(print_raw_record) new run statuses RUN_MEM_LIMIT_ERR, RUN_SECURITY_ERR
	  are supported;
	(write_priv_all_runs) `write_change_status_dialog' function is
	  used instead of hard-coded printfs;
	(write_priv_standings) new parameter `accepting_mode' is added;
	  use of `do_write_kirov_standings' is updated;
	(write_raw_standings) use of `do_write_kirov_standings' is updated.

2005-03-01  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	`olympiad_judging_mode' variable is made non-static (currently it is
	  used in the "master_html.c");
	(update_standings_file) a new parameter `accepting_mode' is passed to
	  the `write_standings' function;
	(is_valid_status) new run statuses are supported: RUN_MEM_LIMIT_ERR,
	  RUN_SECURITY_ERR, RUN_PENDING, RUN_FULL_REJUDGE, RUN_CHECK_FAILED
	  (not a new status code, but it was not previously handled);
	(cmd_priv_standings) the `accepting_mode' parameter is passed down
	  to the `write_priv_standings' function;
	(cmd_priv_submit_run) if the automatic testing is currently suspended,
	  a new run gets RUN_PENDING status code instead of RUN_ACCEPTED;
	  use of `queue_compile_request' is updated to its new prototype;
	(cmd_team_submit_run) the same as above;
	(cmd_edit_run) RUN_FULL_REJUDGE is handled in the same manner, as
	  RUN_REJUDGE;
	(read_run_packet) `is_valid_status' is used for the status validity
	  check;
	(queue_compile_request) new parameter `run_block' is added, this is
	  a string which is passed to the compile server, returned from
	  there without changes, if the compilation is successful;
	(rejudge_run) new parameter to call `queue_compile_request', this
	  parameter is currenty 0.
	(do_judge_suspended) RUN_PENDING is handled instead of RUN_ACCEPTED.

	* master.c: "runlog.h" is included for the run status codes;
	(change_status_if_asked) the run status code validity check is redone
	  using a table;
	(change_status) the same as above;
	(action_new_run) the same as above.

	* html.h: (write_standings) new parameter `accepting_mode' is added;
	(write_priv_standings) new parameter `accepting_mode' is added;
	(do_write_kirov_standings) new parameter `accepting_mode' is added.

	* html.c:
	(write_html_run_status) new entry code RUN_PENDING is supported;
	(do_write_kirov_standings) new parameter `accepting_mode' is added,
	  if this parameter is set to 1, the contest is in the OLYMPIAD
	  accepting mode (as opposed to the OLYMPIAD judging mode);
	  the standing table is printed completely differently in the accepting
	  mode: the primary sort key is the number of accepted problems, and
	  each accepted test is counted as 1 point;
	  `run_is_failed_attempt' is ised instead of complex condition check;
	(write_standings) the new `accepting_mode' parameter is added. This
	  parameter is further passed to `do_write_kirov_standings';
	(new_write_user_report_view) reports in the HTML format are supported.

	* filter_tree.c: copyright notice is updated;
	(filter_tree_print) `run_status_to_str_short' is used instead of
	  `filter_tree_result_str';
	(filter_tree_result_str) function is removed;
	(filter_tree_eval_node) `run_status_to_str_short' is used instead of
	  `filter_tree_result_str';
	  new runlog entry codes RUN_PENDING, RUN_MEM_LIMIT_ERR,
	  RUN_SECURITY_ERR, RUN_FULL_REJUDGE are supported;
	  `run_str_short_to_status' is used instead of a long line of `if's.

	* runlog_xml.c: copyright notice is updated;
	(parse_status) runlog entry codes (like RUN_MAX_STATUS, etc) are used
	  instead of hard-coded numbers;
	  `run_str_short_to_status' function is used to convert the status
	  string to the status number;
	(unparse_status) function is removed, `run_status_to_str_short' is
	  used instead.

2005-02-28  Alexander Chernov  <cher@ispras.ru>

	* filter_scan.lex:
	new run status codes "PD" (RUN_PENDING), "ML" (RUN_MEM_LIMIT_ERR),
	  "SE" (RUN_SECURITY_ERR) are supported.

	* clean-users.c: copyright notice is updated;
	(main) new run status codes RUN_PENDING, RUN_MEM_LIMIT_ERR,
	  RUN_SECURITY_ERR are supported.

	* userlist-server.c:
	(cmd_register_new) check for empty register e-mail template file name
	  (<register_email_file> element) is added.

	* slice-userlist.c: copyright notice is updated;
	(main) the program name in the banner string is fixed.

2005-01-24  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* Makefile.unix.in: the file is renamed from Makefile.in;
	the Win32 specific stuff is removed since there is a special
	  Makefile.win32.in file now;
	`xml_utils' and `super_clnt' directories are cleared;
	Makefile.in is now removed on distclean.

	* compile.c: copyright notice is updated;
	(do_loop) the Unix-specific signal manipulation stuff is replaced
	  with generic functions from "interrupt.h";
	  `os_Sleep' is used instead of `sleep';
	  redirection modes are updated in `task_SetRedir' for the Win32
	  support.

	* configure.ac: changes for Win32 (MinGW) platform.

	* run.c: <reuse/integral.h> is included;
	<malloc.h> is included when compiling for MinGW32;
	(run_tests) the full path to the executable being started is specified
	  on Win32.

	* runlog.c:
	(run_undo_add_record) a new function, which undoes addition of a new
	  run record into the database. The function is used to implement
	  addition of a new run as one transaction.

	* runlog.h: (run_undo_add_record) new function prototype is added.

	* serve.c: (cmd_priv_submit_run) minor logging text update;
	(cmd_team_submit_run) addition of a new run into the run database is
	  undone (using `run_undo_add_record') if some further operation (for
	  example, writing the source code to the archive directory) is failed.

	* misctext.c, prepare.c:
	<malloc.h> is included when compiling for MinGW32.

	* sformat.c: <malloc.h> is included when compiling for MinGW32.
	(sformat_message) new format specifier "M1" is supported to
	  output the "extra1" field of the user information.

	* parsecfg.c, pathutl.c, testinfo.c: copyright notice is updated;
	<malloc.h> is included when compiling for MinGW32.

	* userlist.h: copyright notice is updated;
	new element "extra1" is added;
	(struct userlist_user) field "extra1" is added.

	* userlist_xml.c:
	support for a new tag "extra1" is added. This tag is currently
	used for passing the participant's grade to the `serve' program;
	(do_parse_user) "extra1" element is supported;
	(unparse_user) the participant's grade is unparsed to the "extra1"
	  element in the standings (USERLIST_MODE_STAND) mode.

	* Makefile.win32.in: initial revision

2005-01-19  Alexander Chernov  <cher@ispras.ru>

	* run.c: <termios.h> is included only if HAVE_TERMIOS_H macro is set;
	(run_tests) terminal state manipulations are only performed
	  if HAVE_TERMIOS_H is set.

	* fileutl.h: <sys/types.h> included.

	* configure.ac: checking for mingw platform is added.

	* config.h.in: added definition of HAVE_TERMIOS_H.

	* Makefile.unix.in: fixes to allow compilation on win32.

2005-01-18  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2005-01-18  Alexander Chernov  <cher@ispras.ru>

	* run.c: "misctext.h" is included;
	(html_print_by_line) a new function to print a text file line by line
	  performing its HTML armoring;
	(generate_report) new parameter `html_flag' is added, and if this
	  parameter has a non-zero value, the report file is generated in the
	  HTML format;
	(run_tests) new parameter `html_report_flag' is added, which is
	  passed further to `generate_report' (as `html_flag');
	(struct run_packet_bin) new field `html_report_flag' is added;
	(parse_packet) the parsing code is updated because the server now
	  passes the `html_report_flag' value in the packet;
	(do_loop) the value of `html_report_flag' field is passed to the
	  `run_tests' function.

	* prepare.h:
	(struct section_global_data) new field `html_report' is added.

	* prepare.c: new global parameter `html_report' is added.

	* misctext.h: (html_get_armor_table) new function prototype.

	* misctext.c:
	(html_get_armor_table) a new function to return the HTML armoring
	  table.

	* master_html.c:
	(write_priv_report) the first line of the report is checked to be
	  "content-type: text/html", and if this is so, the protocol is
	  assumed to be in HTML format and no HTML armoring is performed;
	(write_priv_users) added printing of the `e-mail' column.

	* serve.c:
	(write_run_packet) the value of the `html_report' global configuration
	  variable is also printed to the run control packet.

	* super_proto.h: removed duplicated ERR_SYSTEM_ERROR error code.

	* userlist_xml.c:
	(unparse_user) `email' field is unparsed in the USERLIST_MODE_STAND
	  as well (e-mail is now shown on the "View teams" page).

2005-01-16  Alexander Chernov  <cher@ispras.ru>

	* serve-cmd.c: <signal.h>, <sys/time.h> are included;
	(interrupt_handler) a function to handle an interrupt signal;
	(alarm_handler) a function to handle an alarm signal;
	(handle_full_import_xml) a new function to handle full-import-xml-runs
	  coammand;
	(cmds) added handler for "full-import-xml-runs" command.

	* serve.c:
	(cmd_priv_command_0) added necessary return after TRANSIENT_RUNS error
	  code is returned in HAS_TRANSIENT_RUNS handling;
	(cmd_simple_command) new function to handle simple non-privileged
	  commands;
	(packet_handlers) added handler for GET_TEST_SUSPEND command.

2005-01-15  Alexander Chernov  <cher@ispras.ru>

	* protocol.h: new command added: GET_TEST_SUSPEND.

	* filter_eval.c: copyright notice is updated;
	(do_eval) new primary expressions are handled:
	  "userinvisible" expr
	  "userbanned" expr
	  "userlocked" expr
	  "curuserinvisible"
	  "curuserbanned"
	  "curuserlocked"

	* filter_expr.y: copyright notice is updated;
	new primary expressions handled:
	  "userinvisible" [ '(' expr ')' ]
	  "userbanned" [ '(' expr ')' ]
	  "userlocked" [ '(' expr ')' ]
	  "curuserinvisible"
	  "curuserbanned"
	  "curuserlocked"

	* filter_scan.lex: copyright notice is updated;
	new tokens are handled: "userinvisible", "curuserinvisible",
	  "userbanned", "curuserbanned", "userlocked", "curuserlocked".

	* protocol.c: copyright notice is updated;
	error text for TRANSIENT_RUNS error is added.

	* protocol.h: new command added: HAS_TRANSIENT_RUNS;
	new error code added: TRANSIENT_RUNS.

	* serve-cmd.c:
	(handle_priv_transient_runs) new function to perform the
	  `has-transient-runs' command;
	(cmds) new commands added: `suspend-testing', `resume-testing',
	  `judge-suspended', `has-transient-runs'.

	* serve.c:
	(cmd_priv_command_0) `HAS_TRANSIENT_RUNS' command is handled;
	(count_transient_runs) a new function, which calculates the total
	  number of transient runs in the contest;
	(packet_handlers) handler for `HAS_TRANSIENT_RUNS' command is added.

	* master_html.c: copyright notice is updated;
	(struct user_filter_info) new field `prev_mode_clar' is added;
	(print_raw_record) new parameter `disq_attempts' is added, which is
	  the number of disqualified attempts;
	  call of `calc_kirov_score' is updated: parameter `disq_attempts'
	  is passed;
	  two new fields DISQ_ATTEMPT and DISQ_PENALTY are printed;
	(write_priv_all_runs)
	  calls of `print_raw_record' are updated;
	  the number of disqialified attempts is requested using
	  `run_get_attempts' and then passed to `print_raw_record' and
	  `write_html_run_status';
	(write_all_clars) new parameter `mode_clar' is added;
	  generation of drop down menu "View all clars" and
	  "View unanswered clars" is added;
	  generation of "Reset filter" button is added;
	  viewing mode (all/unanswered) is now depends on the value of
	  `mode_clar' variable rather than on the user privilege level;
	(write_master_page) new parameter `mode_clar' is added, which is
	  passed to `write_all_clars' function;
	(write_priv_source) the source text is printed in the line-numbered
	  form;
	(write_priv_users) call of `sformat_message' is updated;
	(html_reset_filter) the clar viewing parameters are not longer reset
	  in this function;
	(html_reset_clar_filter) new function to reset the clarification
	  viewing parameters.

	* master.c: copyright notice is updated;
	new global variable `filter_mode_clar' to store the clarification
	  request listing mode;
	(read_view_params) the `filter_mode_clar' variable is read from the
	  "filter_mode_clar" CGI variable;
	(action_reset_clar_filter) new function to perform the
	  `RESET_CLAR_FILTER' action;
	(display_master_page) parameter `filter_mode_clar' is passed to
	  the `serve_clnt_master_page' function;
	(main) `RESET_CLAR_FILTER' action is handled.

	* html.h: copyright notice is updated;
	(write_master_page) new parameter `mode_clar' is added;
	(html_reset_clar_filter) new function prototype;
	(calc_kirov_score) new parameter `disq_attempts' is added;
	(write_html_run_status) new parameter `disq_attempts' is added.

	* html.c: copyright notice is updated;
	(calc_kirov_score) new parameter `disq_attempts' is added, which is
	  the number of disqualified attempts;
	  score calculation and displaying rules are updated accordingly;
	(write_html_run_status) new parameter `disq_attempts' is added;
	(new_write_user_runs) the number of disqualified attempts is requested
	  from `run_get_attempts' and then passed to `write_html_run_status';
	(do_write_kirov_standings) the number of disqualified attempts for
	  each user and each problem is calculated separately from the number
	  of ordinary attempts;
	  call sites of `sformat_message' are updated according to change in
	  the function prototype;
	(do_write_standings) call sites of `sformat_message' are updated
	  according to change in the function prototype;
	(do_write_public_log) the number of disqualified attempts is requested
	  from `run_get_attempts' and then passed to `write_html_run_status'.

	* contests.h: <register_email_file> element is added;
	(struct contest_desc) `register_email_file' field is added.

	* contests.c: copyright notice is updated;
	support for element <register_email_file> is implemented;
	(parse_contest) <register_email_file> element is handled.

	* client_actions.h: copyright notice is updated;
	new client action `RESET_CLAR_FILTER' is added.

	* misctext.c: copyright notice is updated;
	(text_numbered_memlen) a new function, which returns the length
	  of the text with line numbering inserted;
	(text_number_lines) a new function, which inserts the line numbering
	  into a text.

	* misctext.h: copyright notice is updated;
	(text_numbered_memlen) new function prototype;
	(text_number_lines) new function prototype.

	* prepare.c: copyright notice is updated;
	"teamdb.h" is included;
	"prepare_serve.h" is included;
	new problem configuration variable `disqualified_penalty';
	new language configuration variables `disable_testing',
	  `disable_auto_testing';
	(problem_init_func) `disqualified_penalty' is initialized to -1;
	(struct variant_map_item) moved to prepare_serve.h;
	(struct variant_map) moved to prepare_serve.h;
	(find_variant) moved to prepare_serve.c;
	(struct user_adjustment_map) moved to prepare_serve.h;
	(find_user_priority_adjustment) moved to prepare_serve.c;
	(set_defaults) a "serve"-specific fragment of code, which loads
	  the XML contest decription is moved to a separate function
	  `prepare_serve_defaults', which is moved to prepare_serve.c;
	  `disqualified_penalty' field is initialized properly;
	  call sites of `sformat_message' are updated according to the changes
	  in the function's prototype;
	(split_path) moved to fileutl.[ch];
	(make_relative_path) moved to fileutl.[ch];
	(make_symlink) moved to fileutl.[ch];
	(prepare_tester_refinement) call sites of `sformat_message' are updated
	  according to the changes in the function's prototype.

	* prepare.h: copyright notice is updated;
	(struct section_problem_data) new field `disqualified_penalty' added;
	(struct section_language_data) new fields `disable_auto_testing',
	  `disable_testing' are added;
	(prepare_serve_defaults) new function prototype, the function is
	  implemented in prepare_serve.c.

	* protocol.h: copyright notice is updated;
	new command `RESET_CLAR_FILTER' is added;
	(struct prot_serve_pkt_master_page) new field `mode_clar' is added.

	* runlog.c: copyright notice is updated;
	(run_get_attempts) new parameter `pdisqattempts' is added, which is
	  a pointer to a variable to store the number of disqualified runs
	  for the given user;
	  the number of disqualified runs is calculated separately from the
	  number of regular runs.

	* runlog.h: copyright notice is updated;
	(run_get_attempts) new parameter added, which is the pointer to a
	  variable to store the number of disqualified runs.

	* serve-cmd.c: copyright notice is updated;
	(handle_dump_master_runs) call of `serve_clnt_master_page' is updated.

	* serve.c:
	(do_rejudge_all) the language configuration variable `disable_testing'
	  is supported;
	(do_judge_suspended) the same as above;
	(do_rejudge_by_mask) the same as above.

	* serve.c: copyright notice is updated;
	(cmd_master_page) `mode_clar' field's value is passed further to the
	  `write_master_page' function;
	(cmd_priv_submit_run) language configuration variables
	  `disable_testing', `disable_auto_testing' are supported;
	(cmd_team_submit_run) the same as above;
	(cmd_reset_filter) `RESET_CLAR_FILTER' command is handled;
	(do_judge_suspended) language configuration variables `disable_testing',
	  `disable_auto_testing' are supported;
	(packet_handlers) handler for `RESET_CLAR_FILTER' command is added;
	(main) call of `prepare_serve_defaults' is added after the call of
	  `prepare'.

	* serve_clnt.h: copyright notice is updated;
	(serve_clnt_master_page) added new parameter `mode_clar'.

	* sformat.c: copyright notice is updated;
	(sformat_message) added new parameters `user_data', `cnts_data',
	  `extra_data';
	  new format specifiers %Ui, %Un, %Ul, %Ue, %Uz, %UZ, %Vl, %Vu
	  are handled.

	* sformat.h: copyright notice is updated;
	added forward declarations of all the structure types used as the
	  parameters;
	added definition of the `struct sformat_extra_data' structure;
	(sformat_message) added new parameters `user_data', `cnts_data',
	  `extra_data'.

	* userlist-server.c: copyright notice is updated;
	"sformat.h", "fileutl.h" are included;
	(cmd_register_new) <register_email_file> element of the contest.xml
	  file is supported. This element specifies the file to be used as
	  a template for the successful registration letter. Certain format
	  specifiers (like %Vl) may be used in the element's value, the format
	  specifiers are substituted using the `sformat_message' function,
	  the format specifiers in the template text are also substituted
	  using the `sformat_message' function;
	(cmd_edit_field) added check for empty new password.

	* fileutl.h: copyright notice is updated;
	(make_symlink) new function prototype is added; the function is
	  moved here from prepare.c.

	* files.make: prepare_serve.[ch] are added.

	* userlist_xml.c: copyright notice is updated;
	(parse_passwd) empty passwords are allowed, empty passwords are
	  always assumed to be in the plain text form.

2005-01-14  Alexander Chernov  <cher@ispras.ru>

	* prepare_serve.c, prepare_serve.h: initial revision

2005-01-08  Alexander Chernov  <cher@ispras.ru>

	* run.c: copyright notice is updated;
	(run_tests) the path to the input file in the test directory is given
	  to the checker instead of the path to the input file in the
	  current directory. This fixes a critical error, because the program
	  being tested may (under certain conditions) modify the input file.

2004-12-31  Alexander Chernov  <cher@ispras.ru>

	* super_proto.h, super_proto.c, super_html.c, super_html.h, super_clnt.h, super_actions.h, super-serve.h, super-serve.c, serve-control.c:
	in progress...

	* serve.c:
	(do_loop) if the current time exceeds the scheduled contest start
	  time, the latter time is set as the contest start time.

	* run.c:
	a denial-of-service bug is fixed. `run' now does not load all the
	  program output or error files into memory, if the size of the file
	  exceeds the limit `global->max_file_length'.
	(struct testinfo) new fields: input_size, output_size, error_size,
	  correct_size, chk_out_size;
	(print_by_line) new parameter `size' is accepted, `strlen' is no longer
	  used in the function;
	  if the file or a line in the file is too long, its length is printed;
	  NULL input strings (parameter `s') are allowed;
	(generate_report) checks for NULL pointer before call of print_by_line
	  are removed, since NULL pointers are now handled in that function;
	(run_tests) bug fixed: since tests is now pointer into dynamic memory,
	  sizeof(tests) is no longer correct expression for the size of array;
	  if the team input, output, or error files are too large, such files
	  are not read into memory, but the _size field of `struct testinfo'
	  structure is filled anyway.

	* fileutl.h: copyright notice is updated;
	(generic_file_size) return type is now `ssize_t'.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2004-12-25  Alexander Chernov  <cher@ispras.ru>

	* files.make:
	new files added: collect-emails.c, serve-cmd.c, serve-control.c,
	  slice-userlist.c.

	* serve-cmd.c:
	(handle_dump_master_runs) handling of `first_run', `last_run'
	  parameters is improved.

2004-12-20  Alexander Chernov  <cher@ispras.ru>

	* serve_clnt.h: 
	(serve_clnt_master_page) `cmd' parameter is added;
	(serve_clnt_edit_run) `score_adj' parameter is added.

	* serve.c:
	(cmd_master_page) pkt->user_id is no longer user, p->user_id (i.e.
	  the user_id stored in the connection information structure) is
	  used instead, check for correspondence of the two fields are
	  disabled;
	  SRV_CMD_DUMP_MASTER_RUNS request is handled;
	  if the resulting html file is empty, no data connection is created;
	(cmd_view) PRIV_DOWNLOAD_REPORT, PRIV_DOWNLOAD_TEAM_REPORT requests
	  are handled;
	(cmd_edit_run) editing of `score_adj' field is supported;
	(packet_handlers) new commands PRIV_DOWNLOAD_REPORT,
	  PRIV_DOWNLOAD_TEAM_REPORT, DUMP_MASTER_RUNS are handled.

	* serve-cmd.c:
	(handle_dump_source) new function to handle "dump-source",
	  "dump-report", "dump-team-report" commands;
	(handle_dump_master_runs) new function to handle "dump-master-runs".

	* runlog_xml.c: support for `score_adj' attribute is added.

	* runlog.h: new field code: RUN_ENTRY_SCORE_ADJ;
	(struct run_entry) new field `score_adj' added.

	* runlog.c: 
	(run_set_entry) support for `score_adj' field is implemented.

	* protocol.c: two new error messages added.

	* protocol.h:
	new commands: PRIV_DOWNLOAD_REPORT, PRIV_DOWNLOAD_TEAM_REPORT,
	  DUMP_MASTER_RUNS;
	new error codes: FILE_NOT_EXIST, FILTER_EXPR;
	new constant RUN_SCORE_ADJ_SET;
	(struct prot_serve_pkt_run_info) field `score_adj' is added.

	* master_html.c:
	(print_raw_record) a new function to generate the raw runlog record;
	(write_priv_all_runs) renamed to this name from `write_all_runs' and
	  made public;
	  if the `self_url' parameter is an empty string, the raw output
	  format is used;
	(write_master_page) `write_priv_all_runs' is called instead of
	  `write_all_runs';
	(write_priv_source) new field `score_adj' of a runlog entry is
	  displayed;
	(write_raw_source) `self_url' parameter is added. If it is an empty
	  string, no HTTP headers are generated to the output;
	  FILE_NOT_EXIST error is returned if the file does not exist instead
	  of returning ERR_SYSTEM_ERROR;
	  "Content-disposition:" header is generated for the text source files;
	(write_raw_report) a new function to dump the report in the raw format
	  (i.e. without HTML decorations).

	* master.c:
	(change_status_if_asked) the call of `serve_clnt_edit_run' is updated;
	(change_status) the same as above;
	(change_problem) the same as above;
	(change_language) the same as above;
	(change_variant) the same as above;
	(action_run_change_pages) the same as above;
	(change_user_id) the same as above;
	(change_user_login) the same as above;
	(change_imported) the same as above;
	(change_hidden) the same as above;
	(change_tests) the same as above;
	(change_score) the same as above;
	(change_readonly) the same as above;
	(change_score_adj) new function to change the `score_adj' value of a
	  run record;
	(display_master_page) call of `serve_clnt_master_page' is updated;
	(main) RUN_CHANGE_SCORE_ADJ action is handled.

	* html.h: 
	(write_priv_all_runs) new prototype added;
	(write_raw_source) new parameter `self_url' added;
	(write_raw_report) new function prototype;
	(calc_kirov_score) new parameter `p_date_penalty' added.

	* html.c:
	(calc_kirov_score) new parameter `p_date_penalty' is added, which
	  is the address to store the date penalty value;
	  `score_adj' field of the run information is used;
	  the value of `score_adj' is printed in verbose scoring string;
	(write_html_run_status) call of `calc_kirov_score' is updated;
	(do_write_kirov_standings) call of `calc_kirov_score' is updated;
	(new_write_user_source_view) ERR_FILE_NOT_EXIST error code is
	  returned, if the source file does not exist;
	(new_write_user_report_view) the same as above.

	* client_actions.h: RUN_CHANGE_SCORE_ADJ action is added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2004-12-14  Alexander Chernov  <cher@ispras.ru>

	* diff.c: (compare_runs) invalid handling of the return values of the
	  `archive_make_read_path' function is fixed.

2004-12-13  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(client_new_state) the socket file descriptor is put to the
	  non-blocking mode;
	(client_disconnect) the socket file descriptor is put back to
	  the blocking mode;
	(is_valid_status) RUN_DISQUALIFIED run status is supported;
	(cmd_view) `SRV_CMD_VIEW_TEAM' command is handled;
	  extra argument is passed to the `write_runs_dump';
	  the HTML header is only printed, if the self_url_ptr is a non-empty
	  string;
	(cmd_import_xml_runs) an extra parameter is passed to the
	  `runlog_import_xml';
	(cmd_priv_submit_run) `archive_dir_prepare' is called with one extra
	  argument;
	(cmd_upload_report) the same as above;
	(cmd_team_submit_run) personal deadline for the problem and the user
	  is checked;
	  `archive_dir_prepare' is called with one extra argument;
	(cmd_priv_command_0) `SOFT_UPDATE_STAND' command is handled;
	(cmd_new_run) `archive_dir_prepare' is called with one extra argument;
	(cmd_edit_user) new function to handle ISSUE_WARNING and
	  SET_TEAM_STATUS commands;
	(read_compile_packet) `archive_dir_prepare' is called with one extra
	  argument;
	(read_run_packet) the problem penalty is not counted, because it will
	  be counted when the corresponding HTML page will be generated;
	  `archive_dir_prepare' is called with one extra argument;
	(do_rejudge_all) RUN_DISQUALIFIED run status is handled;
	(do_rejudge_problem) RUN_DISQUALIFIED run status is handled;
	(do_rejudge_by_mask) the same;
	(packet_handlers) handlers for VIEW_TEAM, SET_TEAM_STATUS,
	  ISSUE_WARNING, SOFT_UPDATE_STAND are added;
	(create_socket) in the forced socket creation mode (-f option) the
	  socket file is removed before binding a new socket;
	(check_sockets) error codes EINTR and EAGAIN are handled;
	(do_loop) if the initialize mode is activated, (-i option), quit
	  as soon as all the files are created.
	(main) two new options are supported: -f (forced socket creation),
	  -i (initialization of the working directories and files).

	* serve_clnt.h: 
	(serve_clnt_edit_user) new function prototype is added.

	* runlog_xml.c:
	(parse_status) RUN_DISQUALIFIED run status is supported;
	(unparse_status) the same is above.

	* runlog_import.c:
	(rename_archive_files) if the old and the new run numbers are the same,
	  no renaming is performed;
	(runlog_import_xml) new `flags' parameter is added;
	  several critical bugs is log merging are fixed.

	* runlog.h: new run status RUN_DISQUALIFIED is added;
	(runlog_import_xml) new parameter `flags' is added.

	* runlog.c: (run_status_str) `RUN_DISQUALIFIED' is supported;
	(run_write_xml) check for valid run statuses is disabled, since
	  invalid run statuses are ignored anyway by `unparse_runlog_xml'.

	* run.c: "interrupt.h" is included;
	<signal.h> is removed;
	(do_loop) `interrupt_init', `interrupt_disable', `interrupt_enable',
	  `interrupt_get_status' functions are used instead of direct
	  manipulation with `sigprocmask'.

	* protocol.h:
	new commands added: VIEW_TEAM, SET_TEAM_STATUS, ISSUE_WARNING,
	  SOFT_UPDATE_STAND;
	(struct prot_serve_pkt_user_info) new structure for the
	  `SET_TEAM_STATUS' command.

	* prepare.h:
	(struct pers_dead_info) new structure to descript the personal
	  deadlines;
	(struct section_global_data) new fields added: contestant_status_num,
	  contestant_status_legend, contestant_status_row_attr,
	  stand_show_contestant_status, stand_show_warn_number,
	  stand_contestant_status_attr, stand_warn_number_attr;
	(struct section_problem_data) new fields added: score_multiplier,
	  personal_deadline, pd_total, pd_infos.

	* prepare.c:
	new global parameters: contestant_status_num, contestant_status_legend,
	  contestant_status_row_attr, stand_show_contestant_status,
	  stand_show_warn_number, stand_contestant_status_attr,
	  stand_warn_number_attr;
	new problem parameters: score_multiplier, personal_deadline;
	(parse_personal_deadlines) new function to parse the value of the
	  `personal_deadline' problem configuration variable;
	(set_defaults) all the new configuration variables are supported.

	* misctext.h: copyright notice is updated;
	(html_armor_string_dup) new function prototype is added;
	(html_armor_string_dupa) new macro is defined.

	* misctext.c: <reuse/xalloc.h> is added;
	(html_armor_string_dup) new function.

	* master_html.c: "team_extra.h" is included;
	"xml_utils.h" is included;
	"userlist.h" is included;
	(write_change_status_dialog) "Disqualify" option is enabled;
	(write_all_runs) `write_html_run_status' is used;
	  "Disqualify" option is enabled;
	(write_priv_users) the users table is redone: added "status" and
	  "number of warnings" columns. Also added "view details" link;
	(write_priv_user) new function, which generates an HTML page with
	  user's detailed information;
	(write_runs_dump) new parameter 'url' is added. If this parameter
	  is not an empty string, the HTML header is generated (text/plain)
	  is generated.

	* master.c:
	(sched_if_asked) the full date specification, which includes the date
	  and the time is supported;
	(change_status_if_asked) RUN_DISQUALIFIED (10) is supported;
	(change_status) the same;
	(action_set_team_status) new function to set the user's status;
	(action_issue_warning) new function to add a warning to the user's
	  record;
	(action_view_team) new function to display the user information page;
	(action_merge_runs) `serve_clnt_import_xml_runs' new parameter `flags'
	  (== 0) is passed to `serve_clnt_import_xml_runs';
	(main) new actions handled: VIEW_TEAM, CHANGE_CONTESTANT_STATUS,
	  ISSUE_WARNING.

	* html.h: (write_priv_user) new function prototype;
	(write_runs_dump) new parameter is added;
	(calc_kirov_score) new function prototype;
	(write_html_run_status) new function prototype.

	* html.c: "xml_utils.h" is included;
	(calc_kirov_score) new function to calculate the score for the
	  given run using the KIROV scoring system;
	(write_html_run_status) new function to generate HTML fragment with
	  the run status (several columns, containing the status, score,
	  failed tests, etc);
	(new_write_user_runs) `write_html_run_status' is used;
	(do_write_kirov_standings) `calc_kirov_score' is used;
	  contestant status is displayed, if the global configuration variable
	  `stand_show_contestant_status' is set to TRUE;
	  global configuration variable `contestant_status_row_attr' is
	  handled;
	  number of warnings is shown, if the global configuration variable
	  `stand_show_warn_number' is set to TRUE;
	  runs is the future of the current time are ignore, when the standings
	  are not privileged;
	(do_write_standings) runs from the "future" of the current time
	  are ignored, if standings are not privileged;
	  contestant status is displayed, if the global configuration variable
	  `stand_show_contestant_status' is set to TRUE;
	  number of warnings is shown, if the global configuration variable
	  `stand_show_warn_number' is set to TRUE;
	  global configuration variable `contestant_status_row_attr' is
	  handled;
	(do_write_public_log) `write_html_run_status' is used;
	(write_team_page) the list of warnings is printed for a user;
	  personal deadlines are supported;
	  the current penalty for all the available problems is shown;

	* filter_tree.c:
	(filter_tree_result_str) "DQ" status (RUN_DISQUALIFIED) is supported;
	(filter_tree_eval_node) RUN_DISQUALIFIED status is supported.

	* filter_scan.lex: 
	"DQ" run status (RUN_DISQUALIFIED) is supported.

	* files.make: new files are added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* team_extra_xml.c: "xml_utils.h" is included;
	new elements: <warnings>, <warning>, <text>, <comment>, <status>;
	new attributes: "issuer_id", "issuer_ip", "date";
	(parse_warnings) new function to parse the <warnings> element;
	(parse_status) new function to parse <status> element;
	(team_extra_parse_xml) new elements are supported;
	(team_extra_unparse_xml) new elements are supported.

	* team_extra.h: <time.h> is included;
	(struct team_warning) new structure to describe a warning to a user;
	(struct team_extra) `status' field is added to store the user's
	  status;
	  `warns' field is added to store the array of warnings;
	(team_extra_get_entry) new function prototype;
	(team_extra_append_warning) new function prototype.

	* team_extra.c:
	(team_extra_get_entry) new function, which returns team extra
	  information entry for the given user;
	(team_extra_flush) `is_dirty' flag is cleared;
	(team_extra_append_warning) new function, which appends a warning
	  to a user's record.

	* ejudge-setup.c: setting of super-serve-socket-path is supported;
	<serve_control_access> is generated.

	* edit-userlist.c: editing of "privileged" field is supported.

	* contests.h: <stdlib.h> is included;
	new elements: <serve_control_access>, <run_user>, <run_group>;
	new attribute: "invisible";
	new error codes: FILE_CREATION_ERROR, IO_ERROR;
	(contests_make_path) prototype is added;
	(contests_check_register_ip_2) new function prototype;
	(contests_check_users_ip_2) the same;
	(contests_check_master_ip_2) the same;
	(contests_check_judge_ip_2) the same;
	(contests_check_team_ip_2) the same;
	(contests_check_serve_control_ip) the same;
	(contests_check_serve_control_ip_2) the same;
	(contests_write_header) new function prototype;
	(contests_save_xml) new function prototype.

	* contests.c: <sys/fcntl.h> is included;
	<errno.h> is included;
	new XML elements supported: <serve_control_access>, <run_user>,
	  <run_group>;
	new XML (<contest>) attribute: "invisible";
	(parse_contest) new XML attributes and elements are supported;
	(contests_check_ip) `CONTEST_SERVE_CONTROL_ACCESS' is supported;
	(contests_check_register_ip_2) new function;
	(contests_check_users_ip_2) new function;
	(contests_check_master_ip_2) new function;
	(contests_check_judge_ip_2) new function;
	(contests_check_team_ip_2) new function;
	(contests_check_serve_control_ip) new function;
	(contests_check_serve_control_ip_2) new function;
	(contests_make_path) is made non-static function;
	(contests_write_header) a new function to write the <contest> element
	  to the given stream;
	(contests_save_xml) new function to store the contests XML to a file.

	* configure.ac: new option --with-super-serve-socket is supported.

	* config.h.in: EJUDGE_SUPER_SERVE_SOCKET is added.

	* compile.c: "interrupt.h" is included;
	(do_loop) `interrupt_enable', `interrupt_disable', `interrupt_init',
	  `interrupt_get_status' are used instead of direct manipulation with
	   sigprocmask.

	* client_actions.h:
	new client actions: VIEW_TEAM, CHANGE_CONTESTANT_STATUS,
	  ISSUE_WARNING.

	* clean-users.c: 
	(main) RUN_DISQUALIFIED run status is supported.

	* archive_paths.h: 
	(archive_dir_prepare) new parameter added.

	* archive_paths.c:
	(archive_dir_prepare) new parameter `prefix' is accepted. This is
	  the name prefix;
	(archive_make_read_path) error message is corrected;
	(archive_make_write_path) the same;
	(archive_make_move_path) the same;
	(archive_rename) use of `archive_dir_prepare' is updated.

	* Makefile.in:
	rules for the new programs added: serve-cmd, serve-control,
	  slice-userlist;
	new library rule: libsuper_clnt.a.

2004-12-05  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c:
	new option `-f' is added for "forced" mode. In this mode the socket
	file is removed prior binding a socket. The forced mode may be used
	for crash recovery.
	(disconnect_client) the primary file descriptor is returned to the
	  blocking mode before closing;
	(is_privileged_user) returns 1, if the `privileged' field is set
	  to TRUE;
	(cmd_priv_login) handle new case, when the `contest_id' is 0, this
	  mode is used by `serve-control' program. If the contest_id is 0,
	  the user must have the corresponding global capability bit set;
	  the privilege level is automatically adjusted in this mode;
	(cmd_priv_check_cookie) `contest_id' == 0 is allowed as described
	  above; the user privilege level is also automatically adjusted;
	  strict match between the contest_id is the incoming packet and
	  the stored cookie is no longer required. The cookie is updated
	  automatically;
	(cmd_list_users) the output data file descriptor is switched
	  to the non-blocking mode;
	(cmd_dump_database) the same as above;
	(do_generate_passwd) the password for the banned, invisible or
	  locked users is not changed automatically;
	(cmd_generate_register_passwords) the output file descriptor
	  is switched to the non-blocking mode;
	(do_generate_team_passwd) the password for the banned, invisible or
	  locked users is not changed automatically;
	(cmd_generate_team_passwords) the output file descriptor is switched
	  to the non-blocking mode;
	(cmd_delete_field) the `privileged' field of the user structure
	  is supported;
	(cmd_get_uid_by_pid_2) new function to handle ULS_GET_UID_BY_PID_2
	  request;
	(cmd_table) ULS_GET_UID_BY_PID_2 command is added;
	(do_work) the control socket is removed before `bind', if the
	  forced mode is enabled;
	  all the select'ed file descriptors are now used in the non-blocking
	  mode, so the non-blocking i/o specific error codes are handled;
	  incoming command socket is also turned to the non-blocking i/o;
	(main) option parsing is redone;
	  new `-f' (forced mode) option is added.

	* userlist_cfg.h:
	(struct userlist_cfg) new fields `super_serve_socket',
	  `super_serve_user', `super_serve_group', `userlist_user',
	  `userlist_user' are added.

	* userlist.c:
	(userlist_get_user_field_str) `privileged' field is supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h: new user's attribute 'privileged' is added;

	* userlist_cfg.c:
	new configuration file elements are added: <super_serve_socket>,
	  <super_serve_user>, <super_serve_group>, <userlist_user>,
	  <userlist_group>.

	* userlist_proto.c: error code 1 is added.

	* userlist_proto.h: copyright notice is updated;
	new userlist request: ULS_GET_UID_BY_PID_2;
	new userlist reply: ULS_UID_2;
	error code 1 is reserved;
	(struct userlist_pk_uid_2) new packet structure for
	  ULS_GET_UID_BY_PID_2 request.

	* userlist_xml.c: 
	(do_parse_user) new `privileged' field is supported;
	(unparse_user) new `privileged' field is supported.

	* xml_utils.h:
	many new function prototypes are added: xml_err, xml_err_a,
	  xml_err_attrs, xml_err_nested_elems, xml_err_attr_not_allowed,
	  xml_err_elem_not_allowed, xml_err_elem_redefined, xml_err_top_level,
	  xml_err_attr_invalid, xml_err_elem_undefined, xml_err_attr_undefined,
	  xml_leaf_elem, xml_empty_text, xml_attr_bool, xml_elem_ip_mask.

2004-11-26  Alexander Chernov  <cher@ispras.ru>

	* super-serve.h, super_actions.h, super_html.c, super_html.h:
	initial revision

	* userlist_clnt.h: copyright notice is updated

	* userlist_clnt.h:
	(userlist_clnt_get_uid_by_pid_2) new prototype added.

2004-11-13  Alexander Chernov  <cher@ispras.ru>

	* interrupt.h: initial revision

2004-11-09  Alexander Chernov  <cher@ispras.ru>

	* cher-configure, unicorn-configure: *** empty log message ***

	* serve-cmd.c, serve-control.c, slice-userlist.c, super_clnt.h, super_proto.c, super_proto.h:
	initial revision

2004-10-31  Alexander Chernov  <cher@ispras.ru>

	* xml_utils.h: initial revision

2004-10-27  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(parse_deadline_penalties) specification of penalty in the form
	  "ADD-VALUE" is supported. In this case the deadline date is set
	  to the maximal value of the time_t type ("2038/01/19").

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c:
	(do_write_kirov_standings) the problem acception time is calculated
	  for each problem and each user, the acception time is printed if
	  the `stand_show_ok_time' is set and `stand_hide_time' is not set;
	  statistics for submissions and successes is printed at the bottom
	  of the standings table;
	(do_write_standings) statistics for submissions and successes is
	  printed at the bottom of the standings table.

	* prepare.c:
	new global parameter `stand_show_ok_time': if the parameter is set,
	  the problem acception time is printed into the KIROV standings
	  file;
	new problem parameter `stand_hide_time', which disables printing
	  of the problem acception time for a specified problem;
	new problem parameter `start_time', which sets the initial time, when
	  this problem become available for submitting;
	(parse_deadline_penalties) parsing of the penalty specification
	  is improved;
	(set_defaults) `start_date' configuration variable is handled.

	* run.c:
	(run_tests) special handling of `EJUDGE_PREFIX_DIR' environment
	  variable is implemented: if only the variable name is specified
	  in `start_env', it is replaced with the value of the prefix
	  directory;
	  `sound_player' is invoked in the KIROV judging mode when
	  `extended_sound' flag is set.

	* serve.c: (cmd_team_submit_run) new problem configuration parameter
	  `start_time' is supported;
	(read_compile_packet) fixed order of parameters in the call of
	  `write_run_packet'.

	* sformat.c: 
	(sformat_message) new format conversions are implemented:
	  Mf - short name of the faculty;
	  MF - short name of the faculty (english);
	  Md - long name of the faculty;
	  MD - long name of the faculty (english);
	  Mp - printer name.

	* userlist-server.c:
	(do_generate_passwd) the `location' field is printed to the output
	  HTML table;
	(do_generate_team_passwd) the same as above.

	* ejudge-setup.c:
	(generate_serve_cfg) support for the Java JDK is implemented;
	(generate_compile_cfg) the same as above.

2004-10-25  Alexander Chernov  <cher@ispras.ru>

	* unicorn-configure: added --with-javac option.

	* cher-configure: added --with-javac and --with-scheme options.

	* configure.ac: added support for Java SDK.

	* config.h.in:
	EJUDGE_PREFIX_DIR and COMPILE_JAVA_VERSION variables are added.

2004-10-18  Alexander Chernov  <cher@ispras.ru>

	* prepare.h:
	(struct section_global_data) field `stand_show_ok_time' is added;
	(struct section_problem_data) field `stand_hide_time' is added;
	  fields `start_date' and `t_start_date' are added.

	* userlist_xml.c: support for the <languages> element is added;
	(parse_date) the `tt' variable is properly initialized;
	(parse_members) bug in invalid handling of "scientist" value is fixed;
	(do_parse_user) <languages> element is support;
	(unparse_user) <languages> element is support.

	* userlist.h: support for new tag <languages> is added;
	(struct userlist_user) field `languages' is added.

	* userlist.c:
	(userlist_parse_date) the `tt' variable is properly initialized;
	(userlist_get_user_field_str) `languages' field is supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_member_field) the same as above.

	* userlist-server.c:
	(do_set_user_info) `location' field cannot be updated using this
	  function;
	  added support for 'languages' field;
	(do_list_users) added support for `languages' field;

	* testinfo.c: copyright notice is updated;
	(parse_cmdline) bug in parsing \" fixed.

	* register.c: support for the new "languages" field is implememted.

	* edit-userlist.c: support for editing "languages" field is added.

	* contests.c: support for "languages" field identifier is added;
	(parse_date) the `tt' structure is properly initialized with zeros.

	* contests.h: new field identifier CONTEST_F_LANGUAGES added.

2004-10-11  Alexander Chernov  <cher@ispras.ru>

	* Makefile.in: new utility "collect-emails" is added.

	* collect-emails.c: initial revision

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2004-10-01  Alexander Chernov  <cher@ispras.ru>

	* revinfo.c: <ctype.h> is included;
	(struct verdb) new field `time' is added to store the release time;
	(add_verdb) new parameter `rtime' is added to fill up the new
	  `time' field;
	(read_verdb) the new format of the version database (with added release
	  date) is supported;
	(write_verdb) the new format of the version database is used to write
	  the database. The new format of the release database includes the
	  release date.
	(main) use of `add_verdb' is updated.

	* TODO: *** empty log message ***

	* prepare.c:
	(set_defaults) is the value of the <root_dir> element of the
	  ejudge.xml configuration file is set, this value is used as the
	  default value for the `root_dir' global configuration variable.

2004-09-30  Alexander Chernov  <cher@ispras.ru>

	* TODO: *** empty log message ***

2004-09-29  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_cfg.h:
	(struct userlist_cfg) new fields added: `var_dir', `super_serve_log',
	  `compile_log'.

	* userlist_cfg.c: include of <reuse/osdeps.h> is added;
	include of <limits.h> is added;
	new configuration file elements: <var_dir>, <super_serve_log>,
	  <compile_log>;
	(tree_alloc_func) new elements are supported;
	(userlist_cfg_parse) new elements are supported, their absolute
	  paths are calculated using the value of <var_dir>, if necessary.

	* ejudge-setup.c:
	added support for tuning the value of <log_dir> value of the
	  ejudge.xml configuration file.

	* serve.c: <reuse/exec.h> is included;
	(do_start_cmd) a new function, which executes the program, as
	  specified in the `contest_start_cmd' global configuration
	  variable;
	(cmd_priv_command_0) `do_start_cmd' is called;
	(do_loop) `do_start_cmd' is called.

	* prepare.c, prepare.h:
	new global configuration parameter: `contest_start_cmd';
	(set_defaults) the `contest_start_cmd' is handled;
	  the values of stand_header_file, stand_footer_file,
	  stand2_header_file, stand2_footer_file, plog_header_file,
	  plog_footer_file are treated as paths relative to
	  conf_dir, if they are not absolute.

	* contests.h: new element <conf_dir> is added.

	* contests.c: <reuse/osdeps.h> is included;
	<limits.h> is included;
	new element <conf_dir> is supported;
	(process_conf_file_path) new function, which process the given
	  string, adding the value of the <conf_dir> element in front of
	  the string, if the string is not an absolute path;
	(parse_contest) <conf_dir> element is supported;
	  <conf_dir> is processed, setting its default value to
	  <root_dir>/conf;
	  <register_header_file>, <register_footer_file>, <users_header_file>,
	  <users_footer_file>, <team_header_file>, <team_footer_file>
	  elemets are processed: if the value is a relative path, the
	  <conf_dir> is added in front of this path.

	* edit-userlist.c: 
	(do_display_user_menu) memory leak is fixed.

	* expat_iface.c: 
	(end_hnd) memory leak is fixed.

2004-09-27  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* prepare.c:
	(set_defaults) the standard_checker is correctly inherited from the
	  problem description while initializing the tester.

	* master_html.c: 
	(write_all_runs) "Add new run" link is generated;
	(write_new_run_form) new function, which generates the "Add new run"
	  form.

	* master.c:
	(client_server_down) a new function to report "Server is down"
	  error;
	(action_new_run) a new function to perform the "Add new run"
	  command;
	(parse_client_ip) moved to the clntutil module;
	(initialize) call of `parse_client_ip' is updated;
	(main) the "server down" condition is checked and the appropriate
	  error is reported;
	  new actions ACTION_NEW_RUN_FORM, ACTION_NEW_RUN are supported.

	* prepare.c: "version.h" is included;
	new global parameter `rounding_mode';
	(set_defaults) `rounding_mode' global configuration variable is
	  supported;
	(parse_version_string) new function to parse the version string
	  from version.h;
	(prepare) new parameter `managed_flag' is added, which is set to 1
	  by the caller, if the program is started from the super-serve
	  program;
	  new conditional variables `major', `minor', `patch', `build',
	  `managed' are added.

	* prepare.h: the constands defining the rounding mode are added;
	(struct section_global_data) new fields `rounding_mode' and
	  `rounding_mode_val' are added;
	(prepare) function prototype is updated: a new parameter `managed_flag'
	  is added.

	* protocol.h: new commands added: NEW_RUN_FORM, NEW_RUN;
	new flag PROT_SERVE_RUN_SOURCE_SET is added;
	(struct prot_serve_pkt_run_info) new fields `ip', `run_src_len'
	  are added.

	* runlog.c:
	(run_set_entry) editing of hidden runs before the start of the
	  contest is supported.

	* serve.c:
	(cmd_view) the new `SRV_CMD_NEW_RUN_FORM' command is supported;
	(cmd_edit_run) check for run_src_len == 0 is added;
	(cmd_new_run) a new function to handle `SRV_CMD_NEW_RUN' command;
	(packet_handlers) handlers for the new command mentioned above
	  are added;
	(main) call of `prepare' is updated, as the function now accepts
	  an extra parameter, which is 1, if the program is running in
	  the managed mode.

	* team.c: (parse_client_ip) function is moved to clntutil module;
	(initialize) call of `parse_client_ip' is updated;
	(send_clar_if_asked) dead code is removed;
	(client_server_down) a new function to report the "Server down"
	  error;
	(main) check for "Server down" condition is added. An attempt is
	  made to open a connection to the server immediately. If the
	  attempt fails, the "Server down" error is displayed.

	* register.c:
	(parse_user_ip) function is removed because superseded by the
	  `parse_client_ip' function from the clntutil module;
	(initialize) `parse_client_ip' is used instead of `parse_user_ip'.

	* run.c: (main) call of `prepare' function is updated as the function
	  prototype is changed.

	* serve_clnt.h: (serve_clnt_new_run) new function prototype is added.

	* clntutil.c: (parse_client_ip) return without value bug is fixed.

	* printing.c:
	(do_print_run) the `printer_name' field of the user information
	  is used to direct the listing to the given printer queue.

	* html.h: (write_new_run_form) new function prototype is added.

	* html.c:
	(sec_to_min) a new function, which converts seconds to minutes
	  according to the current rounding mode;
	(do_write_standings) the new `sec_to_min' function is used.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* compile.c:
	(main) call of `prepare' function is updated as the function
	  prototype is changed.

	* clntutil.h: (parse_client_ip) new function prototype is added.

	* clntutil.c:
	(client_lookup_ip) hack for the IPv6 "::1" address is implemented;
	(parse_client_ip) a new function, which is moved here from the
	  main CGI applications source files (master.c, team.c, register.c,
	  users.c).

	* client_actions.h: two new actions added: NEW_RUN_FORM, NEW_RUN.

	* userlist-server.c:
	the logging output format is changed in almost all functions;
	logging output is more terse if the daemon mode is enabled;
	(main) the `-D' option is implemented, which switches the program
	  into the daemon mode: the logging output is directed to the
	  log file as specified by the <userlist_log> element of the
	  ejudge.xml file, the program goes to background and detaches
	  itself from the current controlling terminal.

	* edit-userlist.c:
	new `printer_name' user information field is supported;
	(display_user) the same as above.

	* userlist.c:
	(userlist_get_user_field_str) support for `printer_name' field added;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h: support for `printer_name' user info field is added.

	* userlist_cfg.c:
	elements <admin_email> and <userlist_log> are supported.

	* userlist_cfg.h:
	(struct userlist_cfg) two new fields `admin_email' and `userlist_log'
	  are added.

	* userlist_xml.c:
	support for new user element <printer_name> is added;
	(node_free) the same as above;
	(do_parse_user) the same as above;
	(unparse_user) the same as above.

	* users.c:
	(parse_user_ip) function is removed because superseded by the
	  `parse_client_ip' function from the clntutil module;
	(initialize) `parse_client_ip' is used instead of `parse_user_ip'.

2004-09-19  Alexander Chernov  <cher@ispras.ru>

	* parsecfg.c:
	(copy_param) `M' and `K' suffixes are supported for numbers, where
	  K means factor of 1024, M - factor of 1024 * 1024.

2004-09-18  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c:
	(cmd_priv_login) check, that the user is not registered for the
	  specified contest is performed and the appropriate error code
	  is returned;
	(cmd_priv_check_cookie) the same as above;
	(do_set_user_info) field `spelling' is supported.

	* edit-userlist.c:
	new `spelling' user information field is supported;
	(display_user) the same as above;
	(user_match) search in `spelling' field is performed in TEXT search.

	* configure.ac: --with-festival option is supported;
	script/festival is added to script lists.

	* compile.c:
	(do_loop) the terminating "0" in the compile packet parsed and checked.

	* cher-configure: added --with-festival argument.

	* master.c:
	better error reporting is implemented, when a user has the neccessary
	  administrative privileges, but is not registered for the contest;
	(error_not_registered) new function to report "Not registered for
	  the contest" error;
	(error_cannot_participate) new function to report "Cannot participate"
	  error;
	(is_auth_error) removed, as no longer used;
	(authentificate) proper handling of the server error code is
	  implemented;
	(initialize) `parse_param' is called with two extra parameters as the
	  interface of the function is changed.

	* parsecfg.c:
	initial support for conditional compilation is implemented;
	lots of new functions for recursive descent parsing of expression;
	(parse_param) two new parameters are accepted, which contain
	  values of predefined conditional variables;
	  conditional compilation lines are handled, a conditional compilation
	  line starts with `@'.

	* parsecfg.h:
	new type `cfg_cond_value_t' is defined to pass the values of
	  conditional variables;
	(parse_param) prototype changed: information about predefined
	  conditional variables is accepted.

	* prepare.c:
	new global parameters: test_pat, corr_pat, info_pat, tgz_pat,
	  extended_sound;
	new problem parameters: spelling, test_pat, corr_pat, info_pat,
	  tgz_pat;
	(problem_init_func) `test_pat', `corr_pat', `info_pat', `tgz_pat'
	  are initialized to "undefined" value;
	(set_defaults) variable substitution is performed for `sound_player';
	  `test_pat', `corr_pat', `info_pat', `tgz_pat' are handled;
	(prepare) two variables: "host", "mode" are defined for conditional
	  compilation during configuration file parsing;
	  call of `parse_param' is updated since its interface is updated,
	  the conditional variable information is passed to `parse_param'.

	* prepare.h:
	(struct section_global_data) new fields: `test_pat', `corr_pat',
	  `info_pat', `tgz_pat', `extended_sound';
	(struct section_problem_data) new fields: `spelling', `test_pat',
	  `corr_pat', `info_pat', `tgz_pat'.

	* run.c:
	removed hard limit on the number of tests for a problem. The test info
	  arrays are automatically adjusted to the maximal number of tests
	  in contest problems.
	(run_tests) added parameters `user_spelling' and `problem_spelling',
	  which are passed unchanged to the sound generation program, if
	  `extended_sound' global configuration variable is set;
	  new problem configuration variables `test_pat', `corr_pat',
	  `info_pat' are used to generate the name of input test file, if they
	  are set;
	  if `extended_sound' global configuration variables is set, the
	  sound generator is called with parameters: run status, test number,
	  problem spelling, user spelling. It may be used by speech generator;
	(struct run_packet_bin) new structure to hold the run packet;
	(parse_packet) a new function to parse the run packet in the format,
	  the results is returned in `struct run_packet_bin';
	(do_loop) `parse_packet' is used to read the run packet;
	(count_files) new parameter `pat' is added to specify the files
	  pattern;
	(check_config) new problem configuration variables `test_pat',
	  `corr_pat', `info_pat' are supported;
	  array for test information is extended automatically, if needed.

	* runlog.c:
	(runlog_check) check, that non-started contest does not have run
	  is removed, since administrative runs are possible.

	* serve.c:
	(write_run_packet) new function to generate a run control packet in
	  the new format. The new format allows passing arbitrary strings
	  and includes new user spelling and problem spelling strings for
	  use in a speech generator;
	(read_compile_packet) the new `write_run_packet' function is used
	  to generate a run packet; user spelling and problem spelling
	  information is passed to that function;
	(queue_compile_request) the compile packet format is slightly
	  changed: the terminator "0" is written after all the data.

	* team.c:
	(initialize) `parse_param' call is updated due to interface change.

	* userlist.h: support for `spelling' user info field is added.

	* userlist_xml.c: support for new user element <spelling> is added;
	(node_free) the same as above;
	(do_parse_user) the same as above;
	(unparse_user) the same as above.

	* userlist.c:
	(userlist_get_user_field_str) support for 'spelling' field added;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

2004-09-17  Alexander Chernov  <cher@ispras.ru>

	* unicorn-configure: initial revision

2004-09-09  Alexander Chernov  <cher@ispras.ru>

	* cdeps.c: Fixes for reuse-4 compatibility

2004-09-05  Alexander Chernov  <cher@ispras.ru>

	* super-serve.c:
	(print_info) the function is commented out since is not used.

	* sha.h, sha.c: reuse v4 is supported.

	* serve.c, ncurses_utils.c, edit-userlist.c:
	XALLOCAZ macro is checked for previous definition.

	* configure.ac: reuse v4 is supported.

	* clean-users.c:
	(print_info) the function is commented out since is not used.

	* cher-configure: *** empty log message ***

	* Makefile.in:
	since the reuse 4.0 does not set REUSE_CONF variable, the variable
	is not used. The stuff for win32 compilation is commented out.

2004-08-25  Alexander Chernov  <cher@ispras.ru>

	* revinfo.c: calls of internationalization functions are removed;
	one error message is fixed.

2004-06-20  Alexander Chernov  <cher@ispras.ru>

	* INSTALL, INSTALL.RUS, ejudge.ru_RU.KOI8-R.po:
	*** empty log message ***

	* Makefile.in:
	the references to the libcharset library or to the charset
	  directory are removed.

2004-06-20  Alexander Chernov  <cher@ispras.ru>

	* expat_iface.c: The copyright notice is updated;
	"config.h", "settings.h" are included;
	"nls.h" is removed;
	<iconv.h>, <errno.h> are included;
	the EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in the "config.h" file;
	(struct parser_data) `conv_hnd' field is added to store the charset
	  conversion descriptor to convert from UTF-8 to the local charset;
	(is_correct_utf8) a new function, which validates an UTF-8 multi-byte
	  sequence;
	(convert_utf8_to_local) a new function, which converts the UTF-8
	  string to the string in the local charset as defined by the
	  EJUDGE_CHARSET macro;
	(convert_utf8_to_local_heap) a new conversion function, which returns
	  the result in dynamic memory;
	(encoding_hnd) rewritten using the `iconv' facilities;
	(start_hnd) the tag and attribute names are not converted to the
	  local charset, the attribute value is converted using the new
	  `convert_utf8_to_local_heap' function;
	(end_hnd) the element text is converted to the local charset using the
	  `convert_utf8_to_local_heap' function;
	(xml_build_tree) the conversion descriptor to convert from the UTF-8
	  charset to the local charset is managed and passed to the parsing
	  routines;
	(xml_build_tree_str) the same as above;
	(xml_unparse_tree) the EJUDGE_CHARSET is used as the charset of the
	  generated XML file instead of "KOI8-R";
	the emacs' "Cyrillic-KOI8" language environment setting is removed.

	* files.make: nls.h is removed;
	charsets/*.c files are removed.

	* html.c:
	The `koi8-r' charset specification is removed from the file header;
	"settings.h" is included;
	The EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in "config.h";
	(write_standings_header) the `charset' configuration variable
	  is used instead of `standings_charset';
	(write_standings) support for the `standings_charset' configuration
	  variable is commented out;
	(do_write_public_log) the EJUDGE_CHARSET is used as the charset for
	  the generated text/plain file instead of "KOI8-R".

	* prepare.c:
	`standings_charset' global configuration variable is commented out;
	(set_defaults) handling of `standings_charset' is commented out.

	* prepare.h: "nls.h" is removed;
	(struct section_global_data) `charset_ptr', `standings_charset',
	  `standings_charset_ptr' fields are commented out.

	* runlog_xml.c:
	The `koi8-r' charset specification is removed from the file header;
	"config.h", "settings.h" are included;
	The EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in "config.h";
	(unparse_runlog_xml) the EJUDGE_CHARSET is printed as the XML file
	  charset instead of "KOI8-R".

	* serve.c:
	The `koi8-r' charset specification is removed from the file header;
	The EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in "config.h";
	(cmd_view) the EJUDGE_CHARSET is used as the charset for the
	  generated text/plain documents instead of "KOI8-R".

	* settings.h:
	EJUDGE_INTERNAL_CHARSET macro is added and defined to "UTF-8".

	* team_extra_xml.c: "config.h", "settings.h" are included;
	The EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in "config.h";
	(team_extra_unparse_xml) the EJUDGE_CHARSET is printed as the
	  XML file charset instead of "KOI8-R".

	* userlist-server.c:
	The EJUDGE_CHARSET macro is defined to the EJUDGE_INTERNAL_CHARSET
	  macro, if the former is not defined in "config.h";
	(send_email_message) the EJUDGE_CHARSET charset is used instead of
	  "KOI8-R", if the `charset' parameter is NULL.

	* filter_eval.c: The copyright notice is updated;
	The emacs' "Cyrillic-KOI8" language environment setting is removed.

	* userlist_proto.c:
	The `koi8-r' charset specification is removed from the file header;
	The copyright notice is updated;
	The emacs' "Cyrillic-KOI8" language environment setting is removed.

	* userlist_xml.c: "config.h", "settings.h" are included;
	"nls.h" is removed;
	the EJUDGE_CHARSET defined to the EJUDGE_INTERNAL_CHARSET, if the
	  former is not defined in "config.h";
	(userlist_unparse_user) the EJUDGE_CHARSET is used as the XML file
	  encoding instead of "KOI8-R";
	(userlist_unparse_contests) the same as above;
	(userlist_unparse) the same as above;
	(userlist_unparse_short) the same as above;
	(userlist_unparse_for_standings) the same as above.

	* register.c:
	The `koi8-r' charset specification is removed from the file header;
	"settings.h" is included;
	DEFAULT_CHARSET macro is replaced with EJUDGE_CHARSET.
	EJUDGE_CHARSET macro is defined to EJUDGE_INTERNAL_CHARSET, if the
	  former is not defined in config.h;
	(parse_config) the EJUDGE_CHARSET is ised instead of DEFAULT_CHARSET;
	(default_config) explicit charset is removed, since "UTF-8" is ok
	  for this file;
	(client_put_refresh_header) the EJUDGE_CHARSET is used instead of
	  DEFAULT_CHARSET;
	(do_make_user_xml) the EJUDGE_CHARSET is used instead of "KOI8-R".

	* users.c:
	The `koi8-r' charset specification is removed from the file header;
	"settings.h" is included;
	DEFAULT_CHARSET macro is replaced with EJUDGE_CHARSET.
	EJUDGE_CHARSET macro is defined to EJUDGE_INTERNAL_CHARSET, if the
	  former is not defined in config.h;
	(default_config) explicit charset is removed, since "UTF-8" is ok
	  for this file.

	* ejudge-setup.c:
	The `koi8-r' charset specification is removed from the file header.
	(generate_ejudge_xml) code for generation of <charset> element is
	  fixed;
	(generate_install_script) the last "chmod" command is fixed.

	* master_html.c, ncurses_utils.c, protocol.c, runlog_import.c, sformat.c, team.c, tex_dom.c, tex_dom_doc.c, tex_dom_parse.c, tex_dom_render.c, userlist.c, cgi.c, clntutil.c, contests.c, cr_serialize.c, edit-userlist.c, filter_scan.lex, master.c:
	The `koi8-r' charset specification is removed from the file header.

2004-06-17  Alexander Chernov  <cher@ispras.ru>

	* INSTALL.RUS: initial revision

	* Makefile.in: `tags' rule is added;
	removal of `TAGS' file is added to `distclean' rule.

	* ejudge-setup.c: "Installation script" is renamed to "Setup script".

2004-05-27  Alexander Chernov  <cher@ispras.ru>

	* cher-configure:
	the command-line arguments are further passed to configure.

	* Makefile.in: rules for ejudge-config script generation are added.

	* configure.ac: --disable-rpath option is supported;
	ejudge-config.v script is added to the list of substituted scripts.

	* ejudge-config.v.in: initial revision

2004-05-26  Alexander Chernov  <cher@ispras.ru>

	* team.c, register.c, users.c, master.c:
	(initialize) support for cgi program suffix (defined by CGI_PROG_SUFFIX
	  from the config.h) is implemented.

	* userlist_cfg.h: copyright notice is added;
	(struct userlist_cfg) the following new fields are added:
	  serialization_key, charset, config_dir, contests_home_dir,
	  full_cgi_data_dir, compile_home_dir, testing_work_dir,
	  script_dir.

	* userlist_cfg.c:
	support for the following new elements is added: <charset>,
	  <config_dir>, <contests_home_dir>, <full_cgi_data_dir>,
	  <compile_home_dir>, <testing_work_dir>, <script_dir>,
	  <serialization_key>;
	support for the new attribute "ejudge_user" is added.

	* serve.c:
	(create_symlinks) a new function, which creates symlink to the
	  standings html files in the var/status/dir contest directory;
	(do_loop) `create_symlinks' is called.

	* prepare.h:
	(struct section_global_data) new fields added: `htdocs_dir',
	  `stand_symlink_dir', `stand2_symlink_dir', `plog_symlink_dir'.

	* prepare.c: new global configuration variables added: `htdocs_dir',
	  `stand_symlink_dir', `stand2_symlink_dir', `plog_symlink_dir'.

	* ejudge-setup.c: initial revision

	* Makefile.in:
	rules for compilation of `ejudge-setup' utility are added.

	* files.make:
	new files added: ncurses_utils.c, tex_dom.c, tex_dom_parse.c,
	  tex_dom_doc.c, tex_dom_render.c, ejudge-setup.c, ncurses_utils.h,
	  tex_dom.h.

	* configure.ac: many new options added.

	* config.h.in, cher-configure:
	modified for the new configure options.

	* ncurses_utils.c, ncurses_utils.h, tex_dom_parse.c, tex_dom_render.c, tex_dom.c, tex_dom.h, tex_dom_doc.c:
	initial revision

2004-05-10  Alexander Chernov  <cher@ispras.ru>

	* pathutl.c: copyright notice is updated;
	(chop) all trailing spaces from the end of the string are removed.

	* prepare.c: new language configuration variable `compiler_env';
	(set_defaults) `compiler_env' configuration variable is handled.

	* prepare.h:
	(struct section_language_data) `compiler_env' field is added.

	* serve.c:
	(cmd_priv_submit_run) compiler_env parameter is added to call of
	  `queue_compile_request';
	(cmd_team_submit_run) the same as above;
	(queue_compile_request) new parameter `compiler_env' is added;
	  the compile packet format is updated to allow passing environment
	  variables to the compile program;
	(rejudge_run)
	  `compiler_env' is passed to `queue_compile_request'.

	* configure.ac: new option --enable-conf-dir is added.

	* compile.c:
	(do_loop) compile packet format is extended to pass the environment
	  variables for the compiler;
	  these environment variables are extracted and passed to the
	  compiler process.

	* cher-configure: *** empty log message ***

2004-05-07  Alexander Chernov  <cher@ispras.ru>

	* config.h.in: added EJUDGE_CONF_DIR.

2004-05-06  Alexander Chernov  <cher@ispras.ru>

	* Makefile.in: the makefile is renamed to Makefile.in;
	the Makefile.in is integrated in autoconf framework;
	the directory structure is reorganized.

	* prepare.h:
	(struct section_problem_data) new field `checker_env' is added;
	(struct section_tester_data) new field `checker_env' is added.

	* prepare.c: "varsubst.h" is included;
	new problem configuration variable `checker_env' is added;
	new tester configuration variable `checker_env' is added;
	(set_defaults) `checker_env' problem configuration variable is
	  supported. Variable substitution is performed on it;
	  variable substitution is performed on `start_env' tester
	  configuration variable;
	  `checker_env' tester configuration variable is supported,
	  variable substitution is performed on it.
	(prepare_tester_refinement)
	  variable substitution is performed on `start_env';
	  new tester configuration variable `checker_env' is supported;
	  variable substitution is performed on `checker_env'.

	* files.make: varsubst.c is added to COMMON_CFILES;
	varsubst.h is added to HFILES.

	* run.c: 
	(run_tests) the checker is started with some logging;
	  checker_env configuration variable is supported.

	* testinfo.h: copyright notice is updated;
	protection against C++ is added;
	in C++ mode char * is used instead of unsigned char * for strings.

	* varsubst.c, varsubst.h, configure.ac: initial revision

	* prepare.c:
	the `builtin_checker' global configuration variable is renamed to
	  `standard_checker';
	(prepare_tester_refinement) `builtin_checker' field is renamed to
	  `standard_checker';
	  `builtin_checker_used' is renamed to `standard_checker_used'.

	* prepare.h:
	(struct section_problem_data) `builtin_checker' field is renamed to
	  `standard_checker';
	  `builtin_checker_used' is renamed to `standard_checker_used'.

	* run.c:
	(run_tests) builtin_checker_used is renamed to standard_checker_used;
	(process_default_testers) the same as above.

	* master.c:
	DEFAULT_CHARSET is set to EJUDGE_CHARSET from "config.h" if the macro
	  is defined there, or to "iso8859-1" as the fallback value;
	(params) the global section initialization function is added;
	(global_init_func) a new function for initialization of the global
	  section;
	(display_enter_password_2) DEFAULT_CHARSET is used;
	(client_put_refresh_header) DEFAULT_CHARSET is used;
	(set_defaults) EJUDGE_LOCALE_DIR from "config.h" is used as the
	  default value for `l10n_dir' variable if the locallization is
	  enabled;
	(initialize) if no config file exists, `param_make_global_section'
	  is used to create a global configuration variables section with
	  the default values;
	  EJUDGE_SOCKET_PATH from "config.h" is used as the default value
	  for `socket_path' configuration variable;
	  EJUDGE_CONTESTS_DIR from "config.h" is used as the default value
	  for `contests_dir' configuration variable;
	  `allow_deny' is by default set to 1.

	* prepare.c: "config.h" is included;
	unnecessary use of <libintl.h> is removed;
	new global configuration parameter `ejudge_checkers_dir';
	new global configuration parameter `builtin_checker';
	DFLT_G_CHARSET macro is defined to EJUDGE_CHARSET from "config.h",
	  if the macro is defined, or to "iso8859-1" as the fallback value;
	(global_init_func) `enable_l10n' is set to -1;
	(set_defaults) EJUDGE_SOCKET_PATH from "config.h" is used as the
	  default value for `socket_path';
	  EJUDGE_CONTESTS_DIR from "config.h" is used as the default value
	  for `contests_dir';
	  EJUDGE_SCRIPT_DIR from "config.h" is used as the default value for
	  `script_dir';
	  EJUDGE_SCRIPT_DIR from "config.h" is used as the default value for
	  the new variable `ejudge_checkers_dir';
	  EJUDGE_LOCALE_DIR from "config.h" is used as the default value for
	  `l10n_dir', if the localization is enabled;
	(prepare_tester_refinement) the `builtin_checker' variable is used.

	* register.c:
	DEFAULT_CHARSET macro is defined to EJUDGE_CHARSET from "config.h", or
	  to "iso8859-1", if the latter is not defined;
	(parse_config) new parameter `default_config' is added, which is
	  the configuration file embedded in string;
	  the default configuration file is preferred, if the corresponding
	  function parameter != 0;
	  `l10n', <l10n_dir> are supported regardless of localization support;
	  EJUDGE_LOCALE_DIR from "config.h" is used as the default value for
	  <l10n_dir> element, if the localization is enabled;
	  DEFAULT_CHARSET from "config.h" is used as the default value for
	  `charset' attribute;
	  EJUDGE_SOCKET_PATH from "config.h" is used as the default value for
	  <socket_path> element;
	  EJUDGE_CONTESTS_DIR from "config.h" is used as the default value for
	  <contests_dir> element;
	(initialize) the default config string is provided to `parse_config',
	  if no configuration file is found;
	(client_put_refresh_header) DEFAULT_CHARSET is used.

2004-05-05  Alexander Chernov  <cher@ispras.ru>

	* cher-configure, config.h.in: initial revision

	* parsecfg.c:
	(param_make_global_section) a new function, which creates the global
	  section in memory with the default values, as if this global
	  section was read from file.

	* parsecfg.h: copyright notice is updated;
	(param_make_global_section) new function prototype is added.

	* prepare.h:
	(struct section_global_data) new field `ejudge_checkers_dir' is
	  added;
	(struct section_tester_data) new fields `builtin_checker' and
	  `builtin_checker_used' are added.

	* run.c: "config.h" is included;
	(run_tests) `builtin_checker_used' tester variable is honored;
	(process_default_testers) the same as above.

	* serve.c: "config.h" is included;
	(cmd_team_page) "dereferencing type-punned pointer will break
	  strict-aliasing rules" warning is fixed;
	(cmd_master_page) the same as above;
	(cmd_priv_standings) the same as above;
	(cmd_view) the same as above;
	(cmd_import_xml_runs) the same as above;
	(cmd_message) the same as above;
	(cmd_team_show_item) the same as above;
	(read_compile_packet) possible uninitialized variable use of
	  `team_flags' warning is fixed.

	* super-serve.c: copyright notice is updated;
	"config.h" is included;
	(main) if the configuration file name is not provided in the command
	  line arguments, the default path EJUDGE_XML_PATH is used, if the
	  macro is defined in "config.h".

	* team.c:
	DEFAULT_CHARSET is defined to EJUDGE_CHARSET from "config.h", and
	  to "iso8859-1", if the latter macro is not defined;
	(params) global section initialization function `global_init_func'
	  is added;
	(global_init_func) the function sets `enable_l10n' and `allow_deny'
	  configuration variables to "undefined" (-1) value;
	(set_defaults) EJUDGE_LOCALE_DIR from "config.h" is used as the
	  default value for `l10n_dir', if localization is enabled;
	(initialize) a default configuration variables are created, if no
	  configuration file is found;
	  EJUDGE_SOCKET_PATH is used as the default value for `socket_path'
	  configuration variable;
	  EJUDGE_CONTESTS_DIR is used as the default value for `contests_dir'
	  configuration variable;
	  the default value for `allow_deny' is set to 1;
	(client_put_refresh_header) DEFAULT_CHARSET is used as the default
	  charset.

	* userlist-server.c: "config.h" is included;
	gettext() macro is defined, if localization is disabled;
	(cmd_register_new) possible uninitialized variable read for
	  `login_hash' variable warning is fixed;
	(cmd_do_login) possible uninitialized variable read for `user'
	  variable warning is fixed;
	(cmd_check_cookie) possible uninitialized variable read for `cookie'
	  variable warning is fixed;
	(cmd_get_user_info) "dereferencing type-punned pointer will break
	  strict-aliasing rules" warning is fixed;
	(cmd_priv_get_user_info) the same as above;
	(cmd_list_standings_users) the same as above;
	(cmd_get_user_contests) the same as above;
	(cmd_list_users) the same as above;
	(cmd_dump_database) the same as above;
	(cmd_generate_register_passwords) the same as above;
	(cmd_generate_team_passwords) the same as above;
	(cmd_add_field) possible uninitialized variable read for
	  `login_hash' variable warning is fixed;
	(do_backup)  "dereferencing type-punned pointer..." warning is fixed;
	(main) if no command-line arguments is given, and the macro
	  `EJUDGE_XML_PATH' is defined in "config.h", value of this
	  macro is used as the default path to the configuration file.

	* userlist_cfg.c: "config.h" is included;
	(userlist_cfg_parse) `EJUDGE_LOCALE_DIR' from "config.h" is used as
	  the default value for <l10n_dir> element;
	  `EJUDGE_SOCKET_PATH' from "config.h" is used as the default value
	  for <socket_path> element;
	  `EJUDGE_CONTESTS_DIR' from "config.h" is used as the default value
	  for <contests_dir> element;
	  `EJUDGE_SERVE_PATH' from "config.h" is used as the default value
	  for <serve_path> element;
	  `EJUDGE_RUN_PATH' from "config.h" is used as the default value
	  for <run_path> element.

	* users.c:
	EJUDGE_CHARSET macro is set to EJUDGE_CHARSET from "config.h", or
	  to "iso8859-1", if the EJUDGE_CHARSET macro is not defined;
	(parse_config) new parameter `default_config' is added, which is
	  a configuration string, if the parameter has non-null value,
	  it is preferred over the first parameter - path to the configuration
	  file;
	  `l10n', `l10n_dir' are parsed regardless of internalization support;
	  EJUDGE_LOCALE_DIR from "config.h" is used as the default value
	  for `l10n_dir' element;
	  EJUDGE_SOCKET_PATH from "config.h" is used as the default value
	  for `socket_path' element;
	  EJUDGE_CONTESTS_DIR from "config.h" is used as the default value
	  for `contests_dir' element;
	(initialize) the default configuration string is provided to
	  `parse_config', if no configuration file is found.

	* edit-userlist.c: "config.h" is included;
	(main) if no command-line arguments are given, the default path
	  to the configuration file EJUDGE_XML_PATH is used.

	* clntutil.c:
	DEFAULT_CHARSET macro is set either to EJUDGE_CHARSET from config.h,
	  if it is defined, or to iso8859-1;
	(client_put_header) DEFAULT_CHARSET macro is used.

	* clean-users.c: "config.h" is included;
	(main) if no command line parameters are given, the default path to
	  the configuration file EJUDGE_XML_PATH is used.

	* cgi.c: "config.h" is included;
	DEFAULT_CHARSET macro is defined to EJUDGE_CHARSET if this is set,
	  iso8859-1 else;
	(bad_request) DEFAULT_CHARSET is used;
	(request_too_large) the same as above.

2004-05-04  Alexander Chernov  <cher@ispras.ru>

	* runlog_import.c:
	(runlog_import_xml) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed.

	* runlog.c: "config.h" is included;
	(run_set_entry) possible unitialized use of variable `ue' warning
	  is fixed.

	* master_html.c: "config.h" is included;
	(write_all_runs) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed;
	  possible uninitialized varible `match_idx' usage warning is fixed;
	(write_priv_clar) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed;
	(write_priv_users) the same as above.

	* html.c: "config.h" is included;
	(new_write_user_clars) a GNU C 3.3 warning about breaking strict
	  aliasing rules in -Wall -O2 mode is fixed;
	(do_write_standings) the same as above.

	* opcaps.c:
	(opcaps_parse) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed.

	* runlog_xml.c:
	(parse_sha1) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed.

	* l10n.c: copyright notice is updated;
	"config.h" is included;
	`l10n_flag' compiled out, if CONF_HAS_LIBINTL is not set.

	* filter_scan.lex:
	(handle_int) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed.

	* master.c: "config.h" is included.

	* misctext.c: copyright notice is updated;
	"config.h" is included.

	* register.c: "config.h" is included;
	`gettext' is defined to empty macro if CONF_HAS_LIBINTL is not defined.
	(make_user_xml) a GNU C 3.3 warning about breaking strict aliasing
	  rules in -Wall -O2 mode is fixed.

	* team.c, users.c: copyright notice is updated;
	"config.h" is included;
	`gettext' is defined to empty macro if CONF_HAS_LIBINTL is not defined.

	* edit-userlist.c:
	(display_registered_users) a GNU C 3.3 warning about breaking strict
	  aliasing rules in -Wall -O2 mode is fixed;
	(do_display_user_menu) the same as above.

	* copyright.c, clntutil.c: "config.h" is included.

	* clean-users.c:
	(main) possible using of uninitialized variable `j' warning is fixed.

	* userlist_cfg.c, teamdb.c: copyright notice is updated;
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* revinfo.c:
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* parsecfg.c: copyright notice is updated;
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* compile.c:
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* clarlog.c: copyright notice is updated;
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* cgi.c:
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

	* base64.c: copyright notice is updated;
	unnecessary include of <libintl.h> and check for CONF_HAS_LIBINTL is
	  removed.

2004-05-03  Alexander Chernov  <cher@ispras.ru>

	* TODO: *** empty log message ***

	* install-sh: initial revision

	* makefile: Converted to Makefile.in.

2004-04-20  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2004-04-19  Alexander Chernov  <cher@ispras.ru>

	* files.make: serve_clnt/rejudge_by_mask.c is added.

	* master.c:
	`force_recheck_status' variable is removed, since in the current mode
	  of operation this variable and the associated action in `main' are
	  redundant;
	(confirm_rejudge_displayed) a new function, which generates the
	  confirmation dialog for the "Rejudge displayed runs" button;
	(action_rejudge_displayed) a new function to perform the abovementioned
	  operation;
	(main) new actions `REJUDGE_DISPLAYED_1', `REJUDGE_DISPLAYED_2' are
	  supported.

	* master_html.c:
	(write_all_runs) the run bitmask of all the displayed runs is
	  collected;
	  a new button "Rejudge displayed runs" is generated, and the
	  calculated bitmask is used.

	* prepare.c:
	new problem configuration variable `disable_language' is added;
	(set_defaults) the new configuration variable is handled.

	* prepare.h:
	(struct section_problem_data) a new field `disable_language' is
	  added.

	* protocol.c: (error_map) a new error is added.

	* protocol.h: new command SRV_CMD_REJUDGE_BY_MASK is added;
	new error code SRV_ERR_LANGUAGE_DISABLED is added;
	(struct prot_serve_pkt_rejudge_by_mask) a new structure is added.

	* serve.c:
	(cmd_team_submit_run) the `disable_language' problem configuration
	  variable is honored;
	(cmd_rejudge_by_mask) a new function to handle the corresponding
	  command;
	(do_rejudge_by_mask) a new function to rejudge the runs according
	  to the passed bitmask;
	(packet_handlers) the handler `cmd_rejudge_by_mask' for
	  `REJUDGE_BY_MASK' command is added.

	* serve_clnt.h:
	(serve_clnt_rejudge_by_mask) new function prototype is added.

	* userlist-server.c:
	(cmd_register_contest) the `closed' flag of the contest description
	  is honored.

	* client_actions.h:
	new actions REJUDGE_DISPLAYED_1 and REJUDGE_DISPLAYED_2 are added.

2004-04-18  Alexander Chernov  <cher@ispras.ru>

	* master_html.c:
	(struct user_state_info) the user specific filter information is
	  handled differently: for each (privileged) user a linked list
	  of `struct user_filter_info' is kept. The items of the list contain
	  the session_id (cookie) as the key and all the information
	  prevouosly stored in `struct user_state_info'. This allows having
	  several browsers with different filter settings for the same
	  user;
	(write_all_runs) the type of the second parameter is changed:
	  `struct user_filter_info' instead of `struct user_state_info';
	(write_all_clars) the same as above;
	(allocate_user_info) now accept two parameters: the second parameter
	  is the session identifier; also the return type is changed from
	  `struct user_state_info' to `struct user_filter_info';
	(write_master_page) call of `allocate_user_info' is updated;
	(html_reset_filter) the second parameter `session_id' is added;
	  call of `allocate_user_info' is updated.

	* prepare.h: (struct user_adjustment_info) a new structure;
	(struct section_global_data) new fields: `priority_adjustment',
	  `user_priority_adjustments', `user_adjustment_info',
	  `user_adjustment_map';
	(struct section_problem_data) new field `priority_adjustment';
	(struct section_language_data) new field `priority_adjustment';
	(struct section_tester_data) new field `priority_adjustment';
	(find_user_priority_adjustment) new function prototype.

	* prepare.c: "settings.h" is included;
	MAX_LANGUAGE, MAX_PROBLEM, MAX_TESTER are moved to "settings.h";
	new global parameters: priority_adjustment, user_priority_adjustments;
	new problem parameter: priority_adjustment;
	new language parameter: priority_adjustment;
	new tester parameter: priority_adjustment;
	(problem_init_func) `priority_adjustment' is handled;
	(tester_init_func) `priority_adjustment' is handled;
	(inh_isdef_int3) a new function to check, whether the
	  `priority_adjustment' variable is undefined (equals to -1000);
	(tester_inheritance_info) `priority_adjustment' info is added;
	(parse_user_adjustment) a new function to parse the
	  `user_priority_adjustments' variable;
	(find_user_priority_adjustment) a new function to find priority
	  adjustment corresponding to the given user_id;
	(set_defaults) all the new fields are handled;
	(prepare_tester_refinement) `priority_adjustment' field is handled.

	* master.c:
	(action_reset_filter) `serve_clnt_reset_filter' is called instead of
	  `serve_clnt_simple_cmd';
	(display_master_page) `client_sid' is passed to the
	  `serve_clnt_master_page'.

	* contests.h: copyright notice is updated;
	`CLOSED' attribute is added;
	(struct contest_desc) `closed' field is added.

2004-04-17  Alexander Chernov  <cher@ispras.ru>

	* contests.c: copyright notice is updated;
	attribute `closed' is supported;
	(parse_contest) the `closed' attribute has not gave the proper result.

	* html.h:
	(html_reset_filter) new parameter `session_id' is added to pass
	  the session identifier.

	* files.make: `reset_filter.c' is added to the SERVE_CLNT_CFILES.

	* protocol.c:
	(error_map) BAD_SESSION_ID error text is translated to Russian.

	* protocol.h: new error code SRV_ERR_BAD_SESSION_ID is added;
	(struct prot_serve_pkt_master_page) `session_id' field is added;
	(struct prot_serve_pkt_reset_filter) new packet.

	* register.c: copyright notice is updated;
	(check_contest_eligibility) the contest is not eligible, if the
	  `closed' flag is set to true;
	(display_main_page) the contest is not diplayed, if its closed
	  flag is set to `true'.

	* serve.c:
	(cmd_reset_filter) a new function to execute RESET_FILTER command,
	  previously this command was handled in `cmd_judge_command_0';
	  `cmd_judge_command_0' is commented out;
	(generate_packet_name) now accepts `prio' parameter for the priority
	  value in range [-32;31);
	  priority is the first character of the generated packet file name;
	(read_compile_packet) the run packet priority is calculated using
	  the new configuration variable;
	  the calculated priority is passed to `generate_packet_name';
	(queue_compile_request) `generate_packet_name' is always called
	  with 0 as the priority value;
	(packet_handler) `cmd_reset_filter' replaced `cmd_judge_command_0'
	  in the handler for the RESET_FILTER command.

	* serve_clnt.h:
	(serve_clnt_master_page) a new parameter `session_id' to pass the
	  session identifier (cookie) is added;
	(serve_clnt_reset_filter) a new function prototype.

	* settings.h:
	SERVE_PACKET_NAME_SIZE constant is added to hold the size of
	  serve->run and serve->compile packet name;
	MAX_LANGUAGE is moved here;
	MAX_PROBLEM is moved here;
	MAX_TESTER is moved here.

	* team.c: (client_contest_closed) a new function, which generates the
	  "Contest is closed" html page, if the `closed' flag of the given
	  contest is set to `true';
	(main) `client_contest_closed' is called when necessary.

2004-04-16  Alexander Chernov  <cher@ispras.ru>

	* team.c:
	`max_clar_size', `max_run_size' configuration parameters are removed,
	  since the size checks are also performed at the server's side.

	* userlist-server.c: "settings.h" is included;
	MAX_EXPECTED_LEN constant is defined for the maximal packet length,
	  this constant's value is set to MAX_USERLIST_PACKET_LEN from
	  "settings.h".

	* serve.c: "settings.h" is included;
	MAX_EXPECTED_LEN constant is defined for the maximal packet length,
	  this constant's value is set to MAX_SERVE_PACKET_LEN from settings.h.

	* files.make: settings.h is added.

	* cgi.c: "settings.h" is included;
	MAX_CGI_VALUE_LEN from settings.h is used as maximal content-length.

	* settings.h: initial revision

2004-04-01  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* clean-users.c:
	"userlist_clnt.h", "userlist_proto.h", <reuse/osdeps.h>, <ctype.h>
	  are included;
	(print_info) usage message is updated;
	(main) -r and -f options are supported;
	  user removal is supported.

2004-03-31  Alexander Chernov  <cher@ispras.ru>

	* master.c:
	(view_source_if_asked) call of `serve_clnt_view' is updated, as the
	  function now accept one more parameter;
	(view_report_if_asked) if the `t' CGI variable is set, the flags
	  parameter, which is passed to `serve_clnt_view' is also set to 1,
	  thus the participant's version of the judging report is requested;
	(view_teams_if_asked) call of `serve_clnt_view' is updated, as the
	  function now accept one more parameter;
	(action_dump_runs) the same as above;
	(action_write_xml_runs) the same as above;
	(action_export_xml_runs) the same as above;
	(action_dump_standings) the same as above;
	(action_upload_report) a new function to perform the judging report
	  upload to the server;
	(action_priv_download_run) call of `serve_clnt_view' is updated, as the
	  function now accept one more parameter;
	(action_compare_runs) the same as above;
	(view_clar_if_asked) the same as above;
	(main) UPLOAD_REPORT action is handled and `action_upload_report'
	  function is called.

	* master_html.c:
	(print_nav_buttons) new parameter `t7' is added to pass the
	  string for "View team report" button;
	  the reference for t7 is generated, if global configuration
	  variable `team_enable_rep_view' is set to TRUE;
	(write_all_runs) call of `print_nav_buttons' is updated;
	(write_all_clars) the same as above;
	(write_master_page) the same as above;
	(write_priv_standings) the same as above;
	(write_priv_source) call of `print_nav_buttons' is updated;
	  report upload form is generated, if `enable_report_upload'
	  global configuration variable is set to TRUE;
	  "View team report" link is generated in updated call to
	  `print_nav_buttons';
	(write_priv_report) new parameter `team_report_flag' is added;
	  if `team_report_flag' is TRUE, the participant's report is
	  displayed instead of the judge's report;
	  "View team report" link is generated in updated call to
	  `print_nav_buttons';
	(write_priv_clar) call of `print_nav_buttons' is updated;
	(write_priv_users) the same as above.

	* prepare.c:
	new global configuration variable `enable_report_upload' is added;
	new problem configuration variable `date_penalty' is added;
	(parse_deadline_penalties) a new function to parse the values in
	  the `date_penalty' variable;
	(set_defaults) `parse_deadline_penalties' is called.

	* prepare.h:
	(struct penalty_info) a new structure to store the parsed values
	  for `date_penalty' problem configuration variable;
	(struct section_global_data) field `enable_report_upload' is added;
	(struct section_problem_data) fields `date_penalty', `dp_total',
	  `dp_infos' are added.

	* protocol.h: new command SRV_CMD_UPLOAD_REPORT is added;
	(struct prot_serve_pkt_view) field `flags' is added;
	(struct prot_serve_pkt_upload_report) a new structure to pass
	  the data for UPLOAD_REPORT request.

	* serve.c:
	(cmd_view) the value of `flags' field of the incoming packet is
	  passed to `write_priv_report' function in the VIEW_REPORT
	  handling code;
	(cmd_upload_report) a new function to handle UPLOAD_REPORT request;
	(read_run_packet) the data-dependent penalties (see `data_penalty'
	  global configuration variable) are applied;
	(packet_handlers) handler for UPLOAD_REPORT command is added.

	* client_actions.h: added new action UPLOAD_REPORT.

	* html.h:
	(write_priv_report) a new parameter `team_report_flag' is added.
	  If this parameter is set to 1, the participant's report is
	  displayed instead of the judge's report.

	* files.make: serve_clnt/upload_report.c is added.

	* serve_clnt.h: 
	(serve_clnt_view) a new parameter `flags' is added;
	(serve_clnt_upload_report) a new function prototype.

	* userlist-server.c:
	(cmd_get_uid_by_pid) arbitrary system user id and group id are
	  allowed. This fixes a bug, that in certain setups the web
	  server operates with gid == -1.

2004-03-27  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* serve.c: "diff.h" is included;
	new global status variable `printing_suspended';
	(update_status_file) the current status is written as status
	  version 2 structure, including new fields enable_printing,
	  `printing_suspended';
	(load_status_file) a new function, which attempts to load the
	  server status structure and sets `clients_suspended',
	  `testing_suspended', `olympiad_judging_mode', `printing_suspended'
	  global status variables with values from the status file;
	(cmd_team_page) the `printing_suspended' variable is passed to
	  `write_team_page';
	(cmd_view) `PRIV_DOWNLOAD_RUNS', `COMPARE_RUNS' are supported;
	(cmd_priv_submit_run) arbitrary binary data is handled properly,
	  if the language has the `binary' configuration variable set to
	  TRUE;
	  precise time is obtained with `gettimeofday' and then passed to
	  `run_add_record';
	(cmd_team_print) printing request is rejected, if printing disabled;
	(cmd_team_submit_run) arbitrary binary data is handled properly,
	  if the language has the `binary' configuration variable set to
	  TRUE;
	  precise time is obtained with `gettimeofday' and then passed to
	  `run_add_record';
	(cmd_command_0) precise time is obtained with `gettimeofday' and
	  then passed to `run_virtual_start' or `run_virtual_stop';
	(cmd_priv_command_0) PRINT_SUSPEND, PRINT_RESUME commands are
	  handled;
	(packet_handlers) new commands: PRIV_DOWNLOAD_RUN, PRINT_SUSPEND,
	  PRINT_RESUME, COMPARE_RUNS are handled;
	(main) `load_status_file' is called to load the server status.

	* runlog_xml.c: copyright notice is updated;
	`nsec' attribute of the `run' element is handled;
	(process_run_elements) `time' attribute now contains the time in
	  seconds instead the time in milliseconds;
	  `nsec' attribute is handled;
	(process_runlog_element) element nesting <runlog> -> <runs> -> <run>
	  is properly handled;
	(collect_runlog) the `xt' parameter now points to the first <run>
	  element in the list;
	  submission field of the collected runlog is initialized;
	(unparse_runlog_xml) the `time' attribute of the <run> element now
	  contain the time in seconds instead of the time in milliseconds;
	  the `nsec' attribute is generated.

	* runlog_import.c: copyright notice is updated;
	(runlog_import_xml) `nsec' field is handled.

	* runlog.h: 
	(run_add_record) parameter `nsec' is added;
	RUN_ENTRY_NSEC constant is added for `run_set_entry';
	(struct run_entry) `nsec' field is added. The padding is reduced to
	  3 bytes;
	(run_virtual_start) the `nsec' parameter is added;
	(run_virtual_stop) the same as above;
	(run_find) new function prototype is added.

	* runlog.c:
	(append_record) `nsec' parameter is added to pass the nanosecond
	  component of the timestamp;
	  nanosecond component is considered when inserting a new run;
	  attempt to insert a run in the middle of the runlog is failed,
	  if there are transient runs following the insertion point;
	(run_add_record) `nsec' parameter is added to pass the nanosecond
	  component of the timestamp;
	  use of `append_record' is updated;
	  possible failure of `append_record' is handled;
	(run_set_entry) `nsec' field is handled;
	(run_virtual_start) parameter `nsec' is added to pass the nanosecond
	  component of the timestamp;
	  use of `append_record' is updated;
	  possible failure of `append_record' is handled;
	(run_virtual_stop) the same as above;
	(runlog_check) the `nsec' field is handled;
	(build_indices) check, that `ut_table' is not NULL is added
	  before freeing its elements;
	(run_find) a new function to find a run in the given range of runs
	  by matching user_id, language_id or problem_id.

	* protocol.h:
	PROT_SERVE_STATUS_MAGIC is renamed to PROT_SERVE_STATUS_MAGIC_V1;
	struct prot_serve_status is renamed to struct prot_serve_status_v1;
	PROT_SERVE_STATUS_MAGIC_V2 is added;
	(struct prot_serve_status_v2) is added. The size of structure is
	  128 bytes;
	new commands: PRIV_DOWNLOAD_RUN, PRINT_SUSPEND, PRINT_RESUME,
	  COMPARE_RUNS;
	(struct prot_serve_pkt_view) field `item2' is added - used by
	  COMPARE_RUNS command.

	* printing.c: "userlist.h" is included;
	(print_banner_page) `location' field of the participant data is
	  printed to the banner page.

	* prepare.h:
	(struct section_global_data) fields `diff_work_dir', `diff_path',
	  `stand_success_attr' are added;
	(struct section_language_data) field `binary' is added.

	* prepare.c:
	new global configuration variables `diff_work_dir', `diff_path',
	  `stand_success_attr' are added;
	new language configuration variable `binary' is added;
	(set_defaults) `diff_work_dir', `diff_path' are handled;
	(create_dirs) `diff_work_dir' is created.

	* master_html.c:
	(write_priv_source) the nanosecond component of the submission time
	  is printed;
	  "Download run" reference is printed;
	  "Compare runs" button is printed;
	  if the language is marked as binary, the source code is not printed;
	(write_raw_source) new function to print the source of the run in the
	  raw form (without any control elements with content type
	  text/plain or application/octet-stream).

	* master.c:
	(print_printing_suspend_button) a new function to print printing
	  suspend/printing resume button;
	(view_source_if_asked) use of `serve_clnt_view' is updated as this
	  function now accepts one more parameter;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(action_dump_runs) the same as above;
	(action_write_xml_runs) the same as above;
	(action_export_xml_runs) the same as above;
	(action_dump_standings) the same as above;
	(action_submit_run) `cgi_param_bin' is used instead of `cgi_param',
	  so arbitrary (may be binary) data may be passed to the server;
	  use of `serve_clnt_submit_run' is updated;
	(action_print_suspend) new function to handle the corresponding
	  action;
	(action_print_resume) new function;
	(action_priv_download_run) new function;
	(action_compare_runs) new function;
	(view_clar_if_asked) use of `serve_clnt_view' is updated as this
	  function now accepts one more parameter;
	(main) new actions PRINT_SUSPEND, PRINT_RESUME, PRIV_DOWNLOAD_RUN,
	  COMPARE_RUNS are supported;
	  the printing suspend/resume button is generated.

	* makefile:
	INST_PATH variable is added to designate the installation path.

	* html.h: copyright notice is updated;
	(new_write_user_runs) parameter `printing_suspended' is added;
	(write_team_page) parameter `printing_suspended' is added;
	(write_raw_source) new function prototype added.

	* html.c:
	(new_write_user_runs) `printing_suspended' parameter is added;
	  if `printing_suspended' parameter is TRUE, the "Print sources"
	  option is disabled;
	(do_write_standings) the "Last success" information is generated;
	(write_team_page) `printing_suspended' parameter is added;
	  the value of the parameter is then passed to `new_write_user_runs'.

	* files.make: diff.[ch] are added.

	* clntutil.c: copyright notice is updated;
	server status variables `server_printing_enabled',
	  `server_printing_suspended' are added;
	(client_check_server_status) server status file of both versions
	  (v1 and v2) is supported.
	(client_print_server_status) "Print requests are suspended" message
	  is printed.

	* clean-users.c: copyright notice is updated;
	(struct user_stat) fields `never_clean' and `virt_contests' are added;
	(main) `never_clean' field is copied from the userlist information;
	  empty runlogs are properly supported;
	  for each VIRTUAL_START/VIRTUAL_STOP event the number of virtual
	  contest is stored in the `virt_contests' list of the `user_stat';
	  `never_clean' flag is honored in the final statistics table;
	  list of all the virtual contests for all users, which have only
	  VIRTUAL_START/VIRTUAL_STOP events is printed.

2004-03-26  Alexander Chernov  <cher@ispras.ru>

	* edit-userlist.c: copyright notice is updated;
	ncurses header files are included without directory ncurses, for
	  example <ncurses.h> is included instead of <ncurses/ncurses.h>;
	editing of `never_clean' and `location' fields is supported;
	(display_user) editing of `never_clean' and `location' fields is
	  supported;
	(user_match) `location' field is checked.

	* clntutil.h: copyright notice is updated;
	new status variables added: `server_printing_enabled' and
	  `server_printing_suspended'.

	* client_actions.h:
	new actions added: PRIV_DOWNLOAD_RUN, PRINT_SUSPEND, PRINT_RESUME,
	  COMPARE_RUNS.

	* cgi.h: copyright notice is updated;
	<stdlib.h> is included for `size_t' type;
	(cgi_param_bin) new function prototype added;
	(cgi_nparam_bin) new function prototype added.

	* cgi.c: copyright notice is updated;
	maximal size of data read from the client is increased to 1MB;
	(cgi_param_bin) a new function to return the value of the given
	  CGI data variable. The data size is returned separately from
	  the data pointer itself. This function may be used to read
	  binary data from the client;
	(cgi_nparam_bin) a new function to return the value of the given
	  CGI data variable by the variable name prefix.

	* serve_clnt.h:
	(serve_clnt_submit_run) new parameter `run_size' is added to
	  allow passing arbitrary binary data to the server;
	(serve_clnt_view) added parameter `item2', which is used
	  currently for the run comparison.

	* sformat.c: copyright notice is updated;
	(sformat_message) new format specifier `%ML' is supported to
	  print the value of the `location' field of the team
	  description.

	* team.c:
	(submit_if_asked) explicit `prog_size' parameter is calculated
	  and passed to `serve_clnt_submit_clar'. strlen() is no longer
	  used, thus arbitrary binary data may be passed to the server.

	* userlist-server.c: 
	(do_set_user_info) `location' field is supported;
	(do_list_users) `location' field is supported;
	(cmd_add_field) invalid use of `opcap_check' is fixed.

	* userlist.c: copyright notice is updated;
	(userlist_get_user_field_str) `never_clean' and `location' fields
	  are supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* userlist.h: copyright notice is updated;
	new constants for tag `location' and attribute `never_clean' are
	  added;
	constants USERLIST_NN_NEVER_CLEAN and USERLIST_NN_LOCATION are added;
	(struct userlist_user) field `never_clean' is added;
	  field `location' is added.

	* userlist_xml.c: copyright notice is updated;
	(node_free) the new `location' field is properly freed;
	(do_parse_user) `never_clean' attribute is supported;
	  `location' element is supported;
	(unparse_user) `never_clean' attribute is supported;
	  `location' element is also supported.

	* diff.c, diff.h: initial revision

2004-02-29  Alexander Chernov  <cher@ispras.ru>

	* revinfo.c: copyright notice is updated;
	new global variable `variable_prefix' is added;
	(write_output) the global variable `variable_prefix' is used to
	  generate the names of the variables in the generated code.
	  The default value is "compile";
	(main) new option "-P" is supported to define the `variable_prefix'
	  variable (see above).

	* mkChangeLog.c: copyright notice is updated;
	(main) `.cvsignore', `NEWS', `NEWS.RUS' are also ignored.

2004-02-18  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po, NEWS, NEWS.RUS: *** empty log message ***

	* prepare.c:
	new global configuration variables `a2ps_args' and `lpr_args' are
	  added.

	* prepare.h:
	(struct section_global_data) new fields `a2ps_args' and `lpr_args'
	  are added.

	* printing.c:
	(do_print_run) the global configuration variables `a2ps_args' and
	  `lpr_args' are supported.

	* team.c: (request_printing_if_asked) unused variable `r' is removed.

	* html.c:
	(new_write_user_runs) "Print" column is generated, if the global
	  configuration variable `enable_printing' is set to true;
	(new_write_user_source_view) the compressed archive entry is
	  preferred;
	(new_write_user_report_view) the compressed archive entry is
	  preferred.

	* master.c:
	(print_judging_mode_button) now accepts a flag, whether "Set judging
	  mode" or "Set accepting mode" button should be displayed;
	(change_status_if_asked) parameters to `serve_clnt_edit_run' are
	  updated;
	(change_status) the same as above;
	(change_problem) the same as above;
	(change_language) the same as above;
	(change_variant) the same as above;
	(action_run_change_pages) a new functon to edit the `pages' field
	  value;
	(change_user_id) parameters to `serve_clnt_edit_run' are updated;
	(change_user_login) the same as above;
	(change_imported) the same as above;
	(change_hidden) the same as above;
	(change_tests) the same as above;
	(change_score) the same as above;
	(action_set_accepting_mode) a new function to set "Accepting mode"
	  for the OLYMPIAD contests;
	(action_priv_print_run) a new function to print a source for a run;
	(main) new actions `SET_ACCEPTING_MODE' and `RUN_CHANGE_PAGES'
	  are handled.

	* master_html.c: copyright notice is updated;
	(write_priv_source) compressed archive entry is preferred;
	  `pages' field and change control is generated;
	  `Print' button is generated to print the run.

	* prepare.c:
	global configuration variables `print_work_dir', `a2ps_path',
	  `lpr_path', `enable_printing', `team_page_quota' are added;
	problem configuration variable `accept_partial' is added;
	(global_init_func) `team_page_quota' is initialized to -1 (undefined);
	(problem_init_func) `accept_partial' is initialized to -1 (undefined);
	(set_defaults) new configuration variables are initialized;
	(create_dirs) `print_work_dir' is created.

	* prepare.h:
	(struct section_global_data) new fields `print_work_dir', `a2ps_path',
	  `lpr_path', `enable_printing', `team_page_quota';
	(struct section_problem_data) new field `accept_partial'.

	* run.c: copyright notice is updated;
	(generate_report) the `OLYMPIAD' score system is handled in the same
	  way, as the `KIROV' score system;
	(generate_team_report) the same as above;
	(run_tests) `accept_partial' parameter is added;
	  if `accept_partial' is set to TRUE, in the accepting mode of the
	  `OLYMPIAD' contest the submit is marked as accepted, if the submit
	  is not even passed all acceptance tests;
	(do_loop) added signal mask manipulation to allow terminating of the
	  program between testing of solutions;
	  `accept_partial' parameter is read from the compile packet and
	  passed to `do_loop';
	(check_config) the summ of all the test scores is allowed to be 0.

	* serve.c:
	(priv_submit_run) the capability name is now `SUBMIT_RUN' instead of
	  `SUBMIT_RUNS';
	(priv_command_0) the capability `PRINT_RUN' is checked for printing.

	* userlist-server.c:
	(flush_database) the stream descriptor `f' is closed, if the XML
	  unparsing failed. Previously there was a resource leak.

2004-02-17  Alexander Chernov  <cher@ispras.ru>

	* filter_tree.c: copyright notice is updated;
	(filter_tree_result_str) VIRTUAL_START, VIRTUAL_STOP, and EMPTY
	  run statuses are supported;
	(filter_tree_eval_node) conversion from string to status_t for
	  `VS' (virtual start), `VT' (virtual stop), and `EM' (empty)
	  run statuses is supported.

	* filter_scan.lex: copyright notice is updated;
	new run status constants `VS' (virtual stop) and `VT' (virtual start)
	  are scanned.

	* opcaps.h: copyright notice is updated;
	SUBMIT_RUNS capability renamed to SUBMIT_RUN;
	PRINT_RUN capability added.

	* opcaps.c: copyright notice is updated;
	SUBMIT_RUNS renamed to SUBMIT_RUN;
	PRINT_RUN capability is added.

2004-02-16  Alexander Chernov  <cher@ispras.ru>

	* files.make: printing.[ch] files are added.

	* makefile: copyright notice is updated.

	* protocol.c: copyright notice is added;
	(error_map) texts for `PAGES_QUOTA' and `ALREADY_PRINTED' errors added.

	* protocol.h: copyright notice is updated;
	new commands added: `SET_ACCEPTING_MODE', `PRIV_PRINT_RUN',
	  `PRINT_RUN';
	new error codes added: `PAGES_QUOTA', `ALREADY_PRINTED';
	new runlog editing flag: `RUN_PAGES_SET';
	(struct prot_serve_pkt_run_info) new field `pages' added.

	* runlog.c: 
	(do_write) EINTR error is ignored (operation restarted);
	  the error code is returned in case of error;
	(do_read) EINTR error is ignored;
	  the error code (negated) is returned in case of error;
	  EPIPE is returned in case of unexpected EOF;
	(run_set_entry) `pages' field editing is supported;
	(run_virtual_start) the runlog entry number is returned (instead of -1)
	  in case of successful completion;
	(run_virtual_stop) the same as above;
	(run_get_pages) a new function to return the value of the `pages'
	  field for the given run;
	(run_set_pages) a new function to set the value of the `pages' field
	  for the given run;
	(run_get_total_pages) a new function to return the total amount of
	  pages printed for the given user.

	* client_actions.h: copyright notice is updated;
	new client actions added: `SET_ACCEPTING_MODE', `PRINT_RUN',
	  `PRINT_PRIV_RUN', `RUN_CHANGE_PAGES'.

	* archive_paths.h: copyright notice is updated;
	(archive_remove) the third parameter (gzip_preferred) is removed.

	* archive_paths.c: copyright notice is updated;
	(archive_dir_prepare) added removal of all the possible files for the
	  given archive entry;
	(archive_remove) completely rewritten to remove all possible files
	  corresponding for the given archive entry.

	* runlog.h: copyright notice is updated;
	new flag `RUN_ENTRY_PAGES' added;
	(struct run_entry) new field `pages' is added;
	(run_get_pages) new function - returns the number of pages printed
	  for the given run;
	(run_set_pages) new function - sets the number of pages printed for
	  the given run;
	(run_get_total_pages) returns the total amount of pages printed for
	  the given user.

	* serve.c: "printing.h" is included;
	(move_files_to_insert_run) a new function to rename archive entries in
	  case, when a new submit is inserted into the middle of the runlog
	  database;
	(cmd_priv_submit_run) submits are actually allowed before the start
	  of the contest and after the end of the contest;
	  `move_files_to_insert_run' is called;
	(cmd_team_print) new function to support participant's run printing;
	(cmd_team_submit_run) `move_files_to_insert_run' is called;
	(cmd_command_0) `move_files_to_insert_run' is called after virtual
	  start and virtual stop events;
	(do_squeeze_runs) use of `archive_remove' is changed;
	(cmd_priv_command_0) switching to judging mode is enabled before the
	  end of the contest;
	  `SET_ACCEPTING_MODE' command is supported;
	  `PRIV_PRINT_RUN' command is supported;
	(cmd_edit_run) editing of `pages' field is supported;
	(read_compile_packet) the value of `accept_partial' global
	  configuration variable is passed to the `run' program;
	(packet_handlers) handlers for the new commands are added.

	* printing.c: 
	(do_print_run) a debugging print is commented out.

	* team.c: copyright notice is updated;
	(request_printing_if_asked) a new function to display a confirmation
	  dialog to print a run;
	(action_print_run) new function to issue a print request;
	(main) `request_printing_if_asked' and `action_print_run' functions
	  are used to support printing.

	* serve_clnt.h: copyright notice is updated;
	(serve_clnt_edit_run) the `pages' parameter is added.

	* userlist-server.c:
	(generate_random_password) easily misunderstood characters are never
	  generated. Such characters are `l', `I', '1', '0', 'O'.

2004-02-15  Alexander Chernov  <cher@ispras.ru>

	* printing.c, printing.h: initial revision

2004-01-09  Alexander Chernov  <cher@ispras.ru>

	* compile.c: copyright notice is updated;
	removed obsoleted descriptive comment;
	<errno.h>, <unistd.h> are included;
	(do_loop) error handling and recovery is improved. Instead of immediate
	  termination, the program sleeps for 5 seconds, and then tries to
	  repeat failed operation. In some cases the "Internal error"
	  is reported back to the contest server.

	* runlog.c: copyright notice is updated;
	(run_get_fog_period) a problematic assertion is commented out.

	* userlist-server.c:
	(cmd_priv_register_contest) some unreachable code is removed;
	(flush_database) the temporary file is removed, if the write
	  failed.

	* cr_serialize.c: copyright notice is updated;
	(cr_serialize_init) the negated error code (taken from errno) is
	  reported in case of error;
	(cr_serialize_lock) the negated error code (taken from errno) is
	  reported in case of error;
	  a non blocking lock attempt is performed, if the attempt fails,
	  a regular blocking locking is requested, and a corresponding
	  message is written to the log;
	(cr_serialize_unlock) the negated error code (taken from errno) is
	  reported in case of error.

2004-01-05  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(count_unread_clars) added a check for clars from a particular
	  parcicipant (from > 0) to judges (to == 0). Such clars are not
	  counted;
	(write_team_page) the "unread message(s)" message is displayed even
	  if the contest is not started.

2004-01-03  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c: copyright notice is updated;
	(do_backup) the backup copies of the userlist database are written in
	  gzip compressed format.

	* html.c:
	(do_write_kirov_standings) the new `hidden' problem configuration
	  variable is supported;
	(do_write_standings) the same as above.

	* master.c: copyright notice is updated;
	(display_enter_password_2) a new functon to display
	  "login-password-contest_id" prompt;
	(display_enter_password) previously commented code is removed;
	  inserted missing "<tr>";
	  the "Submit" button is moved to second column;
	(initialize) `display_enter_password_2' is called, if the contest_id
	  variable is not set.

	* prepare.c: new problem configuration variable `hidden' is added;
	(problem_init_func) the `hidden' variable is initialized;
	(set_defaults) the `hidden' variable is processed;
	  the default initialization for the `variable_full_score' is fixed.

	* prepare.h: 
	(struct section_problem_data) new field `hidden' is added.

2004-01-02  Alexander Chernov  <cher@ispras.ru>

	* copyright.c: copyright notice is updated;
	(make_copyright) the copyright message is updated to year 2004.

	* serve.c: the copyright notice is updated;
	"team_extra.h" is included;
	(main) the team client state files are flushed using the
	  `team_extra_flush' function.

	* prepare.h: the copyright notice is updated;
	(struct section_global_data) new field `team_extra_dir' is added.

	* prepare.c: copyright notice is updated;
	new global configuration variable `team_extra_dir' is added;
	(set_defaults) the new `team_extra_dir' configuration variable
	  is processed;
	(create_dirs) the `team_extra_dir' directory is created.

	* html.c: copyright notice is updated;
	"team_extra.h" is included;
	(team_clar_flags) a new function, which generates the status string
	  for each clarification report. This string is shown in the "Status"
	  column of the clarification table. The function returns "N", if the
	  message was not yet seen by the participant, etc.
	(count_unread_clars) a new function, which counts the number of
	  messages, which are not yet seed by the participant;
	(new_write_user_clars) `team_clar_flags' is used instead of
	  `clar_flags_html';
	(new_write_user_clar) the requested message is marked as seen by the
	  participant;
	(write_team_page) the number of unread messages is reported in the
	  contest status section.

	* files.make: copyright notice is updated;
	team_extra.c, team_extra_xml.c are added to the list of C files;
	team_extra.h is added to the list of H files.

	* team_extra_xml.c, team_extra.h, team_extra.c: Initial revision

2003-12-29  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-12-29  Alexander Chernov  <cher@ispras.ru>

	* NEWS, NEWS.RUS: *** empty log message ***

	* master.c:
	(operation_status_page) an extra paramter `run_id' is accepted. If
	  this parameter is set to >= 0 value, the autorefreshing refreshes
	  to the "View source" page for the given run;
	(start_if_asked) usage of `operation_status_page' is updated;
	(stop_if_asked) the same;
	(action_reload_server) the same;
	(update_standings_if_asked) the same;
	(changedur_if_asked) the same;
	(sched_if_asked) the same;
	(change_status_if_asked) the same;
	(change_status) the `operation_status_page' is called so that the
	  current page remains the source view page for the given run;
	(change_problem) the same;
	(change_language) the same;
	(change_variant) the same;
	(change_user_id) the same;
	(change_user_login) the same;
	(change_imported) the same;
	(change_hidden) the same;
	(change_tests) the same;
	(change_score) the same;
	(change_readonly) the same;
	(action_submit_run) usage of `operation_status_page' is updated, the
	  `run_id' parameter is passed as "undefined" (-1);
	(confirm_clear_run) the same as above;
	(do_contest_reset_if_asked) the same as above;
	(do_clear_team_passwords) the same as above;
	(do_suspend_if_asked) the same as above;
	(do_resume_if_asked) the same as above;
	(action_test_suspend) the same as above;
	(action_test_resume) the same as above;
	(action_set_judging_mode) the same as above;
	(do_rejudge_all_if_asked) the same as above;
	(action_judge_suspended) the same as above;
	(action_squeeze_runs) the same as above;
	(action_continue) the same as above;
	(action_clear_run) the same as above;
	(action_reset_filter) the same as above;
	(action_toggle_visibility) the same as above;
	(action_toggle_ban) the same as above;
	(action_toggle_lock) the same as above;
	(do_rejudge_problem_if_asked) the same as above;
	(send_msg_if_asked) the same as above;
	(send_reply_if_asked) the same as above.

	* html.c:
	(do_write_kirov_standings) the new `variable_full_score' problem
	  configuration variable is supported.

	* master_html.c:
	(write_priv_users) added a hyperlink, which returns to the main page
	  and sets the filter expression to "uid == UID" to the Team ID column
	  of the participant list.

	* prepare.c:
	A new problem configuration variable `variable_full_score' is added;
	(problem_init_func) the `variable_full_score' is initialized to -1;
	(set_defaults) the `variable_full_score' is processed.

	* prepare.h:
	(struct section_problem_data) a new configuration variable
	  `variable_full_score' is added.

2003-12-26  Alexander Chernov  <cher@ispras.ru>

	* files.make: NEWS and NEWS.RUS are added to OTHERFILES.

	* filter_eval.c:
	(do_eval) support for the new tree node types is implemented:
	  IMPORTED, HIDDEN, READONLY, VARIANT, RAWVARIANT, CURIMPORTED,
	  CURHIDDEN, CURREADONLY, CURVARIANT, CURRAWVARIANT.

	* filter_expr.y: new constructs are handled:
	  imported[(run_id)], curimported, hidden[(run_id)], curhidden,
	  readonly[(run_id)], curreadonly, varant[(run_id)], curvariant,
	  rawvariant[(run_id)], currawvariant.

	* filter_scan.lex:
	new tokens are handled: imported, curimported, hidden, curhidden,
	  readonly, curreadonly, variant, curvariant, rawvariant,
	  currawvariant.

	* master.c:
	(display_enter_password) the `sid_mode' variable is moved to a
	  hidden field and always have value of 2;
	(change_status_if_asked) the `serve_clnt_edit_run' now accepts an
	  additional parameter, so the call is updated;
	(change_status) the same as above;
	(change_problem) the same as above;
	(change_language) the same as above;
	(change_variant) the same as above;
	(change_user_id) the same as above;
	(change_user_login) the same as above;
	(change_imported) the same as above;
	(change_hidden) the same as above;
	(change_tests) the same as above;
	(change_score) the same as above;
	(change_readonly) a new function to support editing of `is_readonly'
	  field;
	(main) the new action `ACTION_RUN_CHANGE_READONLY' is handled.

	* master_html.c:
	(write_priv_source) hyperlinks, which set up filter expressions,
	  are generated for IP-address, size, hash, user_id, problem,
	  variand, and language fields. Hyperlinks are only generated
	  in the `SID_URL' session mode, which is default;
	  editing is disabled, if the run has `is_readonly' field set;
	  editing of `is_readonly' field is supported;
	(write_runs_dump) `is_readonly' field is dumped.

	* misctext.c: <ctype.h> is included;
	(url_armor_string) a new function, which escapes-for-url character
	  strings. For example, string "a=b" is converted to "a%3db". Such
	  url-armored strings may be used to specify values directly in
	  URLs.

2003-12-25  Alexander Chernov  <cher@ispras.ru>

	* misctext.h: (url_armor_string) new function prototype is added.

	* prepare.c:
	new global configuration variable `disable_testing' is added;
	new problem configuration variable `disable_testing' is added;
	(problem_init_func) `disable_testing' field is initialized to -1;
	(set_defaults) new configuration variables are processed.

	* prepare.h:
	(struct section_global_data) field `disable_testing' is added;
	(struct section_problem_data) field `disable_testing' is added.

	* run.c:
	(do_loop) testing requests for problems with `disable_testing'
	  configuration variable set are rejected;
	(process_default_testers) problems with `disable_testing' configuration
	  variable set are ignored;
	(check_config) the same as above.

	* serve.c:
	(cmd_priv_submit_run) the new `disable_testing' problem configuration
	  variable is supported;
	(cmd_team_submit_run) the same as above;
	(cmd_priv_command_0) runs with `is_readonly' flag set cannot be
	  cleared;
	(cmd_edit_run) runs with `is_readonly' flag set cannot be edited,
	  except changing of `is_readonly' field;
	  editing of `is_readonly' field is supported;
	(rejudge_run) runs with `is_readonly' flag set are not rejudged;
	(do_rejudge_all) the same as above;
	(do_judge_suspended) runs, which problem has `disable_testing'
	  configuration variable set, are not rejudged;
	  runs with `is_readonly' flag set are not rejudged;
	(do_rejudge_problem) the same as above.

2003-12-22  Alexander Chernov  <cher@ispras.ru>

	* client_actions.h: new actions added: `ACTION_RUN_CHANGE_TESTS',
	  `ACTION_RUN_CHANGE_SCORE', `ACTION_RUN_CHANGE_READONLY'.

2003-12-21  Alexander Chernov  <cher@ispras.ru>

	* runlog_xml.c: new attribute `readonly' is added;
	(process_run_elements) new attribute `readonly' is handed;
	(unparse_runlog_xml) new attribute `readonly' is generated.

	* runlog_import.c:
	(runlog_import_xml) the new `is_readonly' field is supported.

	* runlog.h: new runlog entry editing constant `RUN_ENTRY_READONLY';
	(struct run_entry) field `is_readonly' is added;
	(run_is_readonly) a new function prototype.

	* runlog.c:
	(run_change_status) the status of runs with `is_readonly' flag set
	  cannot be changed;
	(run_set_entry) runs with `is_readonly' flag set cannot be edited
	  (except to clear the flag);
	  `is_readonly' field editing is supported;
	(run_is_readonly) a new function, which returns whether the run has
	  `is_readonly' flag set;
	(run_clear_entry) runs with `is_readonly' flag set cannot be cleared;
	(runlog_check) `is_readonly' field is checked.

	* protocol.h: new error code `SRV_ERR_READONLY_RUN' is added;
	new runlog entry field constant `PROT_SERVE_RUN_READONLY_SET' added;
	(struct prot_serve_pkt_run_info) field `is_readonly' is added.

	* protocol.c: message for SRV_ERR_READONLY_RUN is added.

	* serve_clnt.h:
	(serve_clnt_edit_run) new parameter `is_readonly' is added.

2003-12-14  Alexander Chernov  <cher@ispras.ru>

	* master.c:
	(change_status_if_asked) `serve_clnt_edit_run' usage is updated;
	(change_language) the same as above;
	(change_problem) the same as above;
	(change_variant) the same as above;
	(change_user_id) the same as above;
	(change_user_login) the same as above;
	(change_imported) the same as above;
	(change_hidden) the same as above;
	(change_tests) new function to implement editing of `test' field of
	  runlog entries;
	(change_score) new function to implement editing of `score' field of
	  runlog entries;
	(main) new actions `ACTION_RUN_CHANGE_TESTS', `ACTION_RUN_CHANGE_SCORE'
	  are supported.

	* master_html.c:
	(print_nav_buttons) new parameters added: `run_id' to be used for
	  "View source" and "View report" navigation,
	  `t5' text for "View source" navigation, if NULL, this navigation
	  is disabled;
	  `t6' text for "View report" navigation, disabled if NULL;
	  so, "View source", "View report" navigation is supported;
	(write_all_runs) use of `print_nav_buttons' is updated;
	(write_all_clars) the same as above;
	(write_priv_standings) the same as above;
	(write_priv_source) editing of "Tests" and "Score" fields is
	  implemented;
	  "View report" navigation is supported;
	(write_priv_report) "View source" navigation is supported;
	(write_priv_clar) use of `print_nav_buttons' is updated;
	(write_priv_users) the same as above.

	* protocol.h:
	constants `PROT_SERVE_RUN_TESTS_SET', `PROT_SERVE_RUN_SCORE_SET'
	  are added to enable editing of `test' and `score' runlog fields;
	(struct prot_serve_pkt_run_info) fields `tests' and `score' added.

	* register.c:
	(action_register_for_contest) use of `userlist_clnt_set_info' is
	  updated: the contest identifier is passed to it.

	* serve.c:
	(cmd_edit_run) editing of `test' and `score' fields is supported.

	* serve_clnt.h:
	(serve_clnt_edit_run) new parameters `tests' and `score' are added.

	* userlist-server.c:
	(cmd_check_cookie) removed prevously commented code;
	(do_set_user_info) parameter `cnts' added to enable strict member
	  limits check;
	  strict member limits check is implemented, i.e. it is not allowed
	  to add a member, if the user already has the maximal number of
	  members of that kind;
	(cmd_set_user_info) lookup for the contest with the contest_id from
	  the client is added. The contest descriptor is then passed to
	  `do_set_user_info'.

	* userlist_clnt.h:
	(userlist_clnt_set_info) parameter `contest_id' is added.

	* userlist_proto.h:
	(struct userlist_pk_set_user_info) field `contest_id' is added.

2003-12-09  Alexander Chernov  <cher@ispras.ru>

	* NEWS.RUS, ejudge.ru_RU.KOI8-R.po, NEWS: *** empty log message ***

2003-12-09  Alexander Chernov  <cher@ispras.ru>

	* prepare.h:
	(struct section_global_data) new fields: `team_enable_ce_view',
	  `team_show_judge_report', `use_gzip', `min_gzip_size',
	  `use_dir_hierarchy';
	(struct section_problem_data) new fields: `team_enable_ce_view',
	  `team_show_judge_report'.

2003-12-04  Alexander Chernov  <cher@ispras.ru>

	* html.c: (new_write_user_runs) `team_enable_ce_view' is handled;
	  attempts are not counted for hidden runs;
	  imported runs are marked with "*" in the run_id column;
	  hidden runs are marked with "#";
	  variant is looked in the variant map, only if the variant is
	  not specified in the runlog entry;
	  if `team_enable_ce_view' is set, "Report view" link is enabled
	  for runs failed due to compilation error;
	(do_write_kirov_standings) hidden runs are ignored;
	(do_write_standings) hidden runs are ignored;
	(do_write_public_log) hidden runs are ignored;
	  variant is looked up in the variant map, only if the variant is
	  not specified in the runlog entry;
	(new_write_user_report_view) `team_enable_ce_view' and
	  `team_show_judge_report' configuration variables are handled.

	* html.h: "opcaps.h" is included;
	(write_master_page) `pcaps' parameter is added;
	(write_priv_source) the same as above;
	(write_priv_report) the same as above;
	(write_priv_clar) the same as above;
	(write_priv_users) the same as above.

	* master.c:
	(print_testing_suspend_button) a new function to print the
	  "Suspend testing" and "Resume testing" buttons;
	(change_status_if_asked) use of `serve_clnt_edit_run' is updated -
	  two new parameters added;
	(change_status) the same as above;
	(change_problem) the same as above;
	(change_language) the same as above;
	(change_user_id) the same as above;
	(change_user_login) the same as above;
	(change_variant) a new function to send "Change variant" request;
	(change_hidden) a new functio to send "Change is_hidden flag" request;
	(action_submit_run) a new function to send a privileged submit;
	(confirm_judge_suspended) a new function to display judge suspended
	  runs confirmation dialog;
	(action_test_suspend) a new function to suspend testing;
	(action_test_resume) a new function to resume testing;
	(action_judge_suspended) a new function to judge suspended runs;
	(main) new actions handled: `ACTION_TEST_SUSPEND',`ACTION_TEST_RESUME',
	  `ACTION_JUDGE_SUSPENDED_1', `ACTION_JUDGE_SUSPENDED_2',
	  `ACTION_RUN_CHANGE_VARIANT', `ACTION_RUN_CHANGE_HIDDEN',
	  `ACTION_SUBMIT_RUN';
	  "Suspend/Resume testing" button is displayed.

	* master_html.c:
	(write_all_runs) attempts are not counted for "hidden" runs;
	  "hidden" runs are marked with "#" character;
	  variant is looked up in variant map only if `variant' field
	  in run description is not set;
	  "Judge suspended runs" button is added;
	  "Submit a solution" dialog is added;
	(write_master_page) a new `pcaps' parameter is added, but is not
	  yet used;
	(write_priv_source) the same as above;
	  variant change button is added;
	  hidden status change button is added;
	(write_priv_report) a new parameter `pcaps' is added, but not yet used;
	(write_priv_clar) the same as above;
	(write_priv_users) the same as above;
	(write_runs_dump) `is_imported', `variant', `is_hidden' fields are
	  printed.

	* prepare.c:
	(GLOBAL_ALIAS) a new macro to define a global configuration variable
	  as an alias to another global configuration variable;
	new global configuration variable `stand_freeze_time' - alias to
	  `board_fog_time';
	new global configuration variable `stand_melt_time' - alias to
	  `board_unfog_time';
	new global configuration variables `team_enable_ce_view' and
	  `team_show_judge_report';
	new problem configuration variables `team_enable_ce_view' and
	  `team_show_judge_report';
	(global_init_func) `board_fog_time' is explicitly initialized;
	(problem_init_func) `team_enable_ce_view', `team_show_judge_report',
	  `test_score' are explicitly initialized;
	(parse_variant_map) debugging output is commented out;
	(set_defaults) "undefined" value of `board_fog_time' is now -1,
	  so function updated;
	  problem configuration variables `team_enable_ce_view' and
	  `team_show_judge_report' are handled;
	  `test_score' problem configuration variable is allowed to be 0.

	* runlog.c:
	(run_add_record) two new parameters are added: `variant' is the
	  problem variant, `is_hidden' is "hidden" flag for the run;
	  contest start and stop time is checked only for non-hidden runs;
	  virtual participation status is set only for non-hidden runs;
	(run_get_param) function is completely removed;
	(run_get_record) function is completely removed;
	(run_get_attempts) a "hidden" run is not counted as an attempt;
	(run_check_duplicate) variant match is required;
	(run_set_entry) `variant' and `is_hidden' fields are handled;
	  contest start and stop time is checked only for non-hidden runs;
	  a run cannot have `is_hidden' and `is_imported' flags both set;
	(runlog_check) check for "hidden" runs is relaxed;
	(build_indices) "hidden" runs are ignored.

	* runlog_import.c:
	(runlog_import_xml) "hidden" runs are handled in merging: hidden
	  runs are disallowed in external (input) runlog; "hidden"
	  local runs are never checked for correspondence in input runs;
	  `variant' field is handled in the same manner, as `test' field,
	  i. e. authoritative run may update `variant' field.

	* serve.c:
	(cmd_view) fixed bug introduced in the previous CVS revision:
	  `opcaps_check' accepts capability set as the first parameter,
	  not the user_id.

	* runlog.h:
	(run_add_record) two new parameters are added: `variant', `is_hidden';
	new constants: `RUN_ENTRY_VARIANT', `RUN_ENTRY_HIDDEN';
	(struct run_entry) new fields `variant' and `is_hidden' are added.

	* runlog_xml.c: new attribute `variant' is added;
	(process_run_elements) `variant' attribute is handled;
	(unparse_runlog_xml) hidden runs are ignored;
	  `variant' attribute is generated.

	* serve.c:
	(update_status_file) new fields `testing_suspended', `freeze_time'
	  are written to the status file;
	  `continuation_enabled' is written even if the duration is finite;
	(get_cnts_caps) new function, which returns the full capability
	  set of the given user for the current contest;
	(cmd_master_page) `get_cnts_caps' is used to obtain the full
	  capability set, which is further passed to `write_master_page';
	(cmd_view) `get_cnts_caps' is used to obtain the full capability
	  set, which is further passed to `write_priv_source',
	  `write_priv_report', `write_priv_clar', `write_priv_users';
	  `opcaps_check' function is used instead of `check_cnts_caps',
	  because the full capability set is already loaded;
	(cmd_priv_submit_run) a new function, which submits a run from a
	  privileged user (master or judge), the run is stored in the
	  run database with `hidden' flag;
	(cmd_team_submit_run) `variant' is not allowed to be explicitly
	  specified by a user;
	  `run_add_record' usage is updated due to two new parameters
	  (variant, is_hidden);
	  `testing_suspended' flag is handled: the run is marked as `ACCEPTED'
	  and is not scheduled for compilation;
	(cmd_priv_command_0) `SRV_CMD_TEST_SUSPEND' command is handled;
	  `SRV_CMD_TEST_RESUME' command is handled;
	  `SRV_CMD_JUDGE_SUSPENDED' command is handled;
	  `SRV_CMD_DURATION' is allowed after the end of the contest, if
	  `enable_continue' global configuration variable is set;
	  refuse to change infinite contest duration, or set infinite contest
	  duration;
	  allow to reduce the contest duration, but if the new duration is
	  larger, that the duration of the running contest (i.e. decrease
	  is disallowed, if it cause immediate stop of the contest);
	  `SRV_CMD_CONTINUE' contest continuation is allowed, if the contest
	  duration permits;
	(cmd_edit_run) new fields `is_hidden' and `variant' are handled;
	  `variant' is checked for consistency against the total number
	  of variants for the given problem;
	(read_compile_packet) the problem variant is looked up in the
	  variant table, only if the variant is not specified explicitly
	  in the runlog;
	(do_judge_suspended) a new function to judge all the runs with
	  `ACCEPTED' status;
	(packet_handlers) handlers for `SRV_CMD_TEST_SUSPEND',
	  `SRV_CMD_TEST_RESUME', `SRV_CMD_JUDGE_SUSPENDED',
	  `SRV_CMD_PRIV_SUBMIT_RUN' are added.

	* filter_scan.lex:
	two new tokens: `status', `curstatus', which are aliases for
	  `result' and `curresult'.

	* protocol.h:
	(struct prot_serve_status) new field `testing_suspended';
	new serve commands: TEST_SUSPEND, TEST_RESUME, JUDGE_SUSPENDED;
	new constant `PROT_SERVE_RUN_HIDDEN_SET' to mark `is_hidden'
	  field;
	(struct prot_serve_pkt_run_info) new field `is_hidden'.

	* run.c: 
	(check_config) problem test_score == 0 is allowed.

	* serve_clnt.h:
	(serve_clnt_submit_run) two new parameters added: `cmd', `variant';
	(serve_clnt_edit_run) two new parameters added: `variand',
	  `is_hidden'.

	* team.c:
	(submit_if_asked) use of `serve_clnt_submit_run' is changed, because
	  of two new parameters.

	* clntutil.c:
	type of `server_cur_time', `server_start_time', `server_sched_time',
	  `server_duration', `server_stop_time' is changed to time_t.

	* clntutil.h: new global variables added:
	  `server_freeze_time', `server_testing_suspended';
	type of `server_cur_time', `server_start_time', `server_sched_time',
	  `server_duration', `server_stop_time' is changed to time_t.

	* clntutil.c:
	new global variable `server_freeze_time' to store the standings
	  freeze time;
	new global variable `server_testing_suspended' to store this flag;
	(client_check_server_status) `server_testing_suspended',
	  `server_freeze_time' are read from the server;
	(client_print_server_status) if testing is suspended on the server,
	  the corresponding message is printed;
	  "Client time" information is printed only for privileged users;
	  "Continue" button is printed for contests with limited duration, if
	  duration permits;
	  "Change duration" is printed always, if `server_continuation_enabled'
	  flag is set, even after the end of the contest;
	  `server_freeze_time' is printed, if set.

	* client_actions.h:
	new actions added: `RUN_CHANGE_VARIANT', `RUN_CHANGE_HIDDEN',
	  `TEST_SUSPEND', `TEST_RESUME', `JUDGE_SUSPENDED_1',
	  `JUDGE_SUSPENDED_2'.

2003-12-03  Alexander Chernov  <cher@ispras.ru>

	* teamdb.c:
	(teamdb_refresh) if no participants are yet registered for the contest,
	  return gracefully instead of aborting on attempt to allocate 0 bytes.

	* contests.c:
	<observer_access> element is removed, because observer functionality
	  was not implemented;
	(parse_contest) `observer_access' tag is removed;
	(contests_check_ip) `observer_access' support is removed;
	(contests_check_observer_ip) function is removed.

	* contests.h:
	<observer_access> element is removed, because observer functionality
	  was not implemented;
	(struct contest_desc) `observer_access' field is removed;
	(contests_check_observer_ip) function prototype is removed.

	* protocol.c: copyright notice is updated;
	(priv_level_map) `observer' constant is removed.

	* protocol.h:
	(struct prot_serve_status) new field `freeze_time' is added to
	  pass the standings freeze time to clients;
	new command `SRV_CMD_PRIV_SUBMIT_RUN' is added;
	(struct prot_serve_pkt_submit_run) new field `variant' is added;
	new bit `PROT_SERVE_RUN_VARIANT_SET' is added;
	(struct prot_serve_pkt_run_info) new field `variant' is added.

2003-12-02  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c: "archive_paths.h" is included;
	(new_write_user_source_view) `archive_make_read_path' is used to
	  compose the path to the archive entry;
	(new_write_user_report_view) the same as above.

	* master.c:
	(main) support for `PRIV_LEVEL_OBSERVER' privilege level is removed,
	  because the `observer' privilege level was never actually
	  implemented in ejudge.

	* master_html.c: "archive_paths.h" is included;
	(write_all_runs) two extra columns for virtual events and empty
	  record are not generated in judge mode;
	(write_priv_source) `archive_make_read_path' function is used to
	  compose the path to the archive entry;
	(write_priv_report) the same as above.

	* prepare.c:
	new global configuration variables: `use_gzip', `min_gzip_size',
	  `use_dir_hierarchy';
	(global_init_func) the new configuration variables are initialized
	  to "undefined" (-1) value;
	(set_defaults) the new configuration variables are handled.

	* runlog_import.c: "archive_paths.h" is included;
	(do_rename) function is removed because similar function
	  `archive_rename' is now in the "archive_paths.c";
	(rename_archive_files) `archive_rename' is used instead of
	  `do_rename'.

	* serve.c: "archive_paths.h" is included;
	(cmd_team_get_archive) `archive_make_read_path' is used to compose
	  an archive entry path to insert into the team's archive;
	(cmd_master_page) `PRIV_LEVEL_OBSERVER' is removed as `observer'
	  mode was never implemented;
	(cmd_priv_standings) the same as above;
	(cmd_message) the same as above;
	(cmd_team_submit_run) `archive_make_write_path', `archive_dir_prepare'
	  are used to save the submit into the proper place in the archive;
	(cmd_judge_command_0) `PRIV_LEVEL_OBSERVER' is removed as `observer'
	  mode was never implemented;
	(do_rename) function removed, since `archive_rename' function is
	  created in "archive_paths.c";
	(do_remove_archive_entry) function removed, since `archive_remove'
	  function is created in "archive_paths.c";
	(do_squeeze_runs) `archive_rename', `archive_remove' functions are
	  used;
	(read_compile_packet) `archive_make_write_path', `archive_dir_prepare'
	  functions are used to save the compilation log to proper place;
	(read_run_packet) `archive_make_write_path', `archive_dir_prepare'
	  are used to save the execution log to proper places;
	(queue_compile_request) `archive_make_read_path' is used to compose
	  the name of the archive entry;
	(rejudge_run) since `queue_compile_request' do not need run text
	  if the run is taken from the archive, NULL is passed in this
	  parameter.

2003-12-01  Alexander Chernov  <cher@ispras.ru>

	* fileutl.h:
	new `GZIP' bit is added to flag bits. This bit indicates, that
	  gzip compression/decompression should be performed;
	(generic_file_size) new function prototype.

	* makefile: `-lz' added to LDLIBS: many utilities now use zlib.

	* opcaps.c, opcaps.h:
	`SUBMIT_RUNS' capability is added instead of `OBSERVER_LOGIN'
	  (capability bit is 2).

	* protocol.h, userlist_proto.h:
	`PRIV_LEVEL_OBSERVER' privilege level constant is removed, since
	  the `observer' privilege level was never implemented.

	* files.make: archive_paths.[ch] are added.

	* userlist-server.c:
	(cmd_priv_login) support for `observer' privilege level is removed,
	  since this privilege level was never implemented;
	(cmd_priv_check_cookie) the same as above.

	* userlist.h:
	`PRIV_LEVEL_OBSERVER' constant is removed, since the `observer'
	  privilege level (never implemented) is removed.

	* userlist_xml.c:
	(parse_priv_level) `observer' privilege level is removed.

	* archive_paths.c, archive_paths.h: initial revision

2003-11-28  Alexander Chernov  <cher@ispras.ru>

	* files.make:
	Obsoleted files are removed from the lists of .c and .h files:
	  clar.c filter_test.c idmap.c inetdb.c localdb.c make-teamdb-inet.c
	  make-teamdb.c mkpasswd.c send-passwords.c submit.c
	  idmap.h inetdb.h localdb.h

2003-11-21  Alexander Chernov  <cher@ispras.ru>

	* NEWS.RUS, NEWS: Initial revision

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_xml.c: "misctext.h" is included;
	(unparse_final_tag) the element value is HTML-armored, if necessary;
	(unparse_attributed_elem) a new function, which generates XML element
	  with the given attributes. The element's value is properlt
	  HTML-armored;
	(unparse_user_short) `unparse_final_tag' is used;
	(unparse_user) `unparse_attributed_elem', `unparse_final_tag' are
	  used.

	* userlist.h:
	new type `userlist_login_hash_t' is added to hold the user login
	  hash value;
	(struct userlist_user) field `login_hash' to store the login hash
	  value is added;
	(struct userlist_list) new fields `login_hash_size', `login_hash_step',
	  `login_thresh', `login_cur_fill', `login_hash_table' to store
	  the login hash table;
	  new fields `cookie_hash_size', `cookie_hash_step', `cookie_thresh',
	  `cookie_cur_fill', `cookie_hash_table' to store the cookie hash
	  table;
	(userlist_set_user_field_str) new `lst' parameter added;
	(userlist_login_hash) new function prototype;
	(userlist_build_login_hash) new function prototype;
	(userlist_build_cookie_hash) new functon prototype;
	(userlist_cookie_hash_add) new functon prototype;
	(userlist_cookie_hash_del) new functon prototype.

	* userlist.c: "pathutl.h", "tsc.h" are included;
	(userlist_remove_user) the user hash table is rebuilt after removal;
	(userlist_set_user_field_str) a new parameter `lst' is added, which
	  is a pointer to the whole userlist structure. It is used to check
	  uniqueness of the login, if the latter changes;
	  user hash table is used to check the uniqueness;
	(userlist_login_hash) a new function, which calculates hash value
	  from a string;
	(userlist_build_login_hash) a new function, which builds the login
	  hash table;
	(userlist_build_cookie_hash) a new function, which builds the cookie
	  hash table;
	(userlist_cookie_hash_add) a new function, which adds a cookie to
	  the cookie hash table;
	(userlist_cookie_hash_del) a new function, which removes a cookie
	  from the cookie hash table.

	* userlist-server.c: "tsc.h" is included;
	<string.h> is included;
	(build_system_uid_map) special mappings for `root' and `guest' users
	  are removed;
	  login_hash_table is used to perform user login lookup;
	(cmd_register_new) `login_hash_table' is used to lookup user login,
	  if available;
	  user hash table is updated;
	(remove_cookie) the cookie is removed from the cookie hash table, if
	  that is supported;
	(generate_random_unique_cookie) a new function, which generates a
	  random unique cookie;
	(cmd_do_login) the login hash table is used for user login lookup, if
	  available;
	  lookup time is counted using the TSC counter;
	  `generate_random_unique_cookie' is used instead of
	     `generate_random_cookie';
	  the newly generated cookie is added to the cookie hash table;
	(cmd_team_login) the same as above;
	(cmd_priv_login) the same as above;
	(cmd_check_cookie) the cookie hash table is used for cookie lookup,
	  if available;
	  lookup time is counted using the TSC counter;
	  only the cookie is used to lookup cookies (as it is unique), but
	  other fields must match;
	(cmd_team_check_cookie) the same as above;
	(cmd_priv_check_cookie) the same as above;
	(cmd_do_logout) since the cookie is unique, only the cookie is checked,
	  but other fields must also match;
	(do_generate_passwd) the cookie hash table is rebuilt because cookies
	  may be deleted;
	(do_generate_team_passwd) the same as above;
	(cmd_delete_field) the same as above;
	  `userlist_set_user_field_str' usage is updated;
	(cmd_add_field) new login is checked for uniqueness and a unique
	  login is generated;
	  user hash table is updated;
	(main) TSC routines are initialized with `tsc_init';
	  the cookie hash table and the login hash table are built.

	* team.c:
	(permission_denied) error message is changed to be more informative;
	(error_not_registered) new function to display a message, when a user
	  is not registered for a particular contest;
	(error_cannot_participate) new function to display a message, when
	  a user is banned or his registration is not confirmed;
	(is_auth_error) function is removed;
	(authentificate) a proper error messaging function
	  (`error_cannot_participate', `error_not_registered',
	  `permission_denied', `fatal_server_error') is called in case
	  of authentification error.

2003-11-20  Alexander Chernov  <cher@ispras.ru>

	* testinfo.c:
	(parse_cmdline) comment character ('#') is handled properly, if
	  appears inside strings of any kinds;
	(parse_file) support for comment characters ('#') is moved to
	  `parse_cmdline'.

	* super-serve.c: <string.h> is included.

	* runlog_xml.c: "misctext.h" is included;
	(unparse_runlog_xml) all the text fields are properly HTML
	  (and so XML) armored, if necessary.

	* parsecfg.c: copyright notice is slightly changed;
	(read_variable) parsing of the configuration variable line is redone.
	  Two kinds of quotes (", ') and escape character (\) are supported,
	  which allows using arbitrary character in configuration variable
	  values.

	* misctext.h: copyright notice is updated;
	(html_armor_needed) a new function prototype is added.

	* misctext.c: copyright notice is updated;
	(html_armor_needed) new function. This function returns flag whether
	  html armoring is required for the given string. In the latter
	  case, the length of armored string is also calculated and stored
	  via the passed pointer.

	* makefile: rules `extra_progs' and `checker_lib' are added.

	* files.make: tsc.[ch] files added.

	* edit-userlist.c:
	(display_users) usage of `userlist_set_user_field_str' function
	  is changed (new first parameter added).

	* cgi.c:
	(cgi_get_char) plain (unescaped) '&' and '=' characters are immediately
	  returned to the caller, negated. This is used to distinguish control
	  characters '&' (separates variables) and '=' (separates variable
	  name and variable value) from '&' and '=' obtained as the result
	  of %HH conversion;
	(do_cgi_read) negated '&' and '=' returned by the cgi_get_char
	  routine are used as control characters.

	* COPYING.RUS: Initial revision

2003-11-04  Alexander Chernov  <cher@ispras.ru>

	* tsc.h, tsc.c: Initial revision

2003-11-02  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-11-02  Alexander Chernov  <cher@ispras.ru>

	* filter_expr.y: copyright notice is updated.

	* filter_scan.lex:
	(filter_expr_set_string) bug: the scanner is properly reset using
	  `yyrestart' and `BEGIN' functions.

	* html.c:
	(new_write_user_runs) `run_get_entry' function is used instead of
	  `run_get_record';
	(do_write_kirov_standings) `run_get_record' is no longer used, the
	  whole runlog is fetched using `run_get_all_entries' instead;
	  global configuration variable `prune_empty_users' is supported;
	(do_write_standings) the same as above;
	(do_write_public_log) `run_get_record' is no longer used, the
	  whole runlog is fetched using `run_get_all_entries' instead;
	(new_write_user_source_view) `run_get_entry' is used instead of
	  `run_get_entry';
	(new_write_user_report_view) `run_get_entry' is used instead of
	  `run_get_entry';
	  the used_id is checked, and if it does not match, request is
	  rejected.

	* prepare.c:
	(parse_variant_map) bug: the pointer should be advanced after a
	  value is read.

	* prepare.h, prepare.c:
	new global configuration variable `prune_empty_users'.

	* runlog.c: 
	(run_get_param) commented out;
	(run_get_record) commented out;
	(run_get_virtual_start_time) bug: the real contest start time
	  should only be returned, if status of the user is `V_REAL_USER'.

	* runlog.h: 
	(run_get_param) the prototype is removed;
	(run_get_record) the prototype is removed.

	* serve.c:
	(cmd_team_get_archive) `run_get_entry' function is used instead of
	  `run_get_record';
	(read_compile_packet) `run_get_entry' is used instead of
	  `run_get_param';
	(read_run_packet) the same as above;
	(rejudge_run) `run_get_entry' function is used instead of
	  `run_get_record';
	(do_rejudge_all) the same as above;
	(do_rejudge_problem) the same as above;

2003-11-01  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-11-01  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(do_write_kirov_standings) new global configuration variables are used
	  for standings table decorations: `stand_table_attr',
	  `stand_place_attr', `stand_team_attr', `stand_prob_attr',
	  `stand_solved_attr', `stand_score_attr';
	  new configuration variables `stand_extra_format',
	  `stand_extra_legend', `stand_extra_attr' are used to add an extra
	  user-defined column into the standings table;
	(do_write_standings) new global configuration variables are used
	  for standings table decorations: `stand_table_attr',
	  `stand_place_attr', `stand_team_attr', `stand_prob_attr',
	  `stand_solved_attr', `stand_penalty_attr', `stand_time_attr';
	  new configuration variables `stand_extra_format',
	  `stand_extra_legend', `stand_extra_attr' are used to add an extra
	  user-defined column into the standings table;
	  `standings_team_color', `standings_real_team_color',
	  `standings_virtual_team_color' are no longer used;
	  `stand_self_row_attr', `stand_r_row_attr', `stand_v_row_attr',
	  `stand_u_row_attr' are used instead of them;

	* makefile: 
	(CU_OBJECTS) `clean-users' now needs `libuserlist_clnt.a'.

	* master.c: 
	(print_write_xml_runs_button) a new function, which prints "Write
	  XML Runs" button;
	(print_export_xml_runs_button) the button label is changed;
	(action_write_xml_runs) a new function, which generates the runlog
	  in XML format;
	(print_dump_buttons) call of `print_write_xml_runs_button' added;
	(main) `ACTION_WRITE_XML_RUNS' action is handled.

2003-10-31  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(XFSIZE) a new macro to evaluate to the size of a structure field;
	(GLOBAL_SIZE) new macro to evaluate a size of a field in
	  `struct section_global_data';
	(GLOBAL_PARAM) the size of the current field is automatically
	  calculated;
	new global parameters: `stand_extra_format', `stand_extra_legend',
	  `stand_extra_attr', `stand_table_attr', `stand_place_attr',
	  `stand_team_attr', `stand_prob_attr', `stand_solved_attr',
	  `stand_score_attr', `stand_penalty_attr', `stand_time_attr',
	  `stand_self_row_attr', `stand_v_row_attr', `stand_r_row_attr',
	  `stand_u_row_attr';
	removed global parameters: `standings_team_color',
	  `standings_virtual_team_color', `standings_real_team_color';
	(PROBLEM_SIZE) new macro to evaluate a size of a field in
	  `struct section_problem_data';
	(PROBLEM_PARAM) the size of the field is calculated automatically;
	(LANGUAGE_SIZE) new macro to evaluate a size of a field in
	  `struct section_language_data';
	(LANGUAGE_PARAM) the size of the field is calculated automatically;
	(section_language_params) bug: the type of `compile_real_time_limit'
	  is set correctly to "d";
	(TESTER_SIZE) new macro to evaluate a size of a field in
	  `struct section_tester_data';
	(TESTER_PARAM) the size of the field is calculated automatically;
	(set_defaults) handling of the fields with reduced size is updated
	  in order not to overflow the fields;
	(prepare_tester_refinement) the same as above.

	* prepare.h:
	(struct section_global_data) the following fields' sizes are reduced:
	    `name', `standings_locale', `charset', `standings_charset',
	    `test_sfx', `corr_sfx', `info_sfx', `tgz_sfx', `score_system',
	    `standings_file_name', `stand2_file_name', `plog_file_name';
	  the following fields are removed: `standings_team_color',
	    `standings_virtual_team_color', `standings_real_team_color';
	  the following fields are added: `stand_extra_format',
	    `stand_extra_legend', `stand_extra_attr', `stand_table_attr',
	    `stand_place_attr', `stand_team_attr', `stand_prob_attr',
	    `stand_solved_attr', `stand_score_attr', `stand_penalty_attr',
	    `stand_time_attr', `stand_self_row_attr', `stand_r_row_attr',
	    `stand_v_row_attr', `stand_u_row_attr';
	(struct section_problem_data) the following fields' sizes are
	  reduced: `super', `short_name', `long_name', `test_sfx',
	  `corr_sfx', `info_sfx', `tgz_sfx', `input_file', `output_file',
	  `test_score_list', `deadline';
	(struct section_language_data) the following fields' sizes are
	  reduced: `short_name', `long_name', `key', `arch', `src_sfx',
	  `exe_sfx';
	(struct section_tester_data) the following fields' sizes are
	  reduced: `name', `problem_name', `arch', `key', `kill_signal',
	  `errorcode_file', `error_file'.

	* protocol.h:
	`SRV_CMD_EXPORT_XML_RUNS' is renamed to `SRV_CMD_WRITE_XML_RUNS';
	new request `SRV_CMD_EXPORT_XML_RUNS' is added.

	* runlog.c:
	(run_write_xml) a new `export_mode' parameter is added and passed
	  to `unparse_runlog_xml';
	  use of `unparse_runlog_xml' is updated.

	* runlog.h:
	(run_write_xml) a new parameter `external_mode' is added, if this
	  parameter is 1, the runlog is generated in the external format;
	(unparse_runlog_xml) the same as above.

	* runlog_xml.c: "teamdb.h" is included;
	"prepare.h" is included;
	new elements: <runs>, <users>, <user>, <problems>, <problem>,
	  <languages>, <language>;
	`team_id' attribute is renamed to `user_id';
	new attributes: `id', `name', `short_name', `long_name';
	(process_run_elements) `team_id' attribute is renamed to `user_id';
	(process_runlog_element) one parameter `ptruns' is added;
	  checks, that <runs> element is present in <runlog> and is not
	  duplicated;
	  stores the pointer to <runs> element to the address, passed in
	  parameter `ptruns';
	(parse_runlog_xml) use of `process_runlog_element' is updated;
	(unparse_runlog_xml) new parameter `external_mode' is added, if this
	  parameter is set to 1, the runlog is generated in the external
	  format;
	  list of users, problems, and languages are generated if the
	  `external_mode' is on;
	  banned and invisible teams and their runs are not generated if the
	  `external_mode' is on;
	  VSTART and VSTOP events are allowed;
	  `size', `ip', `sha1', `locale_id', and `is_imported' attributes
	  are not generated, if `external_mode' is on.

	* serve.c: 
	(cmd_view) new request `SRV_CMD_WRITE_XML_RUNS' is handled;
	  use of `run_write_xml' is updated, as this function now accepts
	  an extra parameter;
	(packet_handlers) handler for `SRV_CMD_WRITE_XML_RUNS' added.

	* client_actions.h:
	ACTION_EXPORT_XML_RUNS is renamed to ACTION_WRITE_XML_RUNS;
	new action ACTION_EXPORT_XML_RUNS added.

	* master_html.c:
	(write_priv_source) a minor type mismatch in conditional expression
	  (unsigned char * and char *) is fixed.

	* runlog.c:
	Limits for all field values are added. For example, `RUNLOG_MAX_SIZE'
	  is the maximal allowed run size;
	(struct user_entry) new structure instead of previous `struct vt_entry'
	  the new structure will store all indexing information for user.
	  Currently it stores only virtual contest information;
	(read_runlog_version_0) the runlog is checked for consistency
	  by calling `runlog_check', and then indices are built by
	  `build_indices';
	(run_set_runlog) the same as above;
	(read_runlog) the same as above;
	(runlog_flush) a new function to completely flush the run records;
	(append_record) now accept two parameters: timestamp and user_id and
	  may insert new entries into the middle of the runlog;
	(run_add_record) parameters are strictly checked for consistency;
	(run_change_status) the same as above;
	(run_reset) now accepts the duration of the contest and returns the
	  completion status;
	(run_check_duplicate) EMPTY, VSTART, VSTOP entries are skipped;
	(run_set_entry) parameters are strictly checked for consistency;
	(run_build_virtual_table) removed;
	(get_entry) removed;
	(get_user_entry) a new function instead of `get_entry';
	(run_get_virtual_start_time) if the user is not a virtual user,
	  return the real start time for it;
	  `get_user_entry' is used instead of `get_entry';
	(run_get_virtual_stop_time) `get_user_entry' is used instead of
	  `get_entry';
	(run_get_virtual_status) the same as above;
	(run_virtual_start) `get_user_entry' is used instead of `get_entry';
	  use of `append_record' is updated;
	  the runlog is checked for consistency;
	(run_virtual_stop) the same as above;
	(run_clear_entry) the function now clears correctly all record types;
	  the runlog is checked for consistency;
	(run_squeeze_log) `submission' is updated for all moved entries;
	(run_clear_variables) updated for new global variables;
	(run_write_xml) export of virtual entries is now possible;
	(check_msg) new helper function to report the message during
	  runlog consistency check;
	(runlog_check) new function to check the consistency of the runlog;
	(build_indices) new function to build the internal indexes.

	* runlog.h: `RUN_PSEUDO_LAST' constant is added;
	(run_reset) now accepts duration parameter and return the completion
	  status;
	(runlog_flush) a new function, which is flushed the whole runlog;
	(run_build_virtual_table) removed;
	(runlog_check) a new function to check the consistency of the runlog.

	* serve.c:
	(cmd_priv_command_0) `run_reset' now accepts one parameter: the
	  contest duration;
	(main) `run_build_virtual_table' call is removed, since all the
	  indexes are build during opening of the runlog file.

	* sformat.c: copyright notice is updated;
	"userlist.h" is included;
	new format specifiers for `user' structure:
	  Mc - city
	  MC - city_en
	  Mo - country
	  MO - country_en
	  Mt - inst_short
	  MT - inst_short_en
	  Mu - inst
	  MU - inst_en
	(sformat_message) the new format specifiers are supported.

	* teamdb.c: signal handling stuff is removed;
	(handler) function is removed.

	* teamdb.c:
	The file is almost rewritten. The userlist-server <-> serve exchange
	  protocol is changed in order not to put the whole table into
	  the shared memory segment. Only the `vintage' counter is stored
	  in the shared memory. If the `serve' determines, that the `vintage'
	  counter is changed, it requests the standings-oriented list of
	  the participating users in XML format via the standard communication
	  socket.
	If the connection to userlist-server is broken, the functions do
	  not try to repeatedly re-establish the connection. Instead, they
	  try once and then fail with appropriate return codes.
	Check of the connection and `vintage' counter actuality is added
	  to almost any function.
	The information about participating users is stored in the same
	  structure (struct userlist_list), as the information about all
	  users in userlist-server. XML parse routines from userlist_xml.c
	  are used.
	global variables are reorganized;
	(restore_connection) the function is removed.
	(open_connection) a new function which opens the connection to the
	  userlist-server;
	(lock_userlist_table) the function is removed;
	(unlock_userlist_table) the function is removed;
	(close_connection) a new function;
	(teamdb_refresh) the return type now `int';
	  the function is rewritten according to the principles mentioned
	  above;
	(teamdb_get_vintage) changes as described above;
	(teamdb_open_client) the function is rewritten. It just calls
	  `open_connection' and then `teamdb_refresh';
	(teamdb_lookup_client) changed as the global data structures changed;
	(teamdb_lookup) changes as described above;
	(teamdb_lookup_login) changes as described above;
	(teamdb_get_login) changes as described above;
	(teamdb_get_name) changes as described above;
	(teamdb_get_flags) changes as described above;
	(teamdb_get_max_team_id) changes as described above;
	(teamdb_get_total_teams) changes as described above;
	(teamdb_toggle_flags) changes as described above;
	(teamdb_export_team) changes as described above;
	  the pointer to the `struct userlist_user' is also exported;
	(teamdb_dump_database) changes as described above;
	(syncronize_team_extra) changes as described above;
	(teamdb_get_archive_time) changes as described above;
	(teamdb_set_archive_time) changes as described above;
	(teamdb_get_uid_by_pid) changes as described above;

	* teamdb.h: 
	(teamdb_refresh) the return type changed to `int';
	(struct teamdb_export) field `user' added: pointer to the full user
	  structure.

	* userlist-server.c:
	(struct contest_extra) `sem_key' and `sem_id' fields are removed;
	(attach_contest_extra) creation of semaphore is removed, as the
	  semaphore is no longer used;
	(detach_contest_extra) removal of semaphore set is removed from the
	  code as the semaphores are no longer used;
	(lock_userlist_table) the function is removed;
	(unlock_userlist_table) the function is removed;
	(update_userlist_table) the function is rewritten. The only action
	  is to increment the `vintage' counter in shared memory segment;
	(cmd_list_standings_users) new function to handle
	  `LIST_STANDINGS_USERS' request;
	(cmd_map_contest) the semaphore set is no longer created;
	(cmd_table) handler for `CMD_LIST_STANDINGS_USERS' is added;
	(do_work) bug: removal of the handled filedescriptor from the set
	  of active descriptors is fixed.

2003-10-30  Alexander Chernov  <cher@ispras.ru>

	* runlog_import.c:
	(runlog_import_xml) virtual contest events are supported;
	  sanity checks for the two incoming runlogs and the resulted
	  runlog are added.

	* userlist.h:
	new userlist XML generation mode: `USERLIST_MODE_STAND';
	(userlist_unparse_for_standings) a new function prototype added.

	* userlist_xml.c:
	(unparse_contests) two new parameters: `mode' and `contest_id';
	(unparse_user) new parameter `contest_id';
	  if mode == USERLIST_MODE_STAND, some attributes and elements,
	  which are irrelevant for the contest server, are not printed;
	  use of `unparse_contests' is fixed;
	(userlist_unparse_contests) use of `unparse_contests' is updated;
	(userlist_unparse) use of `unparse_user' is updated;
	(userlist_unparse_for_standings) a new function, which generates
	  XML for users, which are allowed to participate in the given
	  contest. Only general user desription is generated.

	* userlist_proto.h: `LIST_STANDINGS_USERS' command is added;
	removed old shared memory info stuff;
	(struct userlist_table) the only remaining field is currently
	  `vintage'.

	* run.c: <signal.h> is included;
	(do_loop) the process signal mask is manipulated in order to
	  prevent unexpected termination of the process.

	* edit-userlist.c:
	(display_registered_users) use of `userlist_clnt_list_all_users'
	  is updated (the explicit command is added);
	(do_display_user_menu) the same as above.

	* compile.c: <signal.h> is included;
	(do_loop) the process signal mask is manipulated in order to
	  prevent unexpected termination of the process.

	* cgi.c:
	(parse_multipart) "ignored header..." error message is no longer
	  reported, since this message is harmless, but clobbers log output.

	* userlist_clnt.h:
	(userlist_clnt_list_all_users) `cmd' parameter is added.

2003-10-27  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(run_tests) removed the temporary hack when maximal testing time
	  was set as 1 second less, than requested, because the corresponding
	  behavior of reuse library is fixed;
	  terminal state is restored properly, when managed_mode_flag variable
	  is not set.

2003-10-26  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-10-26  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(process_template) check for NULL pointers passed as parameters
	  added;
	(do_write_standings) bug: in case of a tie, participants are now
	  sorted in the order of their ids.

2003-10-24  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(set_defaults) `inactivity_timeout' is set for both serve and run
	  programs;
	(split_path) a new function, which splits the given path into
	  an array of path components;
	(make_relative_path) a new function, which constructs a relative
	  path from two absolute paths. The constructed path is suitable for
	  a symlink;
	(make_symlink) function is reworked and several bugs fixed;
	  a relative symlink is created instead of an absolute one;
	  `split_path', `make_relative_path' functions are used.

	* run.c:
	(do_loop) bug: inactivity_timeout is honored only in the managed
	  mode.

	* runlog_import.c:
	(runlog_import_xml) unused variables are removed to eliminate
	  gcc warnings.

	* super-serve.c:
	(do_loop) a serve or a run service is disabled for 60 seconds, if
	  the corresponding process respawns too fast (atleast twice in the
	  same second).

	* testinfo.c:
	(read_line) bug: potential use of uninitialized variable is fixed.

	* userlist-server.c:
	(cmd_clear_team_passwords) unused variables are removed;
	(do_clear_team_passwords) unused variable `buf' is removed.

2003-10-24  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* client_actions.h: `ACTION_RELOAD_SERVER' is added.

	* contests.c: `run_managed' attribute is supported.

	* contests.h: `run_managed' attribute is added;
	(struct contest_desc) `run_managed' field is added.

	* master.c: (print_reload_server_button) a new function to print the
	  "Reload server" button;
	(action_reload_server) a new function to send `QUIT' request to
	  the contest server;
	(main) `ACTION_RELOAD_SERVER' is handled;
	  "Reload server" button is printed.

	* protocol.h: `SRV_CMD_QUIT' command is added.

	* run.c: Managed mode is implemented. The detailed changes are below.
	<time.h> is included;
	(run_tests) `no_redirect' flag has no effect in managed mode;
	(do_loop) quit packets from serve are honored in managed mode;
	  global configuration variable `inactivity_timeout' is honored
	  in managed mode;
	(main) option `-S' is added, which turns on managed mode.

	* serve.c: (cmd_priv_command_0) `SRV_CMD_QUIT' request is handled;
	(packet_handlers) `SRV_CMD_QUIT' request is handled.

	* super-serve.c: <reuse/logger.h> is included;
	<dirent.h> is included;
	(struct contest_extra) new fields to handle `run' super-serving using
	  Linux directory notifications: `serve_used', `run_used',
	  `dnotify_flag', `run_pid', `run_dir_fd', `run_queue_dir',
	  `run_log_file';
	(dnotify_handler) new function: directory notification signal handler;
	(acquire_resources) run super-serving is implemented;
	(release_resources) the same as above;
	(get_number_of_files) a new function to return the number of files
	  in the given directory;
	(do_loop) run super-serving is implemented.

	* userlist-server.c:
	(do_clear_team_passwords) minor compilation warnings are fixed.

	* userlist_cfg.c: new element `run_path' is handled.

	* userlist_cfg.h: 
	(struct userlist_cfg) field `run_path' is added.

2003-10-20  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* compile.c:
	(do_loop) a long standing bug is fixed: task structure is
	  deallocated, when compilation is finished.

	* client_actions.h:
	new client actions added: EXPORT_XML_RUNS, MERGE_RUNS,
	  RUN_CHANGE_IMPORTED, CLEAR_TEAM_PASSWORDS_1,
	  CLEAR_TEAM_PASSWORDS_2.

	* cgi.c: (parse_multipart) maximal content-length is limited with
	  `MAX_CONTENT_LENGTH' constant, which now have value 256Kb;
	MAX_VALUE_SIZE constant is increased to 256Kb.

	* files.make: new files added:
	  userlist_clnt/clear_team_passwords.c,
	  serve_clnt/import_xml_runs.c,
	  runlog_import.c,
	  runlog_xml.c.

	* html.c: (new_write_user_runs) use of `run_get_record' is updated;
	(do_write_kirov_standings) bug: default header style is "h2", not
	  "<h2>";
	  use of `run_get_record' is updated;
	(do_write_standings) the same as above;
	(do_write_public_log) use of `run_get_record' is updated;
	(new_write_user_source_view) the same as above;
	(new_write_user_report_view) the same as above.

	* master.c:
	(make_self_url) bug: self-reference URL is constructed correctly.
	  The variable `SERVER_PORT' value is not used, because the port
	  number is already included into the value of `HTTP_HOST' variable;
	(print_export_xml_runs_button) new function to print the
	  "Export XML runs" button;
	(print_clear_team_passwords_button) new functio to print the
	  "Clear team passwords" button;
	(sched_if_asked) bug: `sscanf' is used instead of `scanf';
	(change_status_if_asked) use of `serve_clnt_edit_run' is updated,
	  as this function now has one more parameter;
	(change_status) the same as above;
	(change_problem) the same as above;
	(change_language) the same as above;
	(change_user_id) the same as above;
	(change_user_login) the same as above;
	(change_imported) a new function to change `is_imported' flag;
	(action_export_xml_runs) new function to handle the corresponding
	  request;
	(confirm_clear_team_passwords) a new function;
	(do_clear_team_passwords) a new function;
	(action_merge_runs) a new function;
	(print_dump_buttons) "Export XML" button is printed;
	(main) new actions handled: `ACTION_CLEAR_TEAM_PASSWORDS_1',
	  `ACTION_CLEAR_TEAM_PASSWORDS_2', `ACTION_RUN_CHANGE_IMPORTED',
	  `ACTION_EXPORT_XML_RUNS', `ACTION_MERGE_RUNS';
	  "Clear team passwords" button is printed.

	* master_html.c:
	(write_change_status_dialog) new parameter `disable_rejudge_flag'
	  is added. If this flag is set, "Rejudge" option is disabled;
	(write_all_runs) imported runs are marked with '*' in runid
	  column;
	  "Rejudge" button is disabled for imported runs;
	  "View source" link is disabled for imported runs;
	  "View report" link is disabled for imported runs;
	  if global configuration variable `enable_runlog_merge' is set,
	  "Import runlog" option is displayed;
	(write_priv_source) `is_imported' field is displayed;
	  if `is_imported' flag is set, no source is displayed.

	* opcaps.c, opcaps.h: new capability `IMPORT_XML_RUNS' added.

	* prepare.c, prepare.h:
	new global configuration variable `enable_runlog_merge'.

	* protocol.h:
	commands: `CMD_EXPORT_XML_RUNS', `CMD_IMPORT_XML_RUNS' added;
	field flag `PROT_SERVE_RUN_IMPORTED_SET' is added;
	(struct prot_serve_pkt_run_info) field `is_imported' added.

	* register.c:
	(initialize) bug: self-reference URL is constructed correctly:
	  the value of `SERVER_PORT' is not used, since the number
	  of port is already contained in `HTTP_HOST' variable value.

	* run.c: (run_tests) time-limit value calculations are redone.
	  Temporary hack: `task_SetMaxTime' is passed 1 the limit, which is
	  1 second less, that the actual limit, since currently a process
	  works one second more, than its time limit;
	(do_loop) provisions added to quit the program if a special run packet
	  received.

	* runlog.c:
	(run_set_runlog) a new function to completely set the runlog with
	  new values;
	(run_backup) new function to make a backup copy of the current log;
	(run_get_record) new parameter `pimported' is added, in which
	  a pointer, where to store the `is_imported' field value is passed;
	(run_set_entry) `RUN_ENTRY_IMPORTED' mask is handled and
	  `is_imported' flag is set;
	(run_write_xml) a new function to write the runlog in XML format.

	* runlog.h: new run status constants are added to simplify handling:
	  `RUN_PSEUDO_FIRST', `RUN_TRANSIENT_FIRST', `RUN_TRANSIENT_LAST';
	(run_get_record) a new parameter added to store the value of
	  `is_imported' flag;
	new field mask `RUN_ENTRY_IMPORTED';
	(struct run_entry) `is_imported' field is added;
	(run_write_xml) new function prototype;
	(unparse_runlog_xml) new function prototype;
	(parse_runlog_xml) new function prototype;
	(runlog_import_xml) new function prototype;
	(run_backup) new function prototype;
	(run_set_runlog) new function prototype.

	* serve.c:
	(cmd_team_get_archive) `run_get_record' function now has one more
	  parameter: pointer to store `is_imported' flag;
	(cmd_view) new `CMD_EXPORT_XML_RUNS' command is supported;
	(cmd_import_xml_runs) new function to handle `CMD_IMPORT_XML_RUNS'
	  request;
	(cmd_edit_run) editing of `is_imported' field is supported;
	  a run, which has `is_imported' flag set is never rejudged;
	(rejudge_run) never rejudge a run with `is_imported' flag set;
	(do_rejudge_all) never rejudge a run with `is_imported' flag set;
	(do_rejudge_problem) the same as above;
	(packet_handlers) `CMD_EXPORT_XML_RUNS', `CMD_IMPORT_XML_RUNS'
	  are handled;
	(check_sockets) the maximal size of an incoming packet is set to
	  256 KB.

	* serve_clnt.h:
	(serve_clnt_edit_run) new: parameter `is_imported' is added;
	(serve_clnt_import_xml_runs) new function prototype.

	* team.c:
	(initialize) bug: the default header style variable is initialized
	  correctly to "h2", not to "<h2>".

	* userlist-server.c:
	(cmd_clear_team_passwords) new: the function to handle the request
	  `CLEAR_TEAM_PASSWORDS';
	(cmd_table) an entry for `CLEAR_TEAM_PASSWORDS' added;
	(do_work) the maximal size of an incoming packet is increased to
	  256 KB.

	* userlist-server.c:
	(do_clear_team_passwords) a new function, which clears the
	  team passwords for all the non-privileged teams, registered
	  for the given contest.

	* userlist_clnt.h:
	(userlist_clnt_clear_team_passwords) new function prototype added;

	* userlist_proto.h:
	new userlist command added: `CLEAR_TEAM_PASSWORDS'.

	* users.c:
	(initialize) bug: self-reference URL is now constructed correctly:
	  the SERVER_PORT variable is not used as the port number is included
	  in `http_host' variable.

	* runlog_import.c, runlog_xml.c: Initial revision

2003-10-12  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-10-12  Alexander Chernov  <cher@ispras.ru>

	* makefile: log: checkers directory is traversed.

2003-10-12  Alexander Chernov  <cher@ispras.ru>

	* contests.c:
	(parse_contest) bug: `users_table_style', `register_table_style',
	  `users_verb_style' are properly initialized.

	* prepare.c:
	new global configuration variables: `info_dir', `info_sfx',
	  `tgz_dir', `tgz_sfx';
	new problem configuration variables: `info_dir', `info_sfx',
	  `tgz_dir', `tgz_sfx', `use_info', `use_tgz';
	(problem_init_func) `use_info', `use_tgz', `info_sfx', `tgz_sfx'
	  are initialized;
	(set_defaults) all the new configuration variables are supported.

	* prepare.h:
	(struct section_global_data) new fields `info_dir', `tgz_dir',
	  `info_sfx', `tgz_sfx', `max_cmd_length';
	(struct section_problem_data) new fields `use_info', `use_tgz',
	  `info_dir', `info_sfx', `tgz_dir', `tgz_sfx'.

	* run.c: "testinfo.h" is included;
	(struct testinfo) new fields `args', `comment', `team_comment' are
	  added. This fields are read from the .inf file, if `use_info'
	  configuration variable is set;
	(generate_report) test comment is printed, if available;
	  command line arguments are printed, if available;
	  the program input is printed before the program output;
	(generate_team_report) if team comments are defined for some failed
	  tests, they are printed after the summary;
	(run_tests) new configuration variables `use_info', `use_tgz',
	  `info_dir', `tgz_dir' are supported;
	  the program start name (argv[0]) is set to ../program, if use_tgz
	  mode is on;
	  test information is loaded, if use_info mode is on;
	  the tgz archive is extracted into the testing directory, if the
	  use_tgz mode is on;
	  command line arguments are prepared to be inserted into the log;
	  the checker is passed extra arguments, if use_info or use_tgz modes
	  are on;
	(check_config) the new configuration variables `info_dir', `tgz_dir'
	  are checked for consistency, if `use_info' or `use_tgz' modes
	  are activated.

	* makefile: subdirs_all: `checkers' directory is traversed;
	clean: `checkers' directory is traversed.

	* fileutl.h: copyright notice is updated;
	(remove_directory_recursively) new function prototype added.

	* files.make: testinfo.[ch] files added.

	* userlist-server.c:
	(attach_contest_extra) bug: wrong contest_extra array expansion
	  condition is fixed.

	* testinfo.h, testinfo.c: Initial revision

2003-10-06  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-10-06  Alexander Chernov  <cher@ispras.ru>

	* html.c: (new_write_user_runs) variant problems are supported;
	(do_write_public_log) variant problems are supported;
	(write_team_page) variant problems are supported;
	  problem deadlines are supported.

	* master_html.c: 
	(write_all_runs) variant problems are supported;
	(write_priv_source) variant problems are supported.

	* prepare.c:
	New global parameters: `disable_auto_testing', `show_deadline',
	  `variant_map_file';
	New problem parameters: `disable_auto_testing', `deadline',
	  `variant_num';
	(problem_init_func) `variant_num' and `disable_auto_testing' are
	  initalized to `undefined' (-1) value;
	(parse_date) new function to parse date from the string format to
	  time_t;
	(parse_variant_map) new function to parse the variant map and store
	  it in internal data structures;
	(find_variant) new function to find the correct variant for the team
	  and the problem;
	(set_defaults) all the new parameters are supported.

	* prepare.h: <time.h> is included;
	(struct section_global_data) new field `disable_auto_testing';
	  new field `show_deadline';
	  new field `variant_map_file';
	  new field `variant_map' which stores the parsed variant map;
	(struct section_problem_data) new field `disable_auto_testing';
	  new field `deadline';
	  new field `t_deadline' which stores the parsed deadline;
	  new field `variant_num';
	(find_variant) new function prototype added.

	* register.c:
	bug: incorrect initialization of static variable `head_style' is fixed;
	(display_register_new_user_page) one missed paragraph style generation
	  is added for greeting message.

	* run.c: (run_tests) new parameter `cur_variant' is added;
	  variant problems are supported;
	(do_loop) `variant' parameter is read from the run packet;
	  variant problems are supported;
	(process_default_testers)
	  variant problems are supported for consistency check;
	(check_config)
	  variant problems are supported for consistency check.

	* runlog.c, runlog.h:
	(run_get_param) one more parameter is added to return (via pointer)
	  to the caller function the user identifier for the given run.

	* serve.c:
	(is_valid_status) `RUN_ACCEPTED' is valid status even for ACM and
	  Kirov score systems (for cases whtn `disable_auto_testing' is set);
	(cmd_team_submit_run) variant problems are supported, if no variant
	  is defined for some problem and some team, the submission is
	  rejected;
	  `deadline' configuration variable is supported, the submission is
	  rejected after the deadline for the problem;
	  `disable_auto_testing' configuration variable is supported;
	(read_compile_packet) `run_get_param' now have one more parameter to
	  return the user identifier;
	  variant problems are supported: variant is passed to the `run'
	  program in the tester packet;
	(read_run_packet) `run_get_param' now have one more parameter to
	  return the user identifier.

	* teamdb.c:
	(teamdb_get_vintage) new function, which returns `vintage' parameter
	  of the user table, which is shared between `userlist-server' and
	  `serve' programs.

	* teamdb.h: 
	(teamdb_get_vintage) new function prototype added.

2003-10-02  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* users.c:
	(main) depending on the current setting of `locale_id' variable,
	  the contest name is printed either in english or in local language.

	* userlist_xml.c: copyright notice is updated;
	all the new fields are supported.

	* userlist_proto.h: definition of `USERLIST_UC_LOCKED' is added.

	* userlist.h:
	new XML elements: inst_en, instshort_en, fac_en, facshort_en,
	  surname_en, middlename_en, group_en, occupation_en, firstname_en,
	  country_en, city_en are added;
	new XML attribute locked is added;
	(struct userlist_member) new fields firstname_en, middlename_en,
	  surname_en, group_en, occupation_en, inst_en, instshort_en,
	  fac_en, facshort_en are added;
	(struct userlist_user) new fields is_locked, inst_en, instshort_en,
	  fac_en, facshort_en, city_en, country_en are added.

	* userlist.c: copyright notice is updated;
	new fields are handled in all the functions.

	* userlist-server.c:
	(cmd_team_login) new `locked' contest registration flag is handled;
	(cmd_team_check_cookie) new `locked' contest registration flag
	  is handled;
	(do_set_user_info) new userlist fields are handled;
	(do_list_users) variable header, paragraph and table style for
	  CGI-program `users' are handled;
	  either the local or english variants of institution and faculty
	  are chosen depending on `locale_id';
	(do_dump_database) new fields are handled;

	* teamdb.h: new `TEAM_LOCKED' flag is added.

	* teamdb.c: 
	(teamdb_get_flags) new `TEAM_LOCKED' flag is handled.

	* team.c:
	new static variables `head_style', `par_style' for variable header
	  and paragraph styles;
	(open_serve) variable header and paragraph styles are supported;
	(initialize) style variables are initialized from the contest
	  description;
	(open_userlist_server) variable header and paragraph styles are
	  supported;
	(permission_denied) the same as above;
	(fatal_server_error) the same as above;
	(authentificate) the same as above;
	(operation_status_page) the same as above;
	(show_clar_if_asked) the same as above;
	(request_source_if_asked) the same as above;
	(action_standings) the same as above;
	(request_report_if_asked) the same as above;
	(action_logout) the same as above;
	(display_team_page) the same as above;
	(main) the same as above.

	* register.c:
	new action `ACTION_REDISPLAY_EDIT_REGISTRATION_DATA' added;
	new static variables for the new userlist team fields are added;
	(field_desc) new descriptions of the userlist team fields are added;
	(member_field_descs) new descriptions of the userlist team member
	  fields are added;
	(initialize) style variables `head_style', `par_style', `table_style'
	  are initialized from the current contest description;
	(print_choose_language_button) variable header and paragraph styles
	  are supported;
	(read_user_info_from_server) the same as above;
	  new fields are read from the server;
	(authentificate) variable header and paragraph styles are supported;
	(display_edit_registration_data_page) variable header and paragraph
	  styles are supported;
	  the contest name is printed either in local language, or in english,
	  depending on the locale_id;
	(display_initial_page) variable header and paragraph styles are
	  supported;
	  `setlocale' is moved to the `main' function;
	  the text of registration notice for new users is changed;
	(display_login_page) variable header and paragraph styles are
	  supported;
	  `setlocale' is moved to the `main' function;
	(display_register_new_user_page) the same as above;
	(display_user_registered_page) the same as above;
	(display_main_page) variable header and paragraph styles are supported;
	  the contest name is printed either in local language, or in english,
	  depending on the locale_id;
	  `setlocale' is moved to the `main' function;
	(action_change_lang_at_initial) `setlocale' is moved to the `main'
	  function;
	(action_change_lang_at_register_new_user) the same as above;
	(action_change_lang_at_main_page) the same as above;
	(action_register_new_user) `setlocale' is moved to the `main'
	  function;
	  variable header and paragraph styles are supported;
	(action_login) the same as above;
	(action_logout) the same as above;
	(action_change_password) the same as above;
	(action_remove_member) variable header and paragraph styles are
	  supported;
	(action_register_for_contest) variable header and paragraph styles
	  are supported;
	  in case of registration error all the form variables are generated
	  to hidden html variables, and the "Back" button is generated;
	(main) `setlocale' call is added;
	  `ACTION_REDISPLAY_EDIT_REGISTRATION_DATA' is handled;
	  variable paragraph styles are supported.

	* master_html.c:
	(write_priv_users) new `Locked' flag of team registration is supported;
	  generation of the new `lock/unlock' button is added;
	(write_runs_dump) `L' is printed for locked teams.

	* master.c:
	(action_toggle_lock) a new function to lock/unlock team from the
	  current contest;
	(main) `ACTION_USER_TOGGLE_LOCK' is handled.

	* html.c:
	(new_write_user_clar) variable style of headers and paragraph
	  attributes is supported;
	(write_standings_header) variable style of headers and paragraph
	  attributes is supported;
	(do_write_kirov_standings) variable style of headers and paragraph
	  attributes is supported, when in client mode;
	(do_write_standings) the same as above;
	(write_team_page) variable style of headers and paragraph
	  attributes is supported.

	* edit-userlist.c:
	(user_descs) descriptions of new userlist team fields `is_locked',
	  `inst_en', `instshort_en', `fac_en', `facshort_en', `city_en',
	  `country_en' are added;
	(member_descs) descriptions of new userlist team member fields
	  `firstname_en', `middlename_en', `surname_en', `group_en',
	  `occupation_en', `inst_en', `instshort_en', `fac_en', `facshort_en';
	(get_contest_str) new `locked' attribute of the team registration
	  is supported;
	(display_user) new userlist fields are supported;
	  new 'L' (lock) command is supported for a contest registration;
	(user_match) new userlist team field are scanned for regexp search;
	(display_registered_users) new 'L' (lock) command is supported for
	  a contest registration.

	* copyright.c:
	Copyright notice is changed. Class "ejudge_copyright" is used for
	  text paragraphs, hyperlinks to FSF added.

	* contests.h:
	new XML elements added: name_en, users_head_style, users_par_style,
	  users_table_style, users_verb_style, register_head_style,
	  register_par_style, register_table_style, team_head_style,
	  team_par_style;
	new userlist.xml field names added: inst_en, instshort_en,
	  fac_en, facshort_en, city_en, country_en;
	new userlist.xml team member field names added: firstname_en,
	  middlename_en, surname_en, group_en, inst_en, instshort_en,
	  fac_en, facshort_en, occupation_en;
	(struct contest_desc) fields to store the new XML element values
	  are added.

	* contests.c:
	new XML elements added: name_en, users_head_style, users_par_style,
	  users_table_style, users_verb_style, register_head_style,
	  register_par_style, register_table_style, team_head_style,
	  team_par_style;
	new userlist.xml field names added: inst_en, instshort_en,
	  fac_en, facshort_en, city_en, country_en;
	new userlist.xml team member field names added: firstname_en,
	  middlename_en, surname_en, group_en, inst_en, instshort_en,
	  fac_en, facshort_en, occupation_en;
	(parse_contest) all the new XML elements are parsed;
	  default values for style elements are assigned.

	* client_actions.h:
	new action `USER_TOGGLE_LOCK' for the master CGI program.

	* cgi.h: copyright notice is updated;
	(cgi_get_param_num) new function prototype is added;
	(cgi_get_nth_param) new function prototype is added.

	* cgi.c: copyright notice is updated;
	(cgi_get_param_num) new function to get the total number of CGI
	  parameters;
	(cgi_get_nth_param) new function get the variable name and its
	  value by its number in the CGI variables array.

2003-09-29  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-09-29  Alexander Chernov  <cher@ispras.ru>

	* users.c:
	(initialize) calls of `client_not_configured' are updated, the
	  `locale_id' parameter is passed as 0;
	(information_not_available) calls of `client_put_header' are updated;
	(main) calls of `client_access_denied' are updated;
	  calls of `client_put_header' are updated.

	* team.c:
	(initialize) calls of `client_not_configured' are updated, the
	  `locale_id' parameter is passed as 0;
	(display_enter_password) calls of `client_put_header' are updated;
	(open_userlist_server) the same as above;
	(permission_denied) the same as above;
	(fatal_server_error) the same as above;
	(operation_status_page) the same as above;
	(show_clar_if_asked) the same as above;
	(request_source_if_asked) the same as above;
	(action_standings) the same as above;
	(request_report_if_asked) the same as above;
	(action_logout) the same as above;
	(main) calls of `client_access_denied' are updated;
	  calls of `client_check_server_status' are updated;
	  calls of `client_put_header' are updated.

	* register.c:
	(initialize) calls of `client_not_configured' are updated with
	  `locale_id' parameter as 0;
	(read_user_info_from_server) calls of `client_put_header' are
	  updated;
	(authentificate) call of `client_put_header' is updated;
	(display_edit_registration_data_page) call of `client_put_header'
	  is updated;
	(display_initial_page) call of `client_put_header' is updated;
	  `locale_id' hidden parameter is passed in the login form;
	(display_login_page) call of `client_put_header' is updated;
	(display_register_new_user_page) the same as above;
	(display_user_registered_page) the same as above;
	(display_main_page) the same as above;
	(action_register_new_user) the same as above;
	(action_login) the same as above;
	(action_logout) the same as above;
	(action_change_password) the same as above;
	(action_remove_member) the same as above;
	(action_register_for_contest) `user_show_all' parameter is initialized
	  to 0;
	  calls of `client_put_header' are updated;
	(main) calls of `client_access_denied' are updated.

	* master.c:
	(display_enter_password) call of `client_put_header' is updated -
	  parameter `locale_id' is passed value 0;
	(open_userlist_server) the same as above;
	(permission_denied) the same as above;
	(fatal_server_error) the same as above;
	(operation_status_page) the same as above;
	(view_source_if_asked) the same as above;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(action_dump_runs) the same as above;
	(action_dump_users) the same as above;
	(action_dump_standings) the same as above;
	(confirm_reset_if_asked) the same as above;
	(confirm_update_standings) the same as above;
	(confirm_regenerate_register_if_asked) the same as above;
	(confirm_regenerate_if_asked) the same as above;
	(confirm_rejudge_all) the same as above;
	(confirm_squeeze) the same as above;
	(confirm_continue) the same as above;
	(confirm_clear_run) the same as above;
	(do_generate_register_passwords_if_asked) the same as above;
	(do_generate_passwords_if_asked) the same as above;
	(view_clar_if_asked) the same as above;
	(log_out_if_asked) the same as above;
	(initialize) calls of `client_not_configured' are updated, new
	  `locale_id' parameter is passed as 0;
	(main) calls of `client_access_denied' are updated, new `locale_id'
	  parameter is passed as 0;
	  calls of `client_check_server_status' are updated, new `locale_id'
	  parameter is passed as 0;
	  calls of `client_put_header' are updated in the same manner.

	* clntutil.h:
	(client_access_denied) new parameter `locale_id' is added as last;
	(client_not_configured) the same as above;
	(client_check_server_status) the same as above;
	(client_put_header) new parameter `locale_id' is added.

	* clntutil.c:
	(process_template) new parameter `locale_id' is added. This parameter
	  is used in new `%L' format substitution;
	(client_put_header) new parameter `locale_id' is added and passed
	  to `process_template';
	(client_put_footer) `locale_id' as 0 is passed to `process_template';
	(client_access_denied) new parameter `locale_id' is added and
	  passed to `process_template';
	(client_not_configured) the same as above;
	(client_check_server_status) the same as above.

2003-09-21  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(read_compile_packet) `RUN_CHECK_FAILED' error code from the compile
	  program is handled properly.

	* run.c: (run_tests) new problem configuration variable
	  `checker_real_time_limit' which sets time limit for checker
	  is supported.

	* prepare.h:
	(struct section_global_data) new fields `checker_real_time_limit'
	  and `compile_real_time_limit';
	(struct section_problem_data) new field `checker_real_time_limit';
	(struct section_language_data) new field `compile_real_time_limit'.

	* prepare.c:
	new global configuration variables: `checker_real_time_limit',
	  `compile_real_time_limit';
	new problem configuration variable: `checker_real_time_limit';
	new language configuration variable: `compile_real_time_limit';
	(params) an initializing function is added to `language' section;
	(global_init_func) new global configuration variables are initialized
	  with -1;
	(language_init_func) new function to initialize the language
	  section;
	(problem_init_func) initialization of the new problem configuration
	  variable in added;
	(set_defaults) the new configuration variables are handled.

	* compile.c: copyright notice is slightly changed;
	(do_loop) new configuration variable `compile_real_time_limit' which
	  sets time limit for compilation is supported.

2003-09-20  Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h:
	new command request `ULS_GENERATE_PASSWORDS' is added.

	* userlist_clnt.h:
	(userlist_clnt_generate_team_passwd) a new parameter `cmd' is added.

	* userlist-server.c:
	(do_generate_passwd) new function, which generates random register
	  passwords;
	(cmd_generate_register_passwords) a new function to handle
	  `ULS_GENERATE_PASSWORDS' request;
	(do_generate_team_passwd) invalid usage of `is_privileged_user'
	  is fixed;
	(cmd_table) entry for `ULS_GENERATE_PASSWORDS' is added.

	* teamdb.h, teamdb.c:
	(teamdb_regenerate_paswords) function is removed as no longer used.

	* prepare.c:
	(set_defaults) `test_score_list' problem configuration variable is
	  no longer inherited.

	* master.c:
	(print_regenerate_reg_button) new function to print "Regenerate
	  register user passwords" button;
	(confirm_regenerate_register_if_asked) new function;
	(do_generate_register_passwords_if_asked) new function;
	(do_generate_passwords_if_asked) interface to
	  `userlist_clnt_generate_team_passwd' changed;
	(main) new actions `GENERATE_REG_PASSWORDS_1' and
	  `GENERATE_REG_PASSWORDS_2' are supported;
	  "regenerate passwords" and "regenerate register passwords" buttons
	  are moved to a separate line.

	* client_actions.h:
	new actions `GENERATE_REG_PASSWORDS_1' and `GENERATE_REG_PASSWORDS_2'
	added.

2003-09-15  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(cmd_priv_command_0) command `SRV_CMD_DURATION' is handled correctly.
	  The command is enabled if the contest is already started.

2003-09-06  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(set_defaults) problem parameters `input_file' and `output_file' are
	  expanded with `sformat_message' when inherited.

2003-08-01  Alexander Chernov  <cher@ispras.ru>

	* cdeps.c: copyright notice changed.

2003-07-11  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* l10n.c:
	(l10n_prepare) bug fixed: parameter name shadowed the name of the
	  global variable.

	* userlist-server.c: 
	(cmd_do_login) incoming packet check is improved.

2003-07-11  Alexander Chernov  <cher@ispras.ru>

	* makefile: general cleanup.
	o `libcommon.a' library is used in all utilities instead of explicit
	  listing of all used .c files;
	o `filter_test' is removed from the list of targets;
	o all dummy rules with `.exe' suffix are removed;
	o rules for unused utilities `submit', `clar', `mkpasswd',
	  `make-teamdb', `make-teamdb-inet', `send-passwords' are removed;
	o rule for `libcommon.a' is added.

	* files.make:
	new variable `COMMON_CFILES' is added and many C files which are
	  used in several utilities, are moved to this variable from CFILES.

	* edit-userlist.c:
	(generic_menu) `possibly uninitialized variable' warning (false) fixed;
	(display_user_menu) the same warning is fixed.

	* run.c:
	(do_loop) `start_env' array is freed only if the tester is a temporary
	  tester.

2003-07-10  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po, ejudge.ru_RU.KOI8-R.po:
	*** empty log message ***

	* files.make: added files: `copyright.[ch]', `l10n.[ch]'.

	* html.c: "copyright.h" included;
	(process_template) new function to generate html headers and footers,
	  performing %C, %T, %H, %R substitutes;
	(write_standings_header) `process_template' is used to generate header;
	  the current time is always used for overall standings in virtual
	  mode;
	(do_write_standings) css classes `st_place', `st_team', `st_prob',
	  `st_total', `st_pen', `st_time' are added to the generated html;
	  `process_template' is used to generate html footer;
	(write_team_page) "</a>" is generated for each "<a name="XXX">".

	* l10n.c: <stdio.h> is included.

	* makefile: (SERVE_CFILES) `copyright.c', `l10n.c' added;
	(M_CFILES) `copyright.c' added;
	(T_CFILES) `copyright.c', `l10n.c' added;
	(REG_CFILES) the same;
	(UL_CFILES) `l10n.c' added;
	(US_CFILES) `copyright.c', `l10n.c' added;
	(install) `judge' (hardlink to `master') is installed.

	* master.c:
	(display_enter_password) use of `client_put_header' updated;
	  use of `client_put_footer' updated;
	(open_userlist_server) the same as above;
	(permission_denied) the same as above;
	(fatal_server_error) the same as above;
	(operation_status_page) the same as above;
	(view_source_if_asked) the same as above;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(action_dump_runs) the same as above;
	(action_dump_users) the same as above;
	(action_dump_standings) the same as above;
	(confirm_reset_if_asked) the same as above;
	(confirm_update_standings) the same as above;
	(confirm_regenerate_if_asked) the same as above;
	(confirm_rejudge_all) the same as above;
	(confirm_squeeze) the same as above;
	(confirm_continue) the same as above;
	(confirm_clear_run) the same as above;
	(do_generate_passwords_if_asked) the same as above;
	(view_clar_if_asked) the same as above;
	(log_out_if_asked) the same as above;
	(open_serve) use of `client_put_footer' updated;
	(view_standings_if_asked) the same as above;
	(main) contests_check_{master,judge,observer}_ip function is called
	  depending on the privilege level;
	  use of `client_put_header', `client_put_footer' updated.

	* register.c: "l10n.h", "fileutl.h" are included;
	new global variables `header_txt', `footer_txt', `header_len',
	  `footer_len';
	(initialize) header and footer for html output are loaded;
	(set_locale_by_id) function removed;
	(read_user_info_from_server) use of `client_put_header' updated;
	(authentificate) the same as above;
	(display_edit_registration_data_page) the same as about;
	  `l10n_setlocale' is used instead of `set_locale_by_id';
	  contest_id is added to the generated "logout" URL;
	(display_initial_page) use of `client_put_header' updated;
	  `l10n_setlocale' is used instead of `set_locale_by_id';
	(display_login_page) the same as above;
	(display_register_new_user_page) the same as above;
	(display_user_registered_page) the same as above;
	(display_main_page) the same as above;
	  contest_id is added to the generated "logout" URL;
	(action_change_lang_at_initial) `exit' added at the end of func.;
	  `l10n_setlocale' is used instead of `set_locale_by_id';
	(action_change_lang_at_register_new_user) the same as above;
	(action_change_lang_at_main_page) the same as above;
	(action_register_new_user) the same as above;
	  use of `client_put_header' updated;
	(action_login) the same as above;
	(action_change_password) the same as above;
	(action_remove_member) use of `client_put_header' updated;
	  `exit' is used instead of `return';
	(action_register_for_contest) the same as above;
	(main) use of `client_put_footer' updated.

2003-07-09  Alexander Chernov  <cher@ispras.ru>

	* serve.c: "l10n.h" is included;
	(setup_locale) is removed;
	(update_standings_file) `l10n_setlocale' is used instead of
	  `setup_locale';
	(update_public_log_file) the same as above;
	(cmd_team_login) the same as above;
	(cmd_master_page) the same as above;
	(cmd_priv_standings) the same as above;
	(cmd_team_show_item) the same as above;
	(main) `l10n_prepare' function is used.

	* team.c: "l10n.h" is included;
	new static variables `header_txt', `footer_txt', `header_len',
	  `footer_len';
	(setup_locale) function is removed;
	(open_serve) use of `client_put_footer' updated;
	(initialize) the header and footer files are loaded using
	  contest's `team_header_file' and `team_footer_file' parameters;
	(display_enter_password) use of `client_put_header',
	  `client_put_footer' updated;
	(open_userlist_server) the same as above;
	(permission_denied) the same as above;
	(fatal_server_error) the same as above;
	(authentificate) `l10n_setlocale' used of `setup_locale';
	(operation_status_page) use of `client_put_header',
	  `client_put_footer' updated;
	(show_clar_if_asked) the same as above;
	(request_source_if_asked) the same as above;
	(action_standings) the same as above;
	(request_report_if_asked) the same as above;
	(action_logout) the same as above;
	  `locale_id' and `contest_id' are added to "login again" hyperlink;
	(main) `l10n_prepare', `l10n_setlocale' are used;
	   use of `client_put_header', `client_put_footer' updated;
	  </a> tag is generated for <a name="xxx"> tags.

	* userlist-server.c: "l10n.h" is included;
	(setup_locale) is removed, `l10n_setlocale' from `l10n.h' is used
	  instead;
	(cmd_register_new) `l10n_setlocale' is used instead of `setup_locale';
	(do_list_users) the same as above;
	(main) `l10n_prepare' is used.

	* users.c: "l10n.h" included;
	(set_locale_by_id) removed, and `l10n_prepare', `l10n_setlocale'
	  functions are used instead;
	(put_http_header) function removed, `client_put_header' is used
	  instead;
	(put_header) function removed, `client_put_header' is used instead;
	(information_not_available) `header_txt', `footer_txt' parameters
	  added;
	  use of `client_put_header', `client_put_footer' updated;
	(main) `l10n_prepare', `l10n_setlocale' functions are used instead
	  of `set_locale_by_id';
	  use of `client_put_header', `client_put_footer' updated;
	  use of `information_not_available' updated;
	  contest's `header_file', `footer_file' parameters are renamed
	  to `users_header_file', `users_footer_file';
	  use of `put_http_header', `put_header' removed;
	  use of `client_put_copyright' removed.

	* clntutil.h: (client_put_copyright) function removed;
	(client_put_header) many new parameters added;
	(client_put_footer) `out' and `template' parameters added.

	* clntutil.c: "version.h" is no longer included;
	"copyright.h" is included;
	(process_template) a new function to process html header and footer
	  template. It handles "%C", "%T", "%H", "%R" format specifiers;
	(client_put_copyright) function is removed;
	(client_put_header) many parameters added, and the new
	  `process_template' function is used to perform output;
	(client_put_footer) `out' and `template' parameters are added, and
	  `process_template' function is used to perform output;
	(client_access_denied) usage of `client_put_header' and
	  `client_put_footer' is corrected;
	(client_not_configured) the same as above;
	(client_check_server_status) the same as above;
	  also the closing </a> is generated for <a name="XXX">.

	* contests.h, contests.c:
	elements <header_file>, <footer_file> are renamed to
	<users_header_file>, <users_footer_file>;
	new elements <register_header_file>, <register_footer_file>,
	<team_header_file>, <team_footer_file> are added.

	* copyright.h, copyright.c: Initial revision

2003-07-08  Alexander Chernov  <cher@ispras.ru>

	* l10n.h, l10n.c: Initial revision

2003-07-01  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_cfg.c: `userdb_file' is a new name for `file' element;
	`socket_path' is a new name for `socket' element;
	`l10n_dir' attribute is removed, but `l10n_dir' element is added
	  instead;
	`user', `path' attributes are removed.

	* users.c, register.c:
	added element tag `l10n_dir' and removed attribute `l10n_dir';
	(err_dupl_elem) a new function to display XML configuration file error;
	(err_attr_not_allowed) the same as above;
	(err_empty_elem) the same as above;
	(err_nested_not_allowed) the same as above;
	(err_invalid_elem) the same as above;
	(err_invalid_attn) the same as above;
	(handle_final_tag) new function to check final elements;
	(parse_config) `l10n_dir' attribute is removed;
	  new error reporting functions `err_*' (see above) are used;
	  parsing of `socket_path' and `contests_dir' now uses
	  `handle_final_tag' function;
	  `l10n_dir' element is handled.

2003-06-30  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* html.c:
	(print_nav_buttons) typo is fixed in ACTION_STANDINGS constant.

	* VERSION: *** empty log message ***

	* team.c: typo is fixed in ACTION_STANDINGS constant;
	(print_standings_button) `contest_id_str' is added to the generated
	  URL.

	* client_actions.h: typo is fixed in ACTION_STANDINGS constant.

	* team.c:
	`server_lag', `standings_url', `problems_url' parameters removed;
	`contests_dir' is a new name for `contests_path' parameter;
	(hyperref) new parameter `extra_args', which is embedded into the
	  generated URL;
	(parse_contest_id) new function to parse `contest_id' CGI variable;
	(parse_name_contest_id) new function to parse contest_id from
	  the program name (e.g. team-19);
	(check_config_exist) new function;
	(initialize) the contest_id is extracted either from CGI variables,
	  or from program name, or from configuration file. The exact rules
	  are described in the source file;
	  `contests_set_directory', `contests_get' functions are used
	    instead of `parse_contests_xml';
	(read_state_params) if contest_id is read from the CGI variables,
	  it is embedded into form hidden variables;
	  `contest_id_str' has value "contest_id=XXX", if the contest_id
	  is read from CGI variables, and "" (empty string) otherwise;
	(display_enter_password) if contest_id is read from the CGI variables,
	  it is embedded into form hidden variables;
	(authentificate) `contest_id_str' is passed as `extra_args' to
	  `hyperref' function;
	(operation_status_page) the same as above;
	(print_refresh_button) `contest_id_str' is embedded into generated URL;
	(print_logout_button) the same as above;
	(display_team_page) `contest_id_str' is passed as `extra_args'
	  to `serve_clnt_team_page';
	(main) `server_lag' is always set to DEFAULT_SERVER_LAG, unless
	  `client_ignore_time_skew' contest parameter is not set;
	  `contests_check_team_ip' function is used to check the IP address;
	  `problems_url' and `standings_url' are taken from the contest
	  configuration file rather than from the team utility configuration
	  file.

	* serve.c:
	GLOBAL CHANGE: command list '-S' option is supported. This option
	  allows passing an already opened serve socket file descriptor
	  to the program. It is employed by super-serve utility.
	  new parameter `inactivity_timeout' is supported in the `-S' mode;
	(check_cnts_caps) new function, which checks, whether a given
	  user has the given capability bit for the contest;
	(cmd_team_list_runs) removed because it is not used anymore;
	(cmd_team_page) `extra_args' parameter is extracted from the
	  protocol packet and passed further to `write_team_page';
	(cmd_master_page) `extra_args' parameter is extracted from the
	  protocol packet and passed down to `write_master_page';
	(cmd_priv_standings) `extra_args' parameter is extracted from the
	  protocol packet and packet down to `write_priv_standings';
	  OPCAP_VIEW_STANDINGS capability is checked;
	(cmd_view) `extra_args' parameter is extracted from the protocol
	  packet and packet down to the html generation functions;
	  OPCAP_VIEW_SOURCE capability is required to view the source;
	  OPCAP_VIEW_REPORT capability is required to view the report;
	  OPCAP_VIEW_CLAR capability is required to view the clar;
	  OPCAP_LIST_CONTEST_USERS capability is required to view the users;
	  OPCAP_DUMP_RUNS capability is required to view the runs dump;
	  OPCAP_DUMP_STANDINGS capability is required to view the raw
	    standings;
	(cmd_message) OPCAP_NEW_MESSAGE capability is required to post
	  a message;
	  OPCAP_REPLY_MESSAGE capability is required to answer a message;
	(cmd_userlist_cmd) removed, since all such commands are now send
	  to userlist-server directly;
	(cmd_priv_command_0) OPCAP_CONTROL_CONTEST capability is required
	    for SRV_CMD_SUSPEND, SRV_CMD_RESUME, SRV_CMD_SET_JUDGING_MODE,
	    SRV_CMD_UPDATE_STAND, SRV_CMD_RESET, SRV_CMD_START, SRV_CMD_STOP,
	    SRV_CMD_SCHEDULE, SRV_CMD_DURATION, SRV_CMD_SQUEEZE_RUNS,
	    SRV_CMD_CLEAR_RUN, SRV_CMD_CONTINUE;
	  OPCAP_EDIT_RUN capability is required for SRV_CMD_REJUDGE_ALL,
	    SRV_CMD_REJUDGE_PROBLEM;
	  SRV_CMD_TOGGLE_VISIBILITY, SRV_CMD_TOGGLE_BAN commands are removed;
	(packet_handlers) SRV_CMD_LIST_RUNS, SRV_CMD_LIST_CLARS,
	  SRV_CMD_GEN_PASSWORDS, SRV_CMD_TOGGLE_VISIBILITY, SRV_CMD_TOGGLE_BAN,
	  SRV_CMD_DUMP_USERS commands are removed;
	(create_socket) if socket is passed from the command line, the
	  function returns immediately;
	(check_sockets) `last_activity_time' is updated on each arrived packet;
	(do_loop) `last_activity_time' is initialized;
	  `inactivity_timeout' global parameter is supported;
	(main) `-S<socket_num>' option is supported.

	* register.c:
	This file is almost completely rewritten. Too many changes to list them
	  all verbosely. The short summary is listed below:
	o copyright notice is updated;
	o the code is rearranged to follow `State-Transition' model;
	o `contests_dir' parameter is a new name for `contests_path'
	  configuration parameter;
	o the contest_id is extracted either from CGI variables, or from
	  the program name (e. g. register-16), or from configuration file.
	  The exact rules are in the source file.
	o Login and Password are not passed in hidden variables. Instead
	  the session identifier `sid' is passed.
	o Hyperrefs are used where possible instead of forms.
	o Cookies are not used, session id's, embedded into forms and ulrs
	  are used instead.

	* userlist-server.c:
	The file is heavily reworked. The global changes:
	  o CONN_ERR, CONN_INFO, CONN_BAD macros are used to log events;
	  o user capabilities are supported for all operations;
	  o new contests operation interface is used (contests_set_directory,
	    contests_get, contests_get_list instead of direct XML loading and
	    manipulation);
	  o all packet structures, which have variable length (i. e. conveys
	    strings, such as login, password, etc), now has space for
	    the terminating \0 characters allocated in the structure itself,
	    i. e. instead of `data[0]' field they have, for example,
	    `data[2]' field, so the structure size counting in all functions
	    is updated accordingly;
	  o some minor parameters renaming: `pack' -> `data',
	    `len' -> `pkt_len' in order to uniform all the protocol
	    handling functions;
	  o all the functions, which handle protocol request are now named
	    with `cmd_' prefix;
	(struct contest_extra) `desc' field is removed, since the pointer
	  to contest structure may change unexpectedly;
	global `contests' variable is removed;
	new global variable `contest_extras_size' to store the number of
	  contest extra information records;
	(attach_contest_extra) new parameter `cnts' added to eliminate
	  repetitive loading of contest information;
	(detach_contest_extra) memory is freed correctly, updated to the
	  new interface;
	(update_userlist_table) updated to the new interface;
	(get_uid_caps) a new function, which looks for an entry in capability
	  list by the user id. This function MUST be optimized for speed.
	(is_db_capable) a new function, which checks, whether the given user
	  has the given capability bit for the user database;
	(is_cnts_capable) a new function, which checks, whether the given
	  user has the given capability bit for the given contest;
	(is_privileged_user) a new function, which checks, whether the given
	  user is a privileged user;
	(cmd_register_new) this is the new name for `create_newuser';
	  updated for the changes described above;
	(cmd_do_login) this is the new name for `login_user';
	  updated for the changes described above;
	(cmd_team_login) this is the new name for `login_team_user';
	  updated for the changes described above;
	(cmd_priv_login) this is the new name for `cmd_login_priv_user';
	  updated for the changes described above;
	(cmd_check_cookie) this is the new name for `login_cookie';
	  updated for the changes described above;
	(cmd_team_check_cookie) this is the new name for `login_team_cookie';
	  updated for the changes described above;
	(cmd_priv_check_cookie) this is the new name for `login_priv_cookie';
	  updated for the changes described above;
	(cmd_do_logout) this is the new name for `logout_user';
	  updated for the changes described above;
	(cmd_get_user_info) this is the new name for `get_user_info';
	  updated for the changes described above;
	(cmd_priv_get_user_info) a new function to perform a privileged
	  request ULS_PRIV_GET_USER_INFO;
	(cmd_list_all_users) updated for the changes described above;
	(cmd_get_user_contests) this is the new name for `get_user_contests';
	  updated for the changes described above;
	(do_set_user_info) a new function to set all user info fields. This
	  function is split from cmd_set_user_info in order to use it in both
	  privileged and unpriveleged versions;
	  updated for the changes described above;
	(cmd_set_user_info) this is new name for `set_user_info';
	  this function checks the input packet and passes it to
	  `do_set_user_info';
	(cmd_set_passwd) this is new name for `set_passwd';
	  updated for the changes described above;
	(cmd_team_set_passwd) this is new name for `team_set_password';
	  updated for the changes described above;
	(cmd_register_contest) this is new name for `register_for_contest';
	  updated for the changes described above;
	(cmd_priv_register_contest) a new function to perform a privileged
	  operation ULS_PRIV_REGISTER_CONTEST;
	(cmd_remove_member) this is a new name for `remove_member';
	  updated for the changes described above;
	(cmd_pass_fd) this is a new name for `pass_descriptors';
	  updated for the changes described above;
	(do_list_users) new parameter `d' is added in order not to load
	  contest description repeatedly;
	  updated for the changes described above;
	(do_dump_database) new parameter `d' is added in order not to reload
	  contest description;
	  updated for the changes described above;
	(cmd_list_users) this is a new name for `list_users';
	  updated for the changes described above;
	(cmd_dump_database) this is a new name for `action_dump_user_database';
	  updated for the changes described above;
	(cmd_map_contest) updated for the changes described above;
	(cmd_admin_process) this protocol command now only sets the user_id
	  to the user_id of the process, which originates the connection;
	  updated for the changes described above;
	(do_generate_team_passwd) password for privileged users is not changed;
	(cmd_generate_team_passwords) this is a new name for
	  `cmd_generate_team_passwd';
	  updated for the changes described above;
	(cmd_get_contest_name) updated for the changes described above;
	(cmd_edit_registration) updated for the changes described above;
	(cmd_delete_field) updated for the changes described above;
	(cmd_edit_field) updated for the changes described above;
	(cmd_add_field) updated for the changes described above;
	(cmd_get_uid_by_pid) updated for the changes described above;
	(process_packet) the huge switch is removed with lookup in the
	  function table `cmd_table';
	(do_work) timeout for clients is not enforced;
	(main) `contests_dir' is a new name for previous `contests_path'
	  configuration parameter;
	  `contests_set_directory' is used instead of `parse_contests_xml'.

2003-06-29  Alexander Chernov  <cher@ispras.ru>

	* users.c: copyright notice is updated;
	<sys/types.h>, <sys/stat.h>, <unistd.h>, <fcntl.h> are included;
	TG_CONTESTS_DIR is a new name for TG_CONTESTS_PATH, XML element
	  contests_dir is a new name for contests_path;
	(parse_config) XML elements are renamed (see above);
	`contests' global variable is removed;
	(read_contest_id) function removed;
	(parse_contest_id) new function, which parses `contest_id' CGI
	  variable;
	(parse_name_contest_id) new function, which extracts contest_id from
	  the CGI program name;
	(check_config_exist) new function;
	(initialize) contest_id is extracted either from the CGI program name,
	  or from `contest_id' CGI variable;
	  configuration file name is constructed according to new rules
	  (see the comments in the code);
	  parse_contests_xml is no longer used;
	  `self_url' default CGI name is now /cgi-bin/users;
	(information_not_available) a new function to display this error;
	(main) `contests_set_directory', `contests_get' are used to access
	  the contest information;
	  user ip is checked with `contests_check_users_ip';
	  other code rearrangements.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_cfg.h: copyright notice is updated;
	"opcaps.h" is included;
	(struct userlist_cfg_admin_proc) removed;
	(struct userlist_cfg) `admin_processes' field removed;
	  `capabilities', `serve_path' fields added;
	  `contests_dir' is a new name for `contests_path'.

	* userlist_cfg.c: copyright notice is updated;
	TG_CONTESTS_DIR is a new name for TG_CONTESTS XML element;
	removed XML element contants: TG_ADMIN_PROCESSES, TG_ADMIN_PROCESS;
	new XML element contants: TG_CAPS, TG_CAP, TG_SERVE_PATH;
	new XML attribute constant: AT_LOGIN;
	(tree_alloc_func) updated according to change in XML elements;
	(parse_processes) removed as no longer used;
	(parse_capabilities) new function to parse <caps> XML element;
	(userlist_cfg_parse) updated according to changes in XML elements;
	(fmt_func) updated according to changes in XML elements.

	* userlist.h: copyright notice is updated.

	* serve_clnt.h: 
	(serve_clnt_team_page) parameter `extra_args' added;
	(serve_clnt_master_page) parameter `extra_args' added;
	(serve_clnt_standings) parameter `extra_args' added;
	(serve_clnt_view) parameter `extra_args' added.

	* runlog.h: copyright notice is updated;
	(run_clear_variables) prototype added.

	* runlog.c: copyright notice is updated;
	(run_clear_variables) new function, which is completely releases
	  the resources.

	* run.c:
	(filter_testers) check, that the total number of (non-default)
	  testers is > 0 is removed;
	(run_tests) new variable `arg0_path', which contains the path
	  to the program under test, which is passed to execve syscall,
	  this path contains only the current directory (./), not
	  the full directory path;
	(do_loop) in case of default tester, it is specialized using
	  `prepare_tester_refinement' function, and then passed to
	  `run_tests';
	(process_default_testers) new function to check default tester
	  settings;
	(check_config) checking of global settings is moved out of the
	  tester loop;
	  added a separate loop for testing problem settings;
	  default tester settings are also checked.

	* super-serve.c: completed.

	* protocol.h:
	removed commands: SRV_CMD_LIST_RUNS, SRV_CMD_LIST_CLARS,
	  SRV_CMD_GEN_PASSWORDS, SRV_CMD_TOGGLE_VISIBILITY,
	  SRV_CMD_TOGGLE_BAN, SRV_CMD_DUMP_USERS;
	(struct prot_serve_pkt_team_page) new field `extra_args_len';
	  `data' now has size 3;
	(struct prot_serve_pkt_master_page) new field `extra_args_len';
	  `data' now has size 4;
	(struct prot_serve_pkt_standings) new field `extra_args_len';
	  `data' now has size 3;
	(struct prot_serve_pkt_view) new field `extra_args_len';
	  `data' now has size 3.

	* prepare.h:
	(struct section_global_data) new field `inactivity_timeout';
	  `contests_dir' is a new name for `contests_path';
	  `contests' global variable is removed;
	(prepare_tester_refinement) new function prototype;
	(create_tester_dirs) new function prototype.

	* prepare.c: MAX_PROBLEM is increased to 100;
	`contests' global variable is removed;
	new global parameter `inactivity_timeout' for `serve' utility with
	  default value 120 sec;
	global parameter `contests_path' is renamed to `contests_dir';
	(set_defaults) `contests_dir' is used instead of `contests_path';
	  `contests_set_directory' and `contests_get' are used instead of
	  `parse_contest_xml' and direct access to the contests array;
	  `inactivity_timeout' is handled;
	  default testers are not processed in PREPARE_RUN mode, this is
	  now done in `prepare_tester_refinement' function;
	(create_dirs) default testers are ignored in PREPARE_RUN mode, this
	  is now done in `create_tester_dirs' function;
	(prepare_tester_refinement) a new function, which performs all
	  inheritance and default setting for a default tester with
	  the given problem_id;
	(create_tester_dirs) a new function, which creates necessary
	  directories for a tester in PREPARE_RUN mode;
	(print_tester) `check_dir' is printed.

	* master_html.c:
	(html_start_form) `extra_args' parameter is added (but not used);
	  `hidden_vars' parameter is used in form header generation;
	(html_hyperref) `extra_args' parameter is added, the parameter's
	  value is added to the generated hyperref;
	(print_nav_buttons) `extra_args' parameter is added and passed
	  further to `html_start_form' and `html_hyperref' functions;
	(write_all_runs) `extra_args' parameter is added and passed
	  further to `html_start_form', `html_hyperref' and
	  `print_nav_buttons' functions;
	(write_all_clars) the same as above;
	(write_master_page) `extra_args' parameter is added and passed
	  further to `write_all_runs' and `write_all_clars' functions;
	(write_priv_standings) `extra_args' parameter is added and passed
	  further to `print_nav_buttons' function;
	(write_priv_report) the same as above;
	(write_priv_source) `extra_args' parameter is added and passed
	  further to `print_nav_buttons' and `html_start_form' functions;
	(write_priv_clar) the same as above;
	(write_priv_users) the same as above.

	* master.c: GLOBAL CHANGE: contest_id CGI parameter is honored;
	<fcntl.h> file is included;
	`contest_path' configuration parameter is renamed to `contests_dir';
	(read_state_params) if `contest_id' was set from CGI variables
	  add setting of `contest_id' CGI parameter to all form headers
	  and hidden variables;
	(make_self_url) "SERVER_PORT" environment variable is read and used;
	(hyperref) new parameter `contest_id_str' is accepted and added
	  to the generated URL;
	(display_enter_password) `contest_id' is added to the generated form
	  header, if this variable was read from CGI parameters;
	  default sid_mode is URL;
	(authentificate) use of `hyperref' function is updated;
	(print_refresh_button) `contest_id_str' variable is used to generate
	  URLs;
	(print_standings_button) the same as above;
	(print_teamview_button) the same as above;
	(print_logout_button) the same as above;
	(print_dump_runs_button) the same as above;
	(print_dump_users_button) the same as above;
	(print_dump_standings_button) the same as above;
	(operation_status_page) use of `hyperref' is updated;
	(view_source_if_asked) `contest_id_str' is passed to `serve_clnt_view'
	  as `extra_args' parameter;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(action_dump_runs) the same as above;
	(action_dump_standings) the same as above;
	(view_clar_if_asked) the same as above;
	(action_dump_users) the request is sent directly to `userlist-server'
	  instead of `serve';
	(do_generate_passwords_if_asked) the same as above;
	(action_toggle_visibility) the same as above;
	(action_toggle_ban) the same as above;
	(send_msg_if_asked) sending a message to specified login or user_id
	  is supported;
	(parse_contest_id) new function to parse `contest_id' CGI parameter;
	(parse_name_contest_id) new function to extract `contest_id'
	  from the name of CGI script;
	(check_config_exist) new function;
	(initialize) `contest_id' parameter is extracted either from script
	  name, or from CGI parameters. See the comment in the code for
	  further details;
	  `contests_set_directory', `contests_get' functions are used to
	  load information about contest;
	  `root_dir' is copied from the contest XML description;
	(view_standings_if_asked) `contest_id_str' is passed to
	  `serve_clnt_standings' as `extra_args' parameter;
	(display_master_page) `contest_id_str' is passed to
	  `serve_clnt_master_page' as `extra_args' parameter;
	(main) `contests_check_master_ip' is used;
	  if contest's `client_ignore_time_skew' flag is set, lag is set to
	  0 (infinity) value;
	  fields "To user id" and "To user login" added to message composition.

	* makefile:
	opcaps.c added to the list of the source files for the following
	  utilities: compile, serve, run, master, team, register,
	  userlist-server, users, edit-userlist, filter_test;
	new variable SS_CFILES for the list of super-serve .c files;
	new variable CU_CFILES for the list of clean-users .c files;
	`super-serve' and `clean-users' added to the list of targets;
	new rule to link super-serve utility;
	new rule to link clean-users utility.

	* html.h: 
	(new_write_user_runs) new parameter `extra_args' added;
	(new_write_user_clars) the same as above;
	(write_team_page) the same as above;
	(write_master_page) the same as above;
	(write_priv_standings) the same as above;
	(write_priv_source) the same as above;
	(write_priv_report) the same as above;
	(write_priv_clar) the same as above;
	(write_priv_users) the same as above;
	(html_start_form) the same as above;
	(html_hyperref) the same as above.

	* html.c:
	(new_write_user_runs) new parameter `extra_args', which is passed
	  further to hyperref generation and form generation;
	(new_write_user_clars) new parameter `extra_args', which is passed
	  further to hyperref generation and form generation;
	(print_nav_buttons) new parameter `extra_args';
	(write_team_page) new parameter `extra_args'.

	* filter_scan.lex: copyright notice is updated;
	"EM" run result is handled.

	* files.make:
	removed files: serve_clnt/list_runs.c, serve_clnt/userlist_cmd.c;
	added files: clean-users.c, opcaps.c, opcaps.h, super-serve.c.

	* edit-userlist.c: copyright notice is added;
	<errno.h>, <regex.h> files included;
	`contests' global variable is removed, since new contest interface
	  is implemented;
	(generic_menu) new static function to implement a generic menu;
	(display_participant_sort_menu) new function to display a participant
	  sort options;
	(display_search_menu) new function to display search options;
	(get_contest_str) `contests_get' function is used instead of direct
	  operation;
	(display_user) use of `userlist_clnt_get_info' is changed (command
	  parameter is added);
	  use of `userlist_clnt_register_contest' is changed (see above);
	(user_regmatch) new function to check a string against a regular
	  expression;
	(user_match) new function, which checks a user according to a given
	  search criteria;
	(user_search) new function: search in the list of users;
	(registered_users_sort_func) a new helper function for `qsort';
	(display_registered_users) `cnts' parameter is replaced with
	  `contest_id';
	  new `contests_get' function is used;
	  if no users are registered for a contest, the administrator is
	  prompted to add a user;
	  sorting of registered users is supported;
	  new hot keys 's', 'j', 'e' are handled:
	    's' - sort users;
	    'j' - jump to a user;
	    'e' - search for a user;
	  help line is updated;
	(display_contests_menu) `contests_get_list', `contests_get' functions
	  are used instead of direct access;
	(do_display_user_menu) this is a new name for `display_user_menu';
	  if no users are registered, the administrator is prompted to add
	    a new user;
	  sorting of users is implemented;
	  new hot keys 's', 'j', 'e' are handled:
	    's' - sort users;
	    'j' - jump to a user;
	    'e' - search for a user;
	(display_user_menu) new function, which calls `do_display_user_menu'
	  and loops while the return value == -2;
	(display_main_menu) use of `display_user_menu' is updated;
	(main) `contests_set_directory' is used, `parse_contests_xml' is not
	  used.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* contests.h: copyright notice is updated;
	"opcaps.h" is included;
	<time.h> is included;
	removed XML element constants: CONTEST_ACCESS,
	  CONTEST_PRIVILEGED_USERS, CONTEST_ADMINISTRATOR, CONTEST_JUDGE,
	  CONTEST_OBSERVER;
	new XML element constants: CONTEST_REGISTER_ACCESS,
	  CONTEST_USERS_ACCESS, CONTEST_MASTER_ACCESS, CONTEST_JUDGE_ACCESS,
	  CONTEST_OBSERVER_ACCESS, CONTEST_TEAM_ACCESS, CONTEST_CAP,
	  CONTEST_CAPS, CONTEST_ROOT_DIR, CONTEST_STANDINGS_URL,
	  CONTEST_PROBLEMS_URL, CONTEST_CLIENT_FLAGS, CONTEST_SERVE_USER,
	  CONTEST_SERVE_GROUP;
	new XML attribute constants: CONTEST_A_LOGIN, CONTEST_A_MANAGED,
	  CONTEST_A_CLEAN_USERS;
	(struct contest_desc) removed fields: `priv_users', `access';
	(struct contest_desc) new fields: `managed', `clean_users',
	  `root_dir', `standings_url', `problems_url', `serve_user',
	  `serve_group', `register_access', `users_access', `master_access',
	  `judge_access', `observer_access', `team_access', `capabilities',
	  `client_ignore_time_skew', `client_disable_team', `last_check_time',
	  `last_file_time';
	(parse_contest_xml) function prototype removed;
	(contests_check_ip) function prototype removed;
	new error codes enumeration added;
	(contests_set_directory) new function prototype;
	(contests_get_list) new function prototype;
	(contests_get) new function prototype;
	(contests_strerror) new function prototype;
	(contests_lock) new function prototype, not yet implemented;
	(contests_unlock) new function prototype, not yet implemented;
	(contests_check_ip) new function prototype;
	(contests_check_register_ip) new function prototype;
	(contests_check_users_ip) new function prototype;
	(contests_check_master_ip) new function prototype;
	(contests_check_judge_ip) new function prototype;
	(contests_check_observer_ip) new function prototype;
	(contests_check_team_ip) new function prototype;
	(contests_set_load_callback) new function prototype, function is
	  implemented but callbacks are not yet called upon event;
	(contests_set_unload_callback) new function prototype, function is
	  implemented but callbacks are not yet called upon event.

	* contests.c: copyright notice is updated;
	the file is heavily reworked:
	  o each contest description is placed into a separate XML file;
	  o each time the contest description is requested, the file is
	    checked for updates;
	  o capabilities are supported;
	XML elements removed `access', `privileged_users', `administrator',
	  `judge', `observer';
	new XML elements added: `register_access', `users_access',
	  `master_access', `judge_access', `observer_access', `team_access',
	  `cap', `caps', `root_dir', `standings_url', `problems_url',
	  `client_flags', `serve_user', `serve_group';
	new XML attributes: `login', `managed', `clean_users';
	(parse_capabilities) new function to parse capabilities, used in
	  <cap> XML element;
	(parse_client_flags) new function to parse client flags,
	  currently IGNORE_TIME_SKEW and DISABLE_TEAM flags are supported,
	  used in <client_flags> XML element;
	(parse_contest) `managed' and `clean_users' attributes are supported;
	  new XML elements supported: `root_dir', `standings_url',
	  `problems_url', `serve_user', `serve_group', `client_flags',
	  `caps', `register_access', `users_access', `master_access',
	  `judge_access', `observer_access', `team_access';
	  removed support for XML elements: `privileged_users', `access';
	(parse_contest_xml) function is removed;
	(parse_one_contest_xml) new function to parse one contest's
	  description;
	(do_check_ip) this is new name for `contests_check_ip';
	(contests_check_ip) new function which checks the given IP against
	  one of the access lists according to `field' parameter;
	(contests_check_register_ip) new function;
	(contests_check_users_ip) new function;
	(contests_check_master_ip) new function;
	(contests_check_judge_ip) new function;
	(contests_check_observer_ip) new function;
	(contests_check_team_ip) new function;
	(contests_set_callback) a new static function to add a specified
	  function to a specified callback list;
	(contests_set_load_callback) a new function to add a specified
	  function to the load callback list;
	(contests_set_unload_callback) a new function to add a specified
	  function to the unload callback list;
	(contests_free) a new internal function to free the XML data
	  structures;
	(contests_make_path) a new internal function to compose a path
	  to XML contest description;
	(contests_set_directory) a new function to set the contest
	  directory;
	(contests_get_list) a new function to get the list of all the
	  XML contest descriptions;
	(contests_get) a new function to load a contest description;
	(contests_strerror) a new function, which returns user-readable
	  description of contest error.

	* clntutil.c:
	(client_check_server_status) client-server time skew is only checked
	  if `lag' parameter greater than 0.

	* clarlog.h: copyright notice is updated;
	`CLAR_LOG_READONLY' flag added;
	(clar_clear_variables) prototype added.

	* clarlog.c: copyright notice is updated;
	(clar_read_entry) user_id consistency checks are commented out;
	(clar_open) `CLAR_LOG_READONLY' flag is supported;
	(clar_add_record) user_id consistency checks are commented out;
	(clar_clear_variables) new function, which clears all the variables
	  and releases resources.

	* .cvsignore: *** empty log message ***

2003-06-28  Alexander Chernov  <cher@ispras.ru>

	* clean-users.c: Initial revision

2003-06-26  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_clnt.h: 
	(userlist_clnt_get_info) new parameter 'cmd' added;
	(userlist_clnt_register_contest) new parameter 'cmd' added.

	* userlist_proto.h:
	new commands added: PRIV_GET_USER_INFO, PRIV_SET_USER_INFO,
	  PRIV_REGISTER_CONTEST.

2003-06-22  Alexander Chernov  <cher@ispras.ru>

	* super-serve.c, opcaps.h, opcaps.c: Initial revision

2003-03-08  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(cmd_team_submit_run) `run_get_virtual_stop_time' now has two
	  parameters and stops the contest in case of expiration;
	(cmd_team_submit_clar) `run_get_virtual_stop_time' now has two
	  parameters;
	(cmd_command_0) the same.

	* runlog.h:
	(run_get_virtual_stop_time) now accepts two parameters instead of one.

	* runlog.c:
	(run_build_virtual_table) a bit more verbose message in case of
	  virtual time overrun;
	(run_get_virtual_stop_time) now accepts two parameters, the second is
	  is `cur_time'. The function stops the virtual contest, if the time
	  is over.

	* html.c:
	(write_standings_header) `run_get_virtual_stop_time' now has 2
	  parameters;
	(do_write_standings) the same;
	(write_team_page) the same.

2003-02-24  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(update_status_file) `continuation_enabled' field of the status file
	  is handled;
	(cmd_priv_command_0) command `SRV_CMD_CONTINUE' is supported;
	(packet_handlers) `SRV_CMD_CONTINUE' is handled.

	* run.c: 
	(run_tests) testsets are supported.

	* protocol.h:
	(struct prot_serve_status) new field `continuation_enabled';
	new command constant `SRV_CMD_CONTINUE'.

	* prepare.h:
	(struct testset_info) new structure to hold information about
	  test sets;
	new global parameter `enable_continue';
	testsets support added to problem structure.

	* prepare.c: <ctype.h> is included;
	new global parameter `enable_continue';
	new global parameter `test_sets';
	(parse_testsets) new function to parse testset specification;
	(set_defaults) if scoring system is invalid, configuration parsing
	  now fails;
	  testset specifications are parsed.

	* master.c: (confirm_continue) new function;
	(action_continue) new function;
	(main) actions CONTINUE and CONTINUE_2 are supported.

	* clntutil.h: new extern variable `server_continuation_enabled'.

	* clntutil.c: new global variable `server_continuation_enabled';
	(client_check_server_status) `server_continuation_enabled' is read
	  from the server status file;
	(client_print_server_status) in master mode and if
	  `server_continuation_enabled' flag is set, "Continue" button is
	  printed.

	* client_actions.h: CONTINUE and CONTINUE_2 actions added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-02-16  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(problem_init_func) default `run_penalty' is set to -1, as 0 is valid
	  run_penalty;
	(set_defaults) `0' is valid run_penalty.

	* run.c:
	(run_tests) abnormal task termination is checked only if error_code
	  file is not set.

	* userlist-server.c:
	(get_user_info) removed check, that xml info length is < 65536;
	(cmd_list_all_users) removed xml data limitation.

	* userlist_proto.h:
	(struct userlist_pk_xml_data) field `info_len' changed
	  to type `unsigned int' instead of `unsigned short'.

2003-02-04  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-02-04  Alexander Chernov  <cher@ispras.ru>

	* serve.c: new global variable `olympiad_judging_mode';
	(update_status_file) `olympiad_judging_mode' field is set from
	  `olympiad_judging_mode' global variable;
	(cmd_priv_command_0) `SRV_CMD_SET_JUDGING_MODE' command is
	  handled;
	(read_compile_packet) in OLYMPIAD scoring system the final testing
	  is performed only if `olympiad_judging_mode' variable is set;
	(do_rejudge_all) better handling of OLYMPIAD scoring system is
	  implemented: only the last accepted run for each participant and
	  each problem is considered for final judging;
	(do_rejudge_problem) better handling of OLYMPIAD scoring system
	  is implemented: only the last accepted run for each participant
	  is considered;
	(packet_handlers) `SRV_CMD_SET_JUDGING_MODE' command is handled.

	* master.c: 
	(authentificate) page reload delay is set to 0 secs;
	(print_judging_mode_button) a new function to generate HTML code
	  for "Set judging mode" button;
	(operation_status_page) page reload delay is set to 0 secs;
	(action_set_judging_mode) new function to perform action for the
	  "Set judging mode" button;
	(main) ACTION_SET_JUDGING_MODE is handled;
	  "Set judging mode" button is printed, if scoring system is
	  OLYMPIAD.

	* html.c:
	(do_write_kirov_standings) full solutions are counted properly
	  in OLYMPIAD judging mode.

	* clntutil.h: copyright notice is updated;
	external declaration for `server_olympiad_judging_mode' is added.

	* clntutil.c: new global variable `server_olympiad_judging_mode';
	(client_check_server_status) `server_olympiad_judging_mode' variable
	  is filled from the server status structure;
	(client_print_server_status) the current judging status is printed,
	  if the scoring system is olympiad;
	  the actual ending time is printed in case of permature contest
	  termination.

	* client_actions.h: new action SET_JUDGING_MODE is added.

	* prepare.c: copyright notice is slightly updated;
	(set_defaults) `tests_to_accept' field is set properly in any
	  judging mode, since now the checker must be able to check
	  problems from contests running in different modes.

	* protocol.h:
	(struct prot_serve_status) field `olympiad_judging_mode' is added,
	  which is set to 1, if the current scoring mode is "OLYMPIAD";
	SRV_CMD_SET_JUDGING_MODE request code is added.

	* team.c: copyright notice is updated;
	(authentificate) page refresh time is changed to 0 sec;
	(operation_status_page) the same.

2003-02-01  Alexander Chernov  <cher@ispras.ru>

	* makefile: copyright notice is updated;
	minor reorganization.

2003-01-31  Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h: copyright notice is updated;
	DUMP_DATABASE request added;
	(struct userlist_pk_dump_database) new packet.

	* userlist_clnt.h: copyright notice is updated;
	(userlist_clnt_dump_database) new function prototype.

	* userlist-server.c: copyright notice is updated;
	(do_list_users) a code which dumps raw database is moved to
	  `do_dump_database';
	(do_dump_database) new function, which dumps raw user database;
	(action_dump_user_database) new function to handle DUMP_DATABASE
	  request;
	(process_packet) DUMP_DATABASE request is handled.

	* teamdb.h: copyright notice is updated;
	(teamdb_dump_database) new function prototype.

	* teamdb.c: copyright notice is updated;
	(teamdb_regenerate_passwords) file descriptors are not leaked in case
	  of temporary server disconnection;
	(teamdb_dump_database) new function to pass the file descriptor
	  to the userlist-server to dump the user database.

	* serve_clnt.h: copyright notice is updated;
	(serve_clnt_userlist_cmd) new name for `serve_clnt_get_passwords'.

	* serve.c:
	(cmd_view) new commands handled: DUMP_RUNS, DUMP_STANDINGS;
	(cmd_gen_passwords) renamed to `cmd_userlist_cmd';
	(cmd_userlist_cmd) handles GEN_PASSWORDS and DUMP_USERS;
	(packet_handlers) `cmd_userlist_cmd' now handles `GEN_PASSWORDS';
	  `cmd_view' handles DUMP_RUNS and DUMP_STANDINGS;
	  `cmd_userlist_cmd' handles `DUMP_USERS'.

	* protocol.h: copyright notice is updated;
	new server commands: DUMP_RUNS, DUMP_USERS, DUMP_STANDINGS.

	* master_html.c:
	(write_priv_standings) use of `do_write_kirov_standings' updated;
	  use of `do_write_standings' updated;
	(write_runs_dump) new function to write raw run information;
	(write_raw_standings) new function to write raw standings info.

	* master.c: copyright notice is updated;
	(print_dump_runs_button) new function to print "Dump runs database"
	  reference;
	(print_dump_users_button) new function to print "Dump users database"
	  reference;
	(print_dump_standings_button) new function to print
	  "Dump standings database" reference;
	(action_dump_runs) new function to perform "Runs dumping";
	(action_dump_users) new function to perform "Users dumping";
	(action_dump_standings) new function to perform "Raw standings" dump;
	(do_generate_passwords_if_asked) `serve_clnt_userlist_cmd' is used
	  instead of `serve_clnt_gen_passwords';
	(print_dump_buttons) new function to print all the "dump" references;
	(main) new actions handled: DUMP_RUNS, DUMP_USERS, DUMP_STANDINGS;
	  dump reference row is printed.

	* html.h: copyright notice is updated;
	(do_write_kirov_standings) prototype is updated;
	(do_write_standings) prototype is updated;
	(write_runs_dump) new function prototype;
	(write_raw_standings) new function prototype.

	* html.c:
	(do_write_kirov_standings) a new parameter `raw_flag' is added,
	  if this parameter is non-zero, the standings are printed
	  in semicolon-separated format to process them separately;
	(do_write_standings) a new parameter `raw_flag' - see above;
	(write_standings) use of `do_write_kirov_standings',
	  `do_write_standings' is updated;
	(write_virtual_standings) `do_write_standings' use is updated.

	* files.make: copyright notice is updated;
	new file userlist_clnt/dump_database.c;
	file serve_clnt/gen_passwords.c is renamed to
	  serve_clnt/userlist_cmd.c.

	* client_actions.h: copyright notice is updated;
	new client (master) actions: DUMP_USERS, DUMP_RUNS, DUMP_STANDINGS.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-01-28  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(cmd_team_submit_run) language is not accepted, if it has `disabled'
	  flag set.

	* prepare.h, prepare.c:
	new language parameter `disabled', which is used to disable use
	  of a language for new submissions.

	* html.c: copyright notice is updated;
	(write_team_page) a language is not generated to language selection
	  menu, if `disabled' flag is set.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2003-01-27  Alexander Chernov  <cher@ispras.ru>

	* master_html.c: copyright notice is updated;
	(write_priv_source) language having invalid language id is printed
	  as an empty string.

	* filter_eval.c: copyright notice is updated;
	(do_eval) invalid problem id is converted to empty string;
	  invalid team id is converted to empty team login string;
	  invalid language id is converted to empty string.

	* clntutil.c: copyright notice is updated;
	(client_put_copyright) copyright notice is updated.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* ejudge.ru_RU.KOI8-R.po: Copyright notice is updated.

2003-01-06  Alexander Chernov  <cher@ispras.ru>

	* serve.c: copyright notice is updated;
	(cmd_team_submit_run) now uses `queue_compile_request';
	(read_compile_packet) serve->run interaction protocol is changed;
	(b32_number) new function to convert the given number to radix-32
	  number;
	(generate_packet_name) new function to generate an unique packet
	  name. The packet name is 11 characters long and contains only
	  digits and latin capitals;
	(queue_compile_request) new function to add a compile packet to
	  the corresponding compile queue;
	(rejudge_run) now uses `queue_compile_request';

	* run.c: copyright notice is updated;
	(generate_report) new parameter `score_system_val' which is used
	  instead of global configuration variable global->score_system_val;
	(generate_team_report) new parameter `score_system_val',
	  which is used instead of global configuration variable;
	  new parameter `report_error_code' which is used instead of
	  the global configuration variable;
	(run_tests) new parameter `team_enable_rep_view' which is used
	  instead of global configuration variable;
	  new parameter `report_error_code';
	  new parameter `score_system_val';
	  global->run_work_dir is used instead of global->tmp_dir;
	  tst->check_dir is used instead of tst->work_dir;
	(do_loop) incoming packets are now read from a single spool]
	  directory;
	  the run packet now containt the contest_id, the run_id, the
	  problem_id, accept_testing flag, locale_id, score_system_val
	  (the scoring system for this run), team_enable_rep_view flag,
	  report_error_code flag, exe_sfx executable suffix,
	  arch - architecture;
	  the incoming packet name is now unique and contain a random
	  component to enable using of one tester agent by several
	  contests;
	  the checker result is put to the output spool directories, path
	  to which now contain the contest_id.

	* prepare.h: copyright notice is updated;
	global parameters `teamdb_file', `passwd_file' are removed;
	new global parameter `compile_out_dir', not settable by user;
	new global parameter `compile_work_dir';
	new global parameter `run_out_dir', not settable by user;
	new global parameter `run_work_dir';
	new global parameter `run_check_dir';
	new global parameter `auto_short_problem_name';
	new problem parameter `tester_id';
	new language parameter `compile_id';
	compile parameters `server_root_dir', `server_var_dir',
	  `server_compile_dir', `server_queue_dir', `server_src_dir',
	  `compile_status_dir', `compile_report_dir', `queue_dir',
	  `work_dir' are removed;
	new language parameter `compile_dir';
	new language parameter `compile_queue_dir', `compile_src_dir',
	  `compile_out_dir' - not settable by user;
	new tester parameter `any';
	removed tester parameters: `server_root_dir', `server_var_dir',
	  `server_run_dir', `server_exe_dir', `server_queue_dir',
	  `run_status_dir', `run_report_dir', `run_team_report_dir',
	  `queue_dir', `tester_dir', `tmp_dir', `work_dir';
	new tester parameter `run_dir';
	new tester parameters `run_queue_dir', `run_exe_dir', `run_out_dir',
	  not settable by user;
	new tester parameter `check_dir'.

	* prepare.c:
	`teamdb_file', `passwd_file' global configuration parameters are
	  removed;
	`compile_queue_dir', `compile_src_dir', `compile_status_dir',
	  `compile_report_dir' global configuration variables are no longer
	   can be set by user;
	`compile_work_dir' - new global configuration parameter;
	`run_queue_dir', `run_exe_dir', `run_status_dir', `run_report_dir',
	  `run_team_report_dir' global configuration variables are no longer
	  can be set by user;
	`run_work_dir' - new global configuration parameter - a replacement
	  for tester->tmp_dir;
	`run_check_dir' - new global configuration parameter - a replacement
	  for tester->work_dir;
	`auto_short_problem_name' - new global configuration parameter;
	`tester_id' new problem parameter;
	`compile_id' new language parameter;
	`server_root_dir', `server_var_dir', `server_compile_dir',
	  `server_queue_dir', `server_src_dir', `compile_status_dir',
	  `compile_report_dir' language parameters are removed;
	`queue_dir', `work_dir' language parameters are removed;
	`compile_dir' - new language parameter - used by serve to place the
	  compilation request to the specific compilation queue;
	`any' - new tester parameter - default tester;
	`server_root_dir', `server_var_dir', `server_run_dir',
	  `server_exe_dir', `server_queue_dir', `run_status_dir',
	  `run_report_dir', `run_team_report_dir', `queue_dir',
	  `tester_dir', `tmp_dir', `work_dir' tester parameters are removed;
	run_dir - new tester parameter;
	check_dir - new tester parameter;
	(find_tester) function searches for default testers for the given
	  architecture when it cannot find precise tester;
	(tester_inheritance_info) updated according to changes in tester
	  parameters;
	(process_abstract_tester) abstract tester cannot be default tester;
	(set_defaults) updated to handle new configuration parameters;
	(collect_sections) compile_id is set to the language id, if the
	  former is not set;
	  tester_id is set to the problem id, if the former is not set;
	  default checkers are supported;
	(make_symlink) new function;
	(create_dirs) updated for the new serve<->compile and serve<->run
	  packet exchange scheme;
	(print_tester) removed all removed parameters.

	* parsecfg.c: copyright notice is updated;
	(parse_param) the input file is correctly closed.

	* master.c: copyright notice is updated;
	(read_state_params) `SID_URL' is supported properly (form headers
	  and hidden vars contain sid_mode and SID).

	* compile.c:
	GENERAL: serve<->compile interaction protocol is changed;
	copyright notice is updated (now is 2003);
	theory of operation is commented to be obsoleted;
	(do_loop) the incoming packets are watched only in a single
	  directory;
	  the compile packets have unique randomized names, which allows using
	  the same compilation agent for several contests;
	  the compile packet now contains the contest_id, the run_id, the
	  language_id and the locale_id (currently unused);
	  the compile result is written to the output directory, which path
	  is composed using the contest_id.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-12-30  Alexander Chernov  <cher@ispras.ru>

	* ALL_FILES: version 2.0 is released! 

2002-12-30  Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h:
	(struct userlist_pk_set_password) field `contest_id' is added.

	* userlist_clnt.h:
	(userlist_clnt_team_set_passwd) argument `contest_id' is added.

	* userlist-server.c:
	(team_set_password) the packet now has `contest_id' field, and this
	  contest is checked to allow team password change.

	* team.c:
	(action_change_password) `userlist_clnt_team_set_passwd' now
	  requires contest_id parameter;
	(main) password change dialog is not shown, if contest's flag
	  `disable_team_password' is set.

	* serve.c:
	new master commands "Clear run" and "Squeeze run log" are supported;
	(do_rename) new function, which renames archive entries by their
	  numbers;
	(do_remove_archive_entry) new function, which removes an archive
	  entry by its number;
	(do_squeeze_runs) a new function, which squeezes runs by
	  renaming archive entries and squeezing the runlog;
	(cmd_priv_command_0) `SRV_CMD_SQUEEZE_RUNS', `SRV_CMD_CLEAR_RUN'
	  are handled;
	(packet_handlers) `SRV_CMD_SQUEEZE_RUNS', `SRV_CMD_CLEAR_RUN'
	  are handled.

	* runlog.h: RUN_MAX_IP_LEN is moved to runlog.c;
	new run entry status RUN_EMPTY;
	(run_clear_entry) new function;
	(run_squeeze_log) new function.

	* runlog.c:
	(run_change_status) added check, that new status is not RUN_EMPTY;
	  added check, that the old status is not RUN_VIRTUAL_START,
	  RUN_VIRTUAL_STOP, RUN_EMPTY;
	(run_get_team_usage) RUN_VIRTUAL_START, RUN_VIRTUAL_STOP,
	  RUN_EMPTY entries are ignored;
	(run_get_attempts) RUN_VIRTUAL_START, RUN_VIRTUAL_STOP,
	  RUN_EMPTY entries are ignored;
	(run_status_str) RUN_EMPTY is supported;
	(run_set_entry) RUN_EMPTY entry cannot be changed;
	  RUN_VIRTUAL_START, RUN_VIRTUAL_STOP, RUN_EMPTY cannot be set by
	  this function;
	(run_build_virtual_table) RUN_EMPTY is ignored;
	(run_clear_entry) new function to clear runlog entry;
	(run_squeeze_log) new function to remove all cleared entries.

	* protocol.h:
	new commands: `SRV_CMD_CLEAR_RUN', `SRV_CMD_SQUEEZE_RUNS'.

	* master_html.c:
	(write_all_runs) `RUN_EMPTY' runlog entries are printed in special
	  way;
	  for `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP' "clear" button is
	  displayed instead of "change" button;
	  "Squeeze runs" button is added;
	(write_priv_source) `RUN_EMPTY' runlog entries are handled;
	  "Clear entry" button is displayed.

	* master.c:
	new master actions are supported: clear run and squeeze run log;
	(confirm_squeeze) new function;
	(confirm_clear_run) new function;
	(action_squeeze_runs) new function;
	(action_clear_run) new function;
	(main) new actions `CLEAR_RUN', `CLEAR_RUN_2', `SQUEEZE_RUNS',
	  `SQUEEZE_RUNS_2' are supported.

	* html.c:
	(new_write_user_runs) `RUN_EMPTY' runlog entries are ignored;
	(do_write_kirov_standings) the same;
	(do_write_standings) the same.

	* contests.h: new attribute `disable_team_password' is supported;
	(struct contest_desc) new field `disable_team_password'.

	* contests.c: new attribute `disable_team_password' is supported;
	(parse_contest) ditto.

	* client_actions.h:
	new actions added (CLEAR_RUN, CLEAR_RUN_2, SQUEEZE_RUNS,
	  SQUEEZE_RUNS_2).

2002-12-28  Alexander Chernov  <cher@ispras.ru>

	* team.c:
	(read_state_params) SID_URL handling is implemented properly.
	  In this case sid_mode and SID is generated into the form.
	(main) "Change language" dialog is implemented correctly for
	  all the session support modes.

2002-12-28  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(update_standings_file) compiler warning about use of uninitialized
	  variable is fixed.

	* master_html.c:
	(write_all_runs) compiler warnings about use of uninitialized
	  variables are fixed;
	(write_all_clars) the same.

	* master.c:
	(send_msg_if_asked) compiler warning about use of uninitialized
	  variable is fixed.

	* html.c:
	(do_write_standings) compiler warning about use of uninitialized
	  variable is fixed.

	* contests.c:
	(parse_contest_xml) compiler warning about use of uninitialized
	  variable is fixed.

	* users.c: 
	(main) a backdoor is removed.

	* userlist-server.c:
	(login_team_user) "possibly use of unitialized variable" warning
	  is fixed;
	(cmd_login_priv_user) the same;
	(login_team_cookie) the same;
	(login_priv_cookie) the same;
	(do_list_users) in raw output mode if a team does not have
	  participants, it is now printed anyway;
	  invisible users are not printed in user lists.

	* team.c:
	(send_clar_if_asked) in virtual contest mode contest start and stop
	  times are not checked;
	(submit_if_asked) the same as above.

	* team.c:
	(display_enter_password) default session mode is 2 (SID_URL).

	* runlog.h: 
	(run_get_virtual_status) new function prototype.

	* runlog.c:
	(run_get_virtual_status) a new function, which returns the virtuality
	  status of the given user;
	(run_virtual_start) virtuality status of the user is set to virtual;
	(run_virtual_stop) checked, that the user is virtual.

	* prepare.h, prepare.c:
	new global parameters: `standings_virtual_team_color',
	  `standings_real_team_color'.

	* html.c:
	(do_write_standings) global parameters `standings_real_team_color',
	  `standings_virtual_team_color' are supported.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-12-27  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* team.c: GLOBAL CHANGE: virtual contest mode is supported;
	(make_self_url) `REDIRECT_URL' environment variable is checked;
	(print_standings_button) new function to print the standings button;
	(show_clar_if_asked) `print_nav_buttons' accepts 3 parameters instead
	  of 2;
	(request_source_if_asked) the same as above;
	(action_stangings) new function to generate virtual standings in
	  the virtual contest mode;
	(request_report_if_asked) `print_nav_buttons' accepts 3 parameters instead
	  of 2;
	(action_virtual_start) new function to start the virtual contest;
	(action_virtual_stop) new function to stop the virtual contest;
	(print_nav_buttons) now accepts 3 parameters instead of 2. The
	  second parameter is now "Virtual standings" label; the 3rd
	  parameter is "Log out" label;
	(main) client actions `ACTION_START_VIRTUAL', `ACTION_STOP_VIRTUAL',
	  `ACTION_STANGINGS' are supported;
	  `print_nav_buttons' accepts 3 parameters instead of 2.

	* serve.c: GLOBAL CHANGE: virtual contests are supported;
	(update_standings_file) fog time is not checked when in virtual
	  contest mode;
	(update_status_file) `is_virtual' flag of the status structure
	  is filled;
	  standings are never frozen in virtual contest mode;
	(cmd_team_show_item) `SRV_CMD_VIRTUAL_STANDINGS' request is
	  handled;
	(cmd_team_submit_run) virtual contests are supported: duration is
	  counted relative to the participant's contest start time;
	(cmd_team_submit_clar) the same as above;
	(cmd_command_0) a new function to handle unprivileged command with 0
	  or 1 parameter;
	  `SRV_CMD_VIRTUAL_START', `SRV_CMD_VIRTUAL_STOP' commands are
	  handled;
	(cmd_judge_command_0) a new function to handle commands with 0 or 1
	  parameter, which are allowed for any user with privileges;
	  `SRV_CMD_RESET_FILTER' command is handled;
	(packet_handlers) handlers for the new commands
	  `SRV_CMD_VIRTUAL_STOP', `SRV_CMD_VIRTUAL_START',
	  `SRV_CMD_VIRTUAL_STANDINGS', `SRV_CMD_RESET_FILTER' are added;
	(do_loop) fog period is not checked in virtual contest mode;
	  contest is never auto-started and auto-stopped in virtual contest
	  mode;
	(main) if virtual contest is requested for not SCORE_ACM scoring
	  system, an error is printed;
	  `run_build_virtual_table' is called in virtual contest mode.

	* runlog.h:
	new run entry statuses: `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP';
	(run_get_duration) new function prototype;
	(run_build_virtual_table) new function prototype;
	(run_get_virtual_start_time) new function prototype;
	(run_get_virtual_stop_time) new function prototype;
	(run_virtual_start) new function prototype;
	(run_virtual_stop) new function prototype.

	* runlog.c:
	(append_record) new static function to add a new record to the log;
	(run_add_record) `append_record' function is used to create a new
	  record;
	(run_change_status) status of `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP'
	  entries cannot be changed;
	(run_get_duration) a new function to return the contest duration;
	(run_status_str) `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP' are
	  supported;
	(run_set_entry) `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP' entries
	  cannot be edited;
	(struct vt_entry) new structure to hold the virtual contest status
	  for all the participants;
	(get_entry) new static function to create a new virtual participant
	  entry, if such does not exist, and return the entry;
	(run_build_virtual_table) new function to build the virtual
	  participation table by the run log;
	(run_get_virtual_start_time) new function to return the virtual
	  contest start time for the given user;
	(run_get_virtual_stop_time) new function to return the virtual
	  contest stop time for the given user;
	(run_virtual_start) new function to start the virtual contest for
	  the given user;
	(run_virtual_stop) new function to stop the virtual contest for
	  the given user.

	* protocol.h: (struct prot_serve_status) field `is_virtual' added;
	several new commands added: `SRV_CMD_VIRTUAL_START',
	  `SRV_CMD_VIRTUAL_STOP', `SRV_CMD_VIRTUAL_STANDINGS',
	  `SRV_CMD_RESET_FILTER';
	new error code: `SRV_ERR_ONLY_VIRTUAL'.

	* protocol.c: text for `SRV_ERR_ONLY_VIRTUAL' error is added.

	* prepare.h:
	two new global parameters added: `virtual', `standings_team_color'.

	* prepare.c: global parameters:
	  virtual - if set to 1, denotes virtual contest;
	  standings_team_color - may be set to some HTML color to highlight
	  the team's line on the virtual standings page.

	* master_html.c: (write_all_runs) virtual contests are handled;
	  "Reset filter" button is generated;
	  filter parse and execution errors are printed;
	  special output format for `RUN_VIRTUAL_START', `RUN_VIRTUAL_STOP'
	  runlog entries;
	  virtual participant's entries time is printed in virtual time;
	(write_all_clars) astronimic time is used in virtual contest mode;
	(write_priv_standings) use of `write_standings_header',
	  `do_write_standings' is updated due to changed parameters;
	(write_priv_source) source cannot be printed for `RUN_VIRTUAL_START'
	  and `RUN_VIRTUAL_STOP' entries;
	(write_priv_clar) astronomical time is used in virtual contest mode;
	(html_reset_filter) new function to reset the runlog filter to
	  its initial state.

	* master.c:
	(action_reset_filter) new function to send `SRV_CMD_RESET_FILTER'
	  command. Use to reset the filter to default state;
	(main) `ACTION_RESET_FILTER' is handled.

	* html.h: 
	(write_standings_header) prototype is changed;
	(do_write_standings) prototype is changed;
	(html_reset_filter) new function prototype added.

	* html.c: 
	(new_write_user_runs) virtual contests are supported;
	(new_write_user_clars) virtual contests are supported. In virtual
	  contest mode all clarification requests are replies are tagged
	  with astronomic time, not duration from the start;
	(new_write_user_clar) the same as above;
	(write_standings_header) two new parameters added: `user_id' and
	  `user_name'. They are used in virtual contest mode to print
	  personal standings;
	(do_write_kirov_standings) RUN_VIRTUAL_START and RUN_VIRTUAL_STOP
	  run statuses are ignored;
	(do_write_standings) new parameter `user_id' added. Used in virtual
	  contest mode to generate standings relative to the current virtual
	  time of the given participant;
	(write_standings) use of `write_standings_header' and
	  `do_write_standings' is updated to due changes in their parameters;
	(print_nav_buttons) new parameter `t3', which is now button label
	  for "Log Out", `t2' is now button label for "Virtual standings"
	  button;
	  "Virtual standings" button is printed;
	(time_to_str) new function;
	(write_team_page) virtual contest mode is supported. In this mode
	  general contest information section is also printed on the
	  server side;
	  use of `print_nav_buttons' updated;
	(write_virtual_standings) new function to print the user's virtual
	  standings.

	* clntutil.h: external declaration of `server_is_virtual' added.

	* clntutil.c: `server_is_virtual' global variable added;
	(client_check_server_status) `is_virtual' flag is read;
	(client_print_server_status) virtual contests are supported.

	* client_actions.h:
	several new actions added: virtual contest actions and reset filter
	  action.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-12-23  Alexander Chernov  <cher@ispras.ru>

	* teamdb.h: (teamdb_toggle_ban) prototype removed;
	(teamdb_toggle_vis) prototype removed;
	(teamdb_toggle_flags) new function prototype added.

	* teamdb.c: (teamdb_toggle_vis) function removed;
	(teamdb_toggle_ban) function removed;
	(teamdb_toggle_flags) a new function to request visibility/ban
	  flag toggling from the userlist-server.

	* serve.c:
	(cmd_priv_command_0) `SRV_CMD_TOGGLE_VISIBILITY', `SRV_CMD_TOGGLE_BAN'
	  commands are supported;
	(packet_handlers) packet handler for the commands above added.

	* protocol.h:
	new server commands: SRV_CMD_TOGGLE_VISIBILITY, SRV_CMD_TOGGLE_BAN.

	* master.c: user banning/making invisible is now supported;
	(action_toggle_visibility) a new function to request toggle of
	  user visibility status;
	(action_toggle_ban) a new function to request toggle of user ban
	  status;
	(main) client actions `ACTION_USER_TOGGLE_BAN',
	  `ACTION_USER_TOGGLE_VISIBILITY' are supporting by calling the
	  corresponding functions (described above).

2002-12-22  Alexander Chernov  <cher@ispras.ru>

	* makefile:
	ChangeLog for userlist_clnt, serve_clnt, charsets subdirectories
	  is updated with `log' rule.

2002-12-22  Alexander Chernov  <cher@ispras.ru>

	* master.c:
	GLOBAL CHANGE: new protocol (UNIX socket-based) of master-serve
	  communication is implemented;
	GLOBAL CHANGE: new session support is implemented (including
	  implementation of cookie support, which is now on by default);
	due to the above changes the code is almost totally rewritten;
	configuration parameters removed: `conf_dir', `pipe_dir',
	  `judge_dir', `judge_cmd_dir', `judge_data_dir';
	"client_actions.h" is included;
	<ctype.h> is included;
	session mode enumerated constants SID_* are defined;
	(read_state_params) `action' or `action_' cgi parameter is parsed;
	  `form_start_simple', `form_start_multipart', `hidden_vars' are
	  generated depending on the current session mode;
	(make_self_url) `SERVER_PORT' environment variable is not used, since
	  it is already contained in HTTP_HOST environment variable;
	(hyperref) new function to print self-referencing url depending on
	  the current session support mode;
	(set_cookie_if_needed) new function to send a cookie to client,
	  if it is needed;
	(display_enter_password) `set_cookie_if_needed' is called;
	  session support selection dialog is generated;
	(get_cookie) new function to parse cookie string;
	(ask_passwd) removed in favor of `authentificate';
	(check_passwd) removed in favor of `authentificate';
	(open_userlist_server) new function to open userlist-server
	  connection;
	(permission_denied) new function to report the corresponging error;
	(fatal_server_error) new function to report the corresponging error;
	(is_auth_error) new function, which returns 1, if the given
	  error code is authentification error;
	(get_session_id) new function, which parses session id from CGI
	  parameters;
	(client_put_refresh_header) new function, which generates
	  auto-refreshing http header;
	(authentificate) new function to authentificate users, supporting
	  all session modes;
	(print_refresh_button) all session support modes implemented;
	(print_standings_button) all session support modes implemented;
	(print_update_button) all session support modes implemented;
	(print_teamview_button) all session support modes implemented;
	(print_logout_button) new function to print "Log out" button;
	(print_reset_button) all session support modes implemented;
	(print_regenerate_button) all session support modes implemented;
	(print_suspend_button) all session support modes implemented;
	(print_resume_button) all session support modes implemented;
	(operation_status_page) new function to generate page to
	  show the result of operation;
	(start_if_asked) new protocol supported, `operation_status_page'
	  is called;
	(stop_if_asked) the same as above;
	(update_standings_if_asked) the same as above;
	(changedur_if_asked) the same is above;
	(sched_if_asked) the same as above;
	(change_status_if_asked) the same as above;
	(change_status) new function to support status changing from
	  source view page;
	(change_problem) new function, which implements problem changing
	  from source view page;
	(change_language) new function, which implements language changing
	  from source view page;
	(change_user_id) new function, which implements user_id changing
	  from source view page;
	(change_user_login) new function, which implements user login
	  changing from source view page;
	(view_one_team_if_asked) removed;
	(do_team_action_if_asked) removed;
	(add_team_if_asked) removed;
	(view_source_if_asked) new protocol, and session modes supported;
	(view_report_if_asked) the same as above;
	(view_teams_if_asked) the same as above;
	(confirm_reset_if_asked) new session support mode implemented;
	(confirm_regenerate_if_asked) the same as above;
	(confirm_update_standings) new function;
	(confirm_rejudge_all) new function;
	(do_contest_reset_if_asked) new session support mode implemented;
	  new protocol is supported;
	(do_generate_passwords_if_asked) the same;
	(do_suspend_if_asked) the same;
	(do_resume_if_asked) the same;
	(do_rejudge_all_if_asked) the same;
	(do_rejudge_problem_if_asked) the same;
	(view_clar_if_asked) defined `static';
	  new session support is implemented;
	  new protocol is supported;
	(send_msg_if_asked) the same as above;
	(send_reply_if_asked) the same as above;
	(view_standings_if_asked) the same as above;
	(log_out_if_asked) new function to log out user (remove all cookies);
	(set_defaults) all removed configuration parameters are no longer
	  supported;
	  `client_make_form_headers' is called with `self_url' argument;
	(open_serve) if connection cannot be established, fatal error is
	  reported;
	(display_master_page) server connection is explicitly opened;
	  the current sid_mode is passed to the server;
	(print_nav_buttons) new function to print navigation buttons;
	(main) new `authentificate' function is used instead of old
	  `ask_passwd', `check_passwd', etc;
	  the action is chosen depending on the client_actions value;
	  `print_nav_buttons' is used.

	* master_html.c:
	"fileutl.h", "client_actions.h", "sformat.h" is included;
	session mode enumeration constants SID_* are defined;
	(html_start_form) new function to start a form depending on the
	  current session mode;
	(html_hyperref) a new function to print self-reference hyperref
	  depending on the current session mode;
	(print_nav_buttons) new function to print navigation buttons;
	(write_change_status_dialog) new function to generate html for
	  run status change dialog;
	(write_all_runs) new parameters `sid_mode', `sid';
	  new session support is implemented;
	(write_all_clars) new parameters `sid_mode', `sid';
	  new session support mode is implemented;
	(write_master_page) new parameters `sid_mode', `sid',
	  which are passed to the above function;
	(write_priv_standings) new function to print the current standings;
	(write_priv_source) new function;
	(write_priv_report) new function;
	(write_priv_clar) new function;
	(write_priv_users) new function.

	* html.h: (write_runs_table) removed;
	(write_clars_table) removed;
	(write_clar_view) removed;
	(write_team_statistics) removed;
	(write_judge_allstat) removed;
	(write_judge_source_view) removed;
	(write_judge_report_view) removed;
	(write_judge_standings) removed;
	(write_judge_teams_view) removed;
	(write_judge_one_team_view) removed;
	(new_write_user_runs) prototype changed;
	(new_write_user_clars) prototype changed;
	(write_team_page) prototype changed;
	(write_master_page) parameters `sid_mode', `sid' are added;
	(write_priv_standings) prototype added;
	(write_standings_header) prototype added;
	(do_write_kirov_standings) prototype added;
	(do_write_standings) prototype added;
	(write_priv_source) prototype added;
	(write_priv_report) prototype added;
	(write_priv_clar) prototype added;
	(write_priv_users) prototype added;
	(html_start_form) prototype added;
	(html_hyperref) prototype added.

	* html.c: "client_actions.h" included;
	session support mode enumeration SID_* is defined;
	(write_clar_view) removed;
	(new_write_user_runs) parameters changed: `form' is removed, but
	  `sid_mode', `sid', `self_url', `hidden_vars' are added;
	  function is updated for new session support mode;
	(new_write_user_clars) parameters changed the same way as above;
	  new session support is implemented;
	(write_team_statistics) removed;
	(write_standings_header) new function;
	(do_write_kirov_standings) `header_str' is removed, the header is
	  printed in a separate function (above);
	  global parameter `ignore_compile_errors' is honored;
	  function is no longer static (used from master_html.c);
	(do_write_standings) `header_str' parameter is removed;
	  global parameter `ignore_compile_errors' is supported;
	  function is no longer static;
	(write_standings) `write_standings_header' is called;
	  parameters for do_write_*_standings are updated;
	(do_write_public_log) global parameter `ignore_compile_errors'
	  is supported;
	(write_judge_allruns) removed; similar function is now
	  in master_html.c;
	(write_judge_allclars) removed;
	(write_judge_allstats) removed, similar function is now in
	  master_html.c;
	(write_judge_source_view) removed;
	(write_judge_report_view) removed;
	(write_judge_standings) removed;
	(write_judge_teams_view) removed;
	(print_nav_buttons) new function;
	(write_judge_one_team_view) removed;
	(write_team_page) parameters are changed to support the new
	  session model;

	* makefile: libserve_clnt.a: rule uses ${SERVE_CLNT_CFILES} variable.

	* files.make: new userlist_clnt files: `logout.c', 'priv_cookie.c'.
	all serve_clnt files are now defined in a separate variable
	  `SERVE_CLNT_CFILES';
	client_actions.h added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* clntutil.h: variables `client_pipe_dir', `client_cmd_dir',
	  `form_header_simple_ext', `form_header_multipart_ext' removed;
	(client_puts) removed;
	(client_make_form_header) accepts a parameter `self_url';
	(client_make_pipe) removed;
	(client_packet_name) removed;
	(client_get_reply) removed;
	(client_transaction) removed;
	(client_file_to_str) removed;
	(client_file_to_stdout) removed;
	(client_split) removed.

	* clntutil.c: "client_actions.h" is included;
	global variables `client_pipe_dir', `client_cmd_dir',
	  `form_header_simple_ext', `form_header_multipart_ext' are removed;
	(client_packet_name) removed;
	(client_make_pipe) removed;
	(client_get_reply) removed;
	(client_transaction) removed;
	(client_print_server_status) action codes are printed for
	  administrator's control buttons instead of commands;
	(client_make_form_headers) self_url parameter added;
	  form_header_simple_ext, form_header_multipart_ext are not
	  generated;
	(client_file_to_str) removed;
	(client_file_to_stdout) removed.

	* team.c:
	(initialize) `program_name' global variable is no longer used;
	  `self_url' is passed as an argument to `client_make_form_headers'.

	* prepare.c:
	new global parameters `ignore_compile_errors'. If set, compile
	  errors are not counted as failed runs and does not increase
	  penalty;
	global parameters `pipe_dir', `judge_dir', `judge_cmd_dir',
	  `judge_data_dir' are removed.
	(set_defaults) removed parameters are not handled;
	(create_dirs) removed parameters are not handled.

	* prepare.h:
	new global parameters `ignore_compile_errors'. If set, compile
	  errors are not counted as failed runs and does not increase
	  penalty;
	global parameters `pipe_dir', `judge_dir', `judge_cmd_dir',
	  `judge_data_dir' are removed.

	* protocol.c: new error messages added.

	* protocol.h: many new commands (mostly privileged) are added;
	several new errors added;
	(struct prot_serve_pkt_submit_clar) new fields: `dest_user_id',
	  `ref_clar_id', `dest_login_len', used by privileged message
	  sending;
	(struct prot_serve_pkt_team_page) fields `user_id', `contest_id',
	  `ip', `simple_form_len', `multi_form_len' removed;
	  fields `sid_mode', `self_url_len', `hidden_vars_len' added;
	(struct prot_serve_pkt_master_page) field `sid_mode' added;
	(struct prot_serve_pkt_standings) new packet;
	(struct prot_serve_pkt_view) new packet;
	(struct prot_serve_pkt_simple) new packet;
	(struct prot_serve_pkt_run_info) new packet.

	* runlog.h:
	(run_get_attempts) a new parameter added. If this parameter is 1,
	  all compile error runs are not counted;
	new enumeration for all `run_entry' fields (used in run_set_entry).
	(run_get_entry) new function;
	(run_set_entry) new function.

	* serve.c:
	GLOBAL CHANGE: new UNIX-socket based protocol is implemented
	  for master and judge;
	(struct client_state) `cookie', `ip' are saved;
	(report_to_client) removed;
	(report_error) removed;
	(report_bad_packet) removed;
	(report_ok) removed;
	(check_period) removed;
	(get_peer_local_user) IP-address is requested from the server
	  and saved in the `struct client_state';
	  cookie is saved in `struct client_state';
	(cmd_team_get_archive) team archive directory is created in var_dir
	  for now (since pipe_dir has gone);
	(cmd_team_list_runs) actual action are commented for now, since
	  their parameters changed, and the needed parameters are not
	  directly available. Protocol should be updated.
	(cmd_team_page) packet is changed, so the function is updated;
	(cmd_master_page) `sid_mode' is checked and passed to
	  `write_master_page';
	(cmd_priv_standings) new function;
	(cmd_view) new function;
	(cmd_message) new function;
	(cmd_gen_passwords) new function;
	(cmd_team_submit_clar) error of `generic_write_file' is checked;
	(cmd_priv_command_0) new function - handled many privileged protocol
	  commands;
	(process_judge_reply) removed;
	(judge_stat) removed;
	(judge_standings) removed;
	(judge_update_public_standings) removed;
	(judge_view_clar) removed;
	(judge_view_report) removed;
	(cmd_edit_run) new function;
	(judge_view_src) removed;
	(judge_start) removed;
	(judge_stop) removed;
	(judge_sched) removed;
	(judge_time) removed;
	(judge_change_status) removed;
	(judge_reply) removed;
	(judge_view_teams) removed;
	(judge_view_one_team) removed;
	(judge_change_team_login) removed;
	(judge_change_team_name) removed;
	(judge_change_team_password) removed;
	(judge_change_team_vis) removed;
	(judge_change_team_ban) removed;
	(do_add_team) removed;
	(judge_add_team) removed;
	(judge_message) removed;
	(do_rejudge_all) new function to rejudge all the runs;
	(judge_rejudge_all) removed;
	(do_rejudge_problem) new function to rejudge only particular problem;
	(judge_rejudge_problem) removed;
	(judge_reset_contest) removed;
	(judge_suspend_clients) removed;
	(judge_resume_clients) removed;
	(judge_generate_passwords) removed;
	(judge_cmds) removed;
	(read_judge_packet) removed;
	(packet_handlers) many new packet handlers are added;
	(do_loop) `judge_cmd_dir' is no longer scanned;
	(write_submit_templates) removed, as nobody uses that templates;
	(main) `write_submit_templates' is no longer called.

	* team.c: GLOBAL CHANGE: cookie support is implemented;
	"misctext.h", "client_actions.h" are included;
	<ctype.h> is included;
	new global parameter `enable_session_mode' to enable the dialog
	  about supported session modes. By default dialog is disabled,
	  and cookies are used;
	(setup_locale) new function to set locale;
	(make_self_url) new function to make a self-referencing URL;
	(hyperref) new function to make self-hyperreference;
	(open_serve) new function to open the contest-server connection;
	(set_cookie_if_needed) new function to send the cookie to client;
	(set_defaults) contest-server connection is now opened on demand;
	  self-reference URL is constructed;
	(read_state_params) `form_start_simple', `form_start_multipart'
	  are constructed depending on the current session mode;
	  hidden_vars is also constructed;
	  `client_action' is read from CGI parameters;
	(display_enter_password) rewritten;
	(get_cookie) a new function to parse cookie from the environment;
	(open_userlist_server) a new function to open userlist-server
	  connection;
	(permission_denied) a new function to report error;
	(fatal_server_error) a new function to report error;
	(is_auth_error) a new function, which returns 1, if the given
	  error code is due to failed authentification;
	(get_session_id) a new function, which parses session_id from
	  CGI parameters;
	(client_put_refresh_header) a new function, which generates
	  auto-refresh header;
	(authentificate) a new function to perform the operation;
	(operation_status_page) a new function, which displays (possibly
	  auto-refreshed) page with the status of the current operation;
	(print_refresh_button) rewritten;
	(print_logout_button) new function;
	(send_clar_if_asked) `operation_status_page' is used instead of
	  `error';
	  contest server connection is opened immediately before sending
	  clarification request;
	(submit_if_asked) `operation_status_page' is used instead of `error';
	(action_change_password) renamed from `change_password_if_asked';
	  the old password is also taked from CGI-parameters;
	  `operation_status_page' is used instead of `error';
	  userlist-server connection is opened immediately before operation;
	(show_clar_if_asked) `set_cookie_if_needed' is called before
	  client_put_header;
	  navigation buttons are printed using `print_nav_buttons';
	  contest-server connection is opened immediately before operation;
	(request_source_if_asked) the same as above;
	(request_report_if_asked) the same as above;
	(request_archive_if_asked) redundant check for the new client-serve
	  mode is removed;
	  contest-server connection is opened immediately before operation;
	  `operation_status_page' is used instead of `error';
	(action_change_language) a new function to reload the page
	  (clear POST-submitted vars);
	(action_logout) a new function;
	(display_team_page) contest-server connection is opened immediately
	  before operation;
	  parameters of `serve_clnt_team_page' changed;
	(print_nav_buttons) new function;
	(read_locale_id) new function;
	(main) locale setting code is separated into two functions:
	  `read_locale_id', `setup_locale';
	  `authentificate' is used for authentification;
	  `client_action' variable's value is used to perform the requested
	  action;
	  `set_cookie_if_needed' is called before `client_put_header';
	  `print_nav_buttons' is used instead of `print_refresh_button';
	  old password is requested to change password.

	* userlist-server.c:
	(struct client_state) added fields `cookie', `ip' to save the
	  corresponding parameters of the client;
	(remove_cookie) fixed bug, when all the user's cookies are removed
	  when the last cookie in the list is removed;
	(login_user) user IP-address and cookie are saved;
	(login_team_user) the same as above;
	(cmd_login_priv_user) current privilege level is saved in the cookie;
	  user IP-address and cookie are saved;
	(login_cookie) user IP-address and cookie are saved in
	  `struct client_state';
	(login_team_cookie) cookie with privilege level == 0 and matching
	  contest_id is searched;
	  user IP-address and cookie are saved in `struct client_state';
	(login_priv_cookie) a new function;
	(logout_user) completely rewritten;
	(cmd_get_uid_by_pid) verbosity decreased;
	  cookie and IP-address is returned in the packet;
	(process_packet) `ULS_PRIV_CHECK_COOKIE' is supported.

2002-12-21  Alexander Chernov  <cher@ispras.ru>

	* runlog.c:
	(run_get_attempts) new parameter `skip_ce_flag'. If this parameter
	  is set to non-zero value, runs that have RUN_COMPILE_ERR status
	  are ignored instead of counting compile error as a failed submit
	  and incuring penalties;
	(run_get_entry) new function, which exports the given entry into
	  `struct run_entry' structure;
	(run_set_entry) a new functon, which sets the specified by the mask
	  fields fields uf `struct run_entry'.

	* serve_clnt.h:
	(serve_clnt_team_page) removed parameters: `user_id', `contest_id',
	  `ip', `simple_form', `milti_form';
	  added parameters: sid_mode, self_url, hidden_vars;
	(serve_clnt_standings) new function prototype;
	(serve_clnt_view) new function prototype;
	(serve_clnt_message) new function prototype;
	(serve_clnt_gen_passwords) new function prototype;
	(serve_clnt_simple_cmd) new function prototype;
	(serve_clnt_edit_run) new function prototype.

	* userlist_clnt.h: 
	(userlist_clnt_get_uid_by_pid) parameter `p_ip' added;
	(userlist_clnt_priv_cookie) new function prototype;
	(userlist_clnt_logout) new function prototype.

	* userlist_proto.h:
	(struct userlist_pk_check_cookie) field `priv_level' added;
	(struct userlist_pk_do_logout) fields `origin_ip', `user_id' removed;
	(struct userlist_pk_uid) `ip' field added.

	* client_actions.h: many new client action codes added.

	* teamdb.h: 
	(teamdb_lookup_login) implemented for the client mode;
	(teamdb_scramble_passwd) removed;
	(teamdb_check_scrambled_passwd) removed;
	(teamdb_check_passwd) removed;
	(teamdb_set_scrambled_passwd) removed;
	(teamdb_get_plain_passwd) removed;
	(teamdb_get_write_passwd) removed;
	(teamdb_write_teamdb) removed;
	(teamdb_is_valid_login) removed;
	(teamdb_is_valid_name) removed;
	(teamdb_change_login) removed;
	(teamdb_change_name) removed;
	(teamdb_add_team) removed;
	(teamdb_transaction) removed;
	(teamdb_commit) removed;
	(teamdb_rollback) removed;
	(teamdb_regenerate_passwords) parameter changed: now plain file
	  descriptor is accepted and passed directly to userlist-server;
	(teamdb_get_uid_by_pid) new parameter `p_ip' added;
	(struct teamdb_export) fields `scrambled', `passwd' are removed.

	* teamdb.c: 
	(teamdb_lookup_login) implemented for the client mode;
	(teamdb_scramble_passwd) removed;
	(teamdb_check_scrambled_passwd) removed;
	(teamdb_check_passwd) removed;
	(teamdb_set_scrambled_passwd) removed;
	(teamdb_get_plain_passwd) removed;
	(teamdb_get_write_passwd) removed;
	(teamdb_write_teamdb) removed;
	(teamdb_is_valid_login) removed;
	(teamdb_is_valid_name) removed;
	(teamdb_change_login) removed;
	(teamdb_change_name) removed;
	(teamdb_add_team) removed;
	(teamdb_transaction) removed;
	(teamdb_commit) removed;
	(teamdb_rollback) removed;
	(teamdb_regenerate_passwords) parameter changed: now plain file
	  descriptor is accepted and passed directly to userlist-server;
	(teamdb_get_uid_by_pid) new parameter `p_ip' added.

	* sformat.c:
	(sformat_message) 'Mp' and 'Ms' format specifiers are no longer
	  supported, as this information (plain password and scrambled
	  password) is no longer available to the server.

2002-12-20  Alexander Chernov  <cher@ispras.ru>

	* client_actions.h: Initial revision

2002-12-15  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	(cmd_master_page) the user is checked to have privilege level
	  at least at PRIV_LEVEL_OBSERVER.

2002-12-14  Alexander Chernov  <cher@ispras.ru>

	* filter_scan.lex: keyword "and" is synonim for "&&";
	keyword "or" is synonim for "||".

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* run.c:
	(run_tests) reverted back previous behavour: output files are
	  created with 0600 (read-write) permissions, as DOS programs
	  otherwise do not work.

	* master_html.c:
	(write_all_runs) "Rejudge problem" and "Rejudge all" buttons
	  only appears in PRIV_LEVEL_ADMIN privileges.

	* master.c:
	(change_status_if_asked) since the number of failed tests and
	  the gained score cannot be edited, the corresponding CGI
	  variables are not parsed, and -1 is always passed to the server.

	* userlist_xml.c: "protocol.h" is included;
	"priv_level" cookie attribute is generally supported
	  (parsed and unparsed);
	(parse_priv_level) a new function to parse the attribute;
	(parse_cookies) "priv_level" attribute is handled;
	(unparse_cookies) "priv_level" attribute is handled.

	* userlist_proto.h: privilege level enumeration is defined;
	new commands `ULS_PRIV_LOGIN', `ULS_PRIV_CHECK_COOKIE' are added;
	"char[0]" is no longer used in all the packet structures, "char[N]" is
	  used, where N is the number of text parameters for the packet;
	(userlist_pk_do_login) new field `priv_level';
	(userlist_pk_login_ok) new field `priv_level';
	(userlist_pk_uid) new field `priv_level'.

	* userlist_clnt.h:
	(userlist_clnt_get_uid_by_pid) new parameter `p_priv_level' added;
	(userlist_clnt_priv_login) new function prototype added.

	* userlist.h: privilege level enumeration is defined;
	new attribute `priv_level' is added;
	(struct userlist_cookie) `priv_level' field is added.

	* userlist-server.c:
	(struct client_state) field `priv_level' is added;
	(cmd_login_priv_user) a new function to handle `ULS_PRIV_LOGIN';
	(cmd_get_uid_by_pid) `priv_level' is returned to the client;
	(process_packet) `ULS_PRIV_LOGIN' request is handled.

	* teamdb.h: 
	(teamdb_get_uid_by_pid) new parameter `p_priv_level' added.

	* teamdb.c:
	(teamdb_get_uid_by_pid) a new parameter `p_priv_level' is accepted
	  and passed directly to the underlying userlist_clnt function.

	* serve_clnt.h:
	(serve_clnt_master_page) `flags' parameter is renamed to `priv_level'.

	* serve.c:
	(struct client_state) new field `priv_level' to store the privilege
	  level for the connected user;
	(get_peer_local_user) `priv_level' is requested;
	  success condition is "r >= 0", not "r > 0";
	(cmd_pass_descriptors) `get_peer_local_user' is commented out;
	(cmd_master_page) new function to display the master page;
	(packet_handlers) reference to `cmd_master_page' is added;
	(check_sockets) when `process_packet' is done, the client state
	  descriptor `p' is checked to be valid, since the connection
	  may be closed during request processing. Only if client state
	  descriptor is valid, its read buffers are cleaned up.

	* protocol.h: new request `SRV_CMD_MASTER_PAGE';
	the privilege level enumeration is defined;
	(struct prot_serve_pkt_master_page) new packet structure;
	(protocol_priv_level_str) new function prototype is added.

	* protocol.c: <reuse/logger.h> is included;
	(protocol_priv_level_str) a new function.

	* master_html.c: "html.h" is included;
	the client state is moved into the structure `struct user_state_info',
	  which is separate for each admin user, the array of references
	  to these structures is `users';
	(parse_error_func) uses `cur_user' user state pointer to append
	  messages;
	(write_all_runs) new parameter `u' - user state information;
	  `mode' parameter is renamed to `priv_level';
	(write_all_clars) new parameter `u' - user state information;
	  `mode' parameter is renamed to `priv_level';
	(allocate_user_info) new function to create a new user state
	  structure, if needed;
	(write_master_page) new parameter `user_id';
	  `mode' parameter is renamed to `priv_level'.

	* master.c:
	GENERAL CHANGE: the `master' utility now uses `userlist-server'
	  authentification, uses socket to pass requests to the contest
	  server (only master_page is currently passed this way);
	new includes: "serve_clnt.h", "contests.h", "protocol.h",
	  "userlist_proto.h", "userlist_clnt.h";
	removed configuration parameters: `contest_name', `password',
	  `problems_submit_file', `standings_url';
	added new configuration parameters: `contest_id', `socket_path',
	  `contests_path', `serve_socket';
	(read_state_params) "view_all_runs", "view_all_clars" CGI parameters
	  are now handled in another function;
	  `login' variable is generated to the hidden variables;
	  `password' is html-armored;
	  previously commented stuff is removed;
	(make_self_url) a new function to make a self-reference URL;
	(display_enter_password) displays login and password text fields;
	(ask_passwd) checks both login and password;
	(check_passwd) uses `userlist-server' for authentification;
	(read_view_params) new function: reads and parses CGI-parameters for
	  filtering and displaying runs and clars;
	(view_teams_if_asked) `priv_level' variable is used instead
	  `judge_mode';
	(view_clar_if_asked) the same;
	(navigate_if_asked) completely removed;
	(clar_navigate_if_asked) completely removed;
	(get_contest_statistics) removed;
	(set_defaults) handling of `password' parameter removed;
	  handling of `problems_submit_file' is removed;
	  `contest_id', `serve_socket' are handled;
	(parse_client_ip) new function to parse the IP to binary form;
	(initialize) `priv_level' variable is set depending on the program
	  name;
	  contest_id is checked to be valid;
	  the client IP-address is parsed;
	  the self-reference URL is prepared;
	(open_serve) a new function, which opens contest server connection;
	(display_master_page) a new function to request the contest server
	  to generate the master page;
	(main) view parameters are parsed with `read_view_params';
	  `priv_level' variable is used instead `judge_mode';
	  previously commented stuff is completely removed;
	  the contest server is requested to generate list of runs and clars,
	  and the socket file descriptor is passed;
	  write message dialog is displayed, if privelege level >= JUDGE.

	* makefile:
	file lists for `master', `serve', `register', `userlist-server',
	  `edit-userlist', `filter_test' utilities changed;
	file list for libserve_clnt.a changed;
	`master' now requires expat.

	* html.h: 
	(write_master_page) a new function prototype is added.

	* files.make: files added: userlist_clnt/priv_login.c, master_html.c,
	  serve_clnt/master_page.c.

	* contests.h:
	new element tags: <privileged_users>, <administrator>, <judge>,
	  <observer>;
	(struct contest_desc) new field `priv_users'.

	* contests.c: 
	(parse_contest) <privileged_users> element is supported.

	* clntutil.c:
	(client_print_server_status) `read_only' function parameter is renamed
	  to `priv_level' function parameter. `priv_level' is checked to
	  be PRIV_LEVEL_ADMIN to display contest parameter change controls.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-12-13  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(run_tests) the team program output file is created with mode
	  0200 (write-only);
	  the team program output file modes are changed to 0600 after the
	  program is completed.

	* filter_tree.h: 
	(filter_expr_set_string) parameter `errfunc' added;
	(filter_expr_init_parser) parameter `errfunc' added;
	extern variable `filter_expr_nerrs' added;
	extern variable `filter_expr_lval' added.

	* filter_tree.c: YYSTYPE macro is properly defined.

	* filter_test.c:
	`renties' field is renamed to `rentries' field in filter_env;
	(filter_runs) output format is changed;
	(main) call of `filter_expr_set_string' updated;
	  call of `filter_expr_init_parser' updated.

	* filter_scan.lex:
	system includes are moved after the local includes;
	global static variable `scan_err' added;
	all errors are reported using `scan_err' function pointer;
	(local_err_func) new function: default error printing;
	(filter_expr_set_string) new parameter `errfunc'.

	* filter_expr.y: global static variable `parse_err' is defined;
	YYERROR_VERBOSE macro is defined;
	all errors are reported using `parse_err' function pointer;
	(filter_expr_init_parser) an extra parameter `errfunc' added.

	* filter_eval.h:
	(struct filter_env) field `renties' is renamed to `rentries'.

	* filter_eval.c: YYSTYPE macro is properly defined;
	`renties' is renamed to `rentries'.

	* clntutil.c: 
	(client_puts) function removed as nobody now uses it.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* serve_clnt.h:
	(serve_clnt_master_page) a new function prototype is added.

	* teamdb.c:
	(restore_connection) error codes, returned by the userlist_clnt
	  routines are negative;
	(teamdb_get_uid_by_pid) error codes from
	  `userlist_clnt_get_uid_by_pid' are negative;
	  the actual error code is returned.

	* userlist-server.c:
	(cmd_get_uid_by_pid) negative error codes are returned on error;
	(do_work) when `process_packet' finished, the client_state
	  descriptor may be invalid since freed during processing of the
	  request, so the pointer must be revalidated and only after that
	  the structure may be updated.

	* master_html.c: Initial revision

2002-12-11  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist-server.c: 
	(login_team_user) the ban check is fixed;
	(login_team_cookie) the ban check is fixed.

	* runlog.h: `RUN_LOG_READONLY' new constant added;
	(struct run_header) moved here from runlog.c;
	(struct run_entry) moved here from runlog.c;
	(run_get_header) new function prototype;
	(run_get_all_entries) new function prototype.

	* runlog.c:
	structs `run_header' and `run_entry' are moved to runlog.h;
	(run_open) new `RUN_LOG_READONLY' flag is supported;
	(run_get_header) new function to copy the log header to the user's
	  location;
	(run_get_all_entries) new function to copy the whole log to the
	  user's location.

	* prepare.c: 
	(set_defaults) one debugging print is removed.

	* makefile: filter_test added to targets;
	rule for compiling filter_test changed to include all the necessary
	  stuff to lookup the real run database.

	* filter_tree.h, filter_tree.c, filter_test.c: completed.

	* filter_scan.lex: completed

	* filter_expr.y: completed.

	* files.make: filter_eval.[ch] module added.

	* filter_eval.h, filter_eval.c: Initial revision

2002-12-09  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* filter_expr.y: in progress...

	* filter_tree.h: FILTER_ERR_* constants are added;
	(filter_tree_new_dur) function prototype added;
	(filter_tree_eval_node) function prototype added;
	(filter_strerror) function prototype added.

	* filter_tree.c: <errno.h> and <limits.h> included;
	(filter_tree_new_dur) new function;
	(str_to_int) new function;
	(filter_tree_eval_node) new function;
	(filter_strerror) new function.

	* filter_scan.lex: rule for octal literals is fixed.

2002-12-08  Alexander Chernov  <cher@ispras.ru>

	* filter_test.c, filter_tree.h, filter_tree.c, filter_scan.lex, filter_expr.y:
	Initial revision

	* makefile:
	userlist_clnt.c is removed and replaced with libuserlist_clnt.a;
	clean rule is updated;
	deps ruls is removed;
	version.c now depends on OTHERFILES as well;
	libuserlist_clnt.a rule are added;
	experimental rules for filter expression parsing are added.

	* files.make: OTHERFILES variable added.

	* files.make:
	new variable USERLIST_CLNT_CFILES to list all the modules in
	  userlist_clnt subdirectory;
	filter_test.c, filter_tree.[ch] modules are added;
	userlist_clnt.c is removed;
	userlist_clnt/private.h is added.

	* userlist_cfg.h:
	(struct userlist_cfg_user_map) a new structure to store the
	  parsed mapping from the system uids to the local uids;
	(struct userlist_cfg) `user_map' field is added.

	* userlist_cfg.c: new tags: `user_map', `map';
	new attributes `system_user', `local_user';
	(parse_user_map) a new function;
	(userlist_cfg_parse) <map> element is handled;

	* userlist-server.c:
	(detach_contest_extra) `vintage' of the shared data is set to the
	  invalid value just for the client to mention the change;
	(update_userlist_table) BANNED teams are also added to the table;
	  0xffff and 0x0000 vintage values are skipped;
	(build_system_uid_map) a new function, which builds mapping from
	  the system uids to the local uids;
	(remove_from_system_uid_map) a new function to remove the local uid
	  from the mapping;
	(do_remove_user) the user is also removed from system uid mapping;
	(set_user_info) `city' and `country' fields are supported;
	  member's `occupation' field is updated, if changed: bug fixed;
	(do_list_users) `city' and `country' are reported;
	(cmd_get_uid_by_pid) a new function to handle ULS_GET_UID_BY_PID
	  requests from the `serve' process;
	(process_packet) ULS_GET_UID_BY_PID command is handled;
	(main) the mapping from the system uids to the local uids is built.

	* serve.c:
	(get_peer_local_user) a new function to request the connection
	  credentials from the userlist-server;
	(cmd_pass_descriptors) connection credentials are requested;
	(cmd_team_get_archive) connection credentials are requested and
	  checked;
	(cmd_team_list_runs) the same as above;
	(cmd_team_page) the same as above;
	(cmd_team_show_item) the same as above;
	(cmd_team_submit_run) the same as above;
	(cmd_team_submit_clar) the same as above;
	(check_sockets) function returns, if no file descriptors to wait on;
	(do_loop) check for exit condition is performed in the beginning
	  of the main loop;
	(main) old the teamdb files authentification-related code is
	  removed.

	* teamdb.c:
	all the old files-related authentification stuff is removed;
	userlist-server disconnection is now handled properly;
	<signal.h> is included;
	(handler) new function: a temporary handler for user termination
	  signal, installed for the time of reestablishing server connection;
	(restore_connection) a new function to restore the lost connection
	  to the server;
	(lock_userlist_table) server disconnect is handled properly;
	(unlock_userlist_table) semop errors are reported, but otherwise
	  ignored;
	(teamdb_refresh) termination of `lock_userlist_table' due to
	  impossibility to restore connection to server is handled;
	(verify_passwd) removed;
	(read_fields) removed;
	(parse_teamdb_flags) removed;
	(parse_passwd_flags) removed;
	(unparse_passwd_flags) removed;
	(teamdb_open) removed;
	(teamdb_open_client) socket_path is saved for possible reconnection;
	  obsoleted files authentification stuff is removed;
	(teamdb_lookup_client) `cached_map == NULL' size is handled;
	(teamdb_lookup) obsoleted stuff is removed;
	(teamdb_lookup_login) obsoleted stuff is removed;
	(teamdb_get_login) obsoleted stuff is removed;
	(teamdb_get_name) the same;
	(teamdb_scramble_passwd) always reports "Not supported" error;
	(teamdb_check_scrambled_passwd) the same;
	(teamdb_check_passwd) the same;
	(teamdb_set_scrambled_passwd) the same;
	(teamdb_get_plain_password) the same;
	(teamdb_get_flags) BANNED flag may be also returned;
	(teamdb_write_passwd) always reports "Not supported" error;
	(teamdb_write_teamdb) the same;
	(teamdb_get_max_team_id) obsoleted stuff is removed;
	(teamdb_get_total_teams) the same;
	(teamdb_is_valid_login) always reports "Not supported" error;
	(teamdb_is_valid_name) the same;
	(teamdb_change_login) the same;
	(teamdb_change_name) the same;
	(teamdb_toggle_vis) the same;
	(teamdb_toggle_ban) the same;
	(teamdb_add_team) the same;
	(teamdb_transaction) the same;
	(teamdb_commit) the same;
	(teamdb_rollback) the same;
	(save_undo) removed;
	(teamdb_export_team) obsoleted stuff is removed;
	(teamdb_regenerate_passwords) server disconnect is handled;
	(syncronize_team_extra) return immediately, if not connected to server;
	(teamdb_get_archive_time) `server_conn' is asserted;
	(teamdb_set_archive_time) `server_conn' is asserted;
	(teamdb_get_uid_by_pid) a new function to request the local process
	  credentials by is pid.

	* teamdb.h: 
	(teamdb_get_uid_by_pid) prototype added.

	* run.c: <termios.h> is included;
	(generate_team_report) the process exit code is not reported to
	  the user unless global parameter `report_error_code' is set;
	(run_tests) terminal state is saved before starting the program
	  being judged and restored afterwards.

	* register.c:
	new global variables `user_city', `user_country' to store the
	  corresponding fields;
	(field_desc) description of "City", "Country" fields added;
	(read_user_info_from_server) `user_country', `user_city' are read;
	(edit_registration_data) the generated HTML is slightly changed.

	* html.c:
	(do_write_kirov_standings) fully solved problems are printed in bold;
	  an extra column with the total number of fully solved problems
	  is printed for each user.

	* expat_iface.c:
	<reuse/logger.h>, <reuse/xalloc.h> are included this way.

	* edit-userlist.c:
	(print_help) a new function to print a short help in the bottom line;
	(vis_err) help is displayed;
	(okcancel) help is displayed;
	(yesno) help is displayed;
	(display_reg_status_menu) help is displayed;
	(display_role_menu) help is displayed;
	(display_member_status_menu) help is displayed;
	(edit_string) help is displayed;
	(display_user) help is displayed;
	  new fields `city', `country' are supported;
	(display_registered_users) the help is displayed via `print_help';
	(display_contests_menu) help is displayed;
	(display_user_menu) help is displayed;
	(display_main_menu) help is displayed.

	* userlist_xml.c:
	(tag_map) element tags `city', `country' are supported;
	(tag_sizes) the same as above;
	(node_free) `city', `country' fields are freed;
	(do_parse_user) `city', `country' elements are parsed;
	(unparse_user) `city', `country' elements are unparsed.

	* userlist_clnt.h: 
	(userlist_clnt_get_uid_by_pid) new prototype added.

	* userlist.h: new tags: USERLIST_T_CITY, USERLIST_T_COUNTRY;
	new field ids: USERLIST_NN_CITY, USERLIST_NN_COUNTRY;
	(struct userlist_user) fields `city', `country' are added.

	* userlist.c:
	(userlist_get_user_field_str) new fields `city' and `country'
	  are supported;
	(userlist_set_user_field_str) the same as above;
	(userlist_delete_user_field) the same as above.

	* team.c: 
	(main) minor change in the generated HTML text.

	* runlog.c:
	(read_runlog) when runlog is empty the file version in the header
	  is set to 1.

	* protocol.h: new server error SRV_ERR_NO_PERMS.

	* protocol.c: new error message: "permission denied".

	* prepare.h, prepare.c:
	new global parameter `report_error_code' is supported.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* contests.h: new constants CONTEST_F_CITY, CONTEST_F_COUNTRY added.

	* contests.c:
	(field_map) new userlist user fields `city' and `country' are
	  handled.

	* .cvsignore: *** empty log message ***

2002-12-06  Alexander Chernov  <cher@ispras.ru>

	* userlist_clnt.c:
	Removed. All the functions are moved to individual files
	in userlist_clnt directory.

	* userlist_clnt.h: <string.h> is included;
	(userlist_clnt_send_packet) new function prototype. It was
	  previously a static function;
	(userlist_clnt_recv_packet) new function prototype. The same as
	  above;
	(userlist_clnt_do_pass_fd) new function prototype. The same.

	* userlist_proto.h: new request ULS_GET_UID_BY_PID;
	new reply ULS_UID;
	new error code ULS_ERR_DISCONNECT;
	new request structure userlist_pk_get_uid_by_pid;
	new reply structure userlist_pk_uid.

	* userlist_proto.c: new error code verbose message.

2002-12-03  Alexander Chernov  <cher@ispras.ru>

	* .cvsignore, .cvsignore: *** empty log message ***

	* serve.c: 
	(read_run_packet) a minor spelling error is fixed;
	  in `KIROV' score system only RUN_OK, RUN_PARTIAL and
	  RUN_CHECK_FAILED testing results are allowed.

	* run.c:
	(run_tests) in KIROV judging mode when even one test is failed
	  with RUN_CHECK_FAILED, the whole test run is marked as
	  RUN_CHECK_FAILED.

	* makefile:
	added rule `subdirs_all' to recurse to subdirectories and do
	  `make all';
	rule `clean' recurses to subdirectories;
	rules to compile `cdeps' are added;
	all the dependencies are removed from the makefile. They are generated
	  on the fly using `cdeps' utility.

2002-12-02  Alexander Chernov  <cher@ispras.ru>

	* VERSION: *** empty log message ***

	* serve.c: MAJOR CHANGES:
	  team<->serve protocol is changed:
	  o a single UNIX socket is used instead of spool directory;
	  o requests and responses are passed in binary form;
	  o team credentials are passed upon connection (normally, they are
	    credentials of the web server);
	  o to handle reguests, where large amount of html is generated,
	    remote client socket file descriptors are passed via UNIX
	    socket, so the server writes directly to the remote client;
	DETAILED DESCRIPTION:
	"userlist.h", "sha.h" files are included;
	lots of system includes related to the sockets and select are
	  included;
	(struct client_state) a new structure to store the state of the
	  client;
	(client_new_state) a new function to contstruct new client structure;
	(client_disconnect) a new function to destroy client structure;
	(struct remove_queue_item) a new structure to store the list
	  of items pending to removal;
	(remove_queue_add) a new function to add an item to the remove queue;
	(interrupt_signal) a new function - handler for SIGTERM, SIGINT;
	global variable `current_time' is used instead of local `time()' calls
	  in all the functions;
	(update_standings_file) declared `static';
	(update_public_log_file) declared `static';
	(update_status_file) declared `static';
	  `download_interval' field is written;
	(check_team_quota) declared `static';
	  `size_t' type is used;
	(check_clar_qouta) declared `static';
	(report_to_client) declared `static';
	(report_error) declared `static';
	  team_data_dir parameter is now removed;
	(report_bad_packet) declared `static';
	(is_valid_status) declared `static';
	  `RUN_IGNORED' is valid;
	(check_period) declared `static';
	(team_view_clar) function is removed;
	(new_enqueue_reply) a new function to add the packet to send slot
	  for the client;
	(team_send_clar) function is removed;
	(new_send_reply) a new function to send to the client a message
	  without any additional data;
	(new_bad_packet) a new function to report bad packet error and
	  close the connection;
	(cmd_pass_descriptors) a new function to handle SRV_CMD_PASS_FD
	  request;
	(cmd_team_get_archive) a new function to handle SRV_CMD_GET_ARCHIVE
	  request;
	(team_submit) function is removed;
	(cmd_team_list_runs) a new function to handle SRV_CMD_LIST_RUNS;
	(cmd_team_page) a new function to handle SRV_CMD_TEAM_PAGE;
	(team_change_passwd) removed;
	(cmd_team_show_item) a new function to handle SRV_CMD_SHOW_SOURCE,
	  SRV_CMD_SHOW_CLAR and SRV_CMD_SHOW_REPORT requests;
	(team_stat) removed;
	(cmd_team_submit_run) a new function to handle SRV_CMD_SUBMIT_RUN;
	(team_view_report) removed;
	(team_view_source) removed;
	(cmd_team_submit_clar) a new function to handle SRV_CMD_SUBMIT_CLAR;
	(read_team_packet) removed;
	(read_compile_packet) declared `static';
	(read_run_packet) declared `static';
	(process_judge_reply) declared `static';
	(rejudge_run) declared `static';
	  `run_get_record' call is updated;
	(judge_stat) declared `static';
	(judge_standings) declared `static';
	(judge_update_public_standings) declared `static';
	(judge_view_clar) declared `static';
	(judge_view_report) declared `static';
	(judge_view_src) declared `static';
	(judge_start) declared `static';
	(judge_stop) declared `static';
	(judge_sched) declared `static';
	(judge_time) declared `static';
	(judge_change_status) declared `static';
	  `RUN_IGNORED' run status is handled;
	(judge_reply) declared `static';
	(judge_view_teams) declared `static';
	(judge_view_one_team) declared `static';
	(judge_change_team_login) declared `static';
	(judge_change_team_name) declared `static';
	(judge_change_team_password) declared `static';
	(judge_change_team_vis) declared `static';
	(judge_change_team_ban) declared `static';
	(do_add_team) declared `static';
	(judge_add_team) declared `static';
	(judge_message) declared `static';
	(judge_rejudge_all) declared `static';
	  `RUN_IGNORED' runs are not rejudged;
	(judge_rejudge_problem) declared `static';
	  `RUN_IGNORED' runs are not rejudged;
	(judge_reset_contest) declared `static';
	(judge_suspend_clients) declared `static';
	(judge_resume_clients) declared `static';
	(judge_cmds) declared `static';
	(read_judge_packet) declared `static';
	(check_remove_queue) a new function to check the remove queue and
	  unlink pending items;
	(process_packet) a new function to handle packets from UNIX socket;
	(create_socket) a new function to create the socket and initialize
	  the related data structures;
	(check_sockets) a new function, which watch on the icoming file
	  descriptors;
	(may_safely_exit) a new function, which checks whether the server
	  may be exited. All the write buffers must be empty;
	(do_loop) declared `static';
	  signal handler for SIGINT, SIGTERM is installed;
	  SIGPIPE signal is ignored;
	  team spool directory is no longer checked and the corresponding
	  configuration parameters are removed;
	(main) socket file is unlinked when do_loop exits.

	* html.h: <stdio.h>, <time.h> are included;
	(write_team_clar) prototype is removed;
	(write_team_report_view) removed;
	(write_team_source_view) removed;
	(new_write_user_runs) prototype added;
	(new_write_user_clars) prototype added;
	(new_write_user_clar) prototype added;
	(new_write_user_source_view) prototype added;
	(new_write_user_report_view) prototype added;
	(write_team_page) prototype added.

	* html.c: "protocol.h" file is included;
	(write_clar_view) call of `duration_str' is updated due to changes
	  in its parameters;
	(new_write_user_runs) a new function (a part of former
	  `write_team_statistics'), which prints only run log for a user;
	(new_write_user_clars) a new function (a part of former
	  `write_team_statistics'), which prints only clar log for a user;
	(write_team_statistics) split into the two new functions (see above);
	(write_team_clar) removed;
	(new_write_user_clars) a new function (previously write_team_clar),
	  which prints detailed clarification request;
	(do_write_kirov_standings) standings_charset global parameter is
	  used;
	  `run_get_record' call is updated;
	  `duration_str' call is updated;
	(do_write_standings) the same changes as above;
	(write_standings) if `charset' and `standings_charset' does not
	  match, standings are recoded;
	(do_write_public_log) `time_t', `size_t' types are used;
	  `duration_str' call is updated;
	(write_public_log) `time_t', `size_t' types are used;
	  `run_get_record' call is updated;
	  `duration_str' call is updated;
	  printf format specifiers are changed for size_t-typed vars;
	  "Ignore" option is added;
	(write_judge_allclars) `duration_str' call is updated;
	(new_write_user_source_view) this is new name for
	  `write_team_source_view';
	  the user source is generated to the passed stream descriptor;
	  the possible error code is returned from the function;
	(new_write_user_report_view) this is new name for
	  `write_team_report_view';
	  the report is written to the passed stream descriptor;
	  the function returns its error code;
	(write_team_page) a new function, which generates the team main page,
	  including run log, submit dialog, clar log, write new clar dialog.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* team.c: ARCHITECTURE CHANGED:
	  `userlist-server' daemon is used for authentification. The old files
	  method (teamdb, passwd) is no longer supported;
	  team->serve protocol is completely changed. It uses a single UNIX
	  socket. It passes the data in binary format. In some cases the client
	  passes to the server the file descriptors, which may be user to
	  write the HTML code to the remote client directly.
	PARAMETERS CHANGED:
	  o `contest_name' parameter is removed, the contest name is taken
	    from the contests XML database,
	  o `conf_dir' parameter is removed: no longer used;
	  o `teamdb_file' parameter is removed: authentification is performed
	    with `userlist-server' daemon;
	  o `passwd_file' is removed: the same is above;
	  o `languages_file' parameter is removed, the main team page
	    is now generated on the server side, which has all the necessary
	    information;
	  o `problems_submit_file' is removed: the same as above;
	  o `problems_clar_file' is removed: the same as above;
	  o `pipe_dir' is removed: team<->serve interaction is performed
	     through UNIX socket, so no separate directory is necessary;
	  o `team_dir' is removed: the same as above;
	  o `team_cmd_dir' is removed: the same as above;
	  o `team_data_dir' is removed: the same as above;
	  o `serve_socket' new parameter to specify the name of the UNIX
	    socket to communicate with server. Default value `serve' works,
	    if not changed on server;
	"teamdb.h" is removed;
	"protocol.h", "serve_clnt.h" are included;
	<stdarg.h> is included;
	default parameter values of removed parameters are removed;
	(struct section_global_data) fields which corresponds to the
	  removed parameters are removed;
	  new field `serve_socket';
	(error) new function to append messages to the error log;
	(set_defaults) changed substantially;
	(initialize) changed substantially;
	(read_server_templates) no longer used;
	(check_passwd) old files-based method is no longer supported;
	(get_team_statistics) removed;
	(send_clar_if_asked) changed substantially;
	(submit_if_asked) changed substantially;
	(change_passwd_if_asked) changed substantially;
	(show_clar_if_asked) changed substantially;
	(request_source_if_asked) changed substantially;
	(request_report_if_asked) changed substantially;
	(request_archive_if_asked) new function to download the user's
	  submit archive (in tar.gz format);
	(display_team_page) new function to send `team page' request to the
	  server. The remove client socket file descriptor is passed in the
	  request;
	(main) changed substantially.

	* runlog.c:
	MAJOR CHANGE: the database is now stored in the binary format;
	(struct run_header) `time_t' type is used instead of `unsigned long';
	  `version' field is added to store the database file version,
	   version 0 is the text database file, version 1 is the current,
	  `pad' field is added to pad the structure size to 64 bytes;
	(struct run_entry) `time_t', `size_t' types are used where appropriate;
	  `ip' is stored in binary format (ie unsigned long) rather than in
	  textual format;
	  new field `sha1' to store the run hash value;
	  `locale_id', `test' are now `signed char's to save the memory;
	  `language', `status' are now `unsigned char's;
	(run_read_entry) `sscanf' specification is updated since field
	  types are changed;
	  `ip' is parsed from textual to binary representation using
	  `run_parse_ip';
	(is_runlog_version_0) new function, which checks, whether the
	  run database file is in textual format (version 0 format);
	(read_runlog_version_0) new function, which reads the runlog
	  in textual format;
	(save_runlog_backup) new function, which saves the runlog file
	  under the name `runlog.bak';
	(do_write) a new function to write block to file, handing partial
	  writes;
	(do_read) a new function to read block from file, handing partial
	  reads;
	(write_full_runlog_current_version) a new function to write the
	  runlog in the current version format;
	(read_runlog) a new function to read the runlog in binary format;
	(run_open) function is rewritten. It handles different database
	  formats. If the database is in text format, the backup copy is
	  saved;
	(run_make_record) function removed;
	(run_make_header) function removed;
	(run_flush_entry) changed to binary format;
	(run_add_record) `time_t', `size_t' types are used;
	  `ip' is passed in binary format (i.e. `unsigned long') rather
	  than in textual format;
	  new parameter `sha1' to pass the run hash value;
	  `locale_id', `language' are checked to fit into byte;
	  record is zeroed before setting its fields;
	(run_flush_header) changed to binary format;
	(run_change_status) `newstatus', `newtest' are checked to fit into
	  a byte;
	(run_get_record) `time_t', `size_t' types are used;
	  `pip' now is pointer to its binary representation (`unsigned long')
	  rather than textual representation;
	  new parameter `psha1' to return the hash value;
	(run_start_contest) `time_t' type is used;
	(run_stop_contest) the same;
	(run_set_duration) the same;
	(run_sched_contest) the same;
	(run_get_start_time) the same;
	(run_get_stop_time) the same;
	(run_get_times) the same;
	(run_get_team_usage) `size_t' type is used;
	(run_get_attempts) runs with `RUN_IGNORED' status are ignored;
	(run_status_str) `RUN_IGNORED' status is handled;
	(run_get_fog_period) `time_t' type is used;
	(run_unparse_ip) new function to convert the IPv4 address from
	  binary to textual representation;
	(run_parse_ip) new function to convert the IPv4 address from
	  textual to binary representation;
	(run_check_duplicate) new function, which checks whether the
	  given run is a duplicate of some of the previous runs.

	* runlog.h: <time.h> is included;
	<string.h> is included;
	new status RUN_IGNORED added;
	(run_open) prototype changed to use `const' qualifier;
	(run_add_record) `time_t', `size_t' types are used instead of
	  unsigned long;
	  `ip' is passed as unsigned long rather than char;
	  new parameter `sha1' to pass the hash value;
	(run_start_contest,run_get_start_time) `time_t' type is used;
	(run_get_record)  `time_t', `size_t' types are used;
	  `ip' pointer is now `unsigned long *', not `unsigned char*';
	  new parameter to return the sha1 hash value;
	(run_get_times) `time_t' type is used;
	(run_set_duration) the same;
	(run_get_stop_time) the same;
	(run_stop_contest) the same;
	(run_sched_contest) the same;
	(run_get_total) the same;
	(run_get_fog_period) the same;
	(run_get_team_usage) `size_t' type is used;
	(run_unparse_ip) new function prototype;
	(run_parse_ip) new function prototype;
	(run_check_duplicate) new function prototype.

	* run.c:
	(run_tests) empty output file is created even if no_redirect flag
	  is set.

	* run.c: "cr_serialize.h" is included;
	(generate_team_report) `score_buf' variable is initialized on each
	  iteration;
	(run_tests) tester parameter `time_limit_adjustment' is handled. If
	  the parameter is > 0, its value is added to the problem's time limit;
	  if task start failed, it is counted as failed test;
	(do_loop) subprocess run serialization is used. `cr_serialize_init'
	  is called at the start of the function, when a run is to be
	  started `cr_serialize_lock' is called, when the run is completed,
	  `cr_serialize_unlock' is called.

	* register.c:
	(parse_cookies) handing of Internet Explorer (mis?)feature is added.
	  The Internet Explorer passes back all the cookies passed to it
	  in one session instead of the last cookie.

	* protocol.h:
	(struct prot_serve_status) field `download_interval' is added;
	(struct prot_serve_packet) new structure to describe the minimal
	  packet passed through team<->serve socket;
	SRV_CMD_* constants for team->serve requests are defined;
	SRV_RPL_* server replies for team->serve requests are defined;
	SRV_ERR_* error code constants are defined;
	number of prot_serve_pkt_* structure, which describe packets for
	  team->serve commands and serve->team replies are defined;
	(protocol_strerror) prototype added.

	* protocol.c: more error code descriptions are added.

	* prepare.h: "nls.h" is included;
	(struct section_global_data) new field `serve_socket';
	  new internal field `charset_ptr', which contains the reference to
	  the charset functions for the current charset;
	  new field `standings_charset';
	  new internal field `standings_charset_ptr';
	  fields `team_dir', `team_cmd_dir', `team_data_dir' are removed;
	  new field `team_download_time';
	  new field `cr_serialization_key';
	  new field `show_astr_time';
	  new field `ignore_duplicated_runs';
	(struct section_tester_data) new field `time_limit_adjustment'.

	* prepare.c:
	new global parameter `standings_charset' which contains the charset
	  in which static standings are generated;
	new global parameter `serve_socket' which contains the name of UNIX
	  socket for team<->serve communication;
	parameters `team_dir', `team_cmd_dir', `team_data_dir' are removed,
	  since the communication is performed via UNIX socket;
	new global parameter `team_download_time', which is set to the
	  inverval in minutes, after which the user may again download his
	  runs after its downloads. The parameter may be explicitly set to 0,
	  user downloads are then completely disabled;
	new global parameter `cr_serialization_key'. If this parameter is
	  non-zero, it contain the value of SYSV semaphore key, which is used
	  by `compile' and `run' utilities to serialize subprocess execution;
	new global parameter `show_astr_time'. If this parameter is non-zero,
	  the astronomic time of submission is printed instead of duration
	  from the contest start;
	new global parameter `ignore_duplicated_runs'. If this parameter is
	  non-zero, the runs are checked for duplicates. If the previous
	  run of the same user has the same language, problem, ip, size,
	  checksum values, the current run is marked `Ignored';
	new tester parameter `time_limit_adjustment'. If this parameter is
	  non-zero, the time-limit is increased by a given number of seconds;
	default charset is set to "koi8-r";
	(global_init_func) initialization of `team_download_time',
	  `ignore_duplicated_runs' is added;
	(inheritance_info) `time_limit_adjustment' is added;
	(set_defaults) all the new fields are initialized;
	(create_dirs) `team_dir', `team_cmd_dir', `team_data_dir' are not
	  created, since the parameters are removed.

	* nls.h:
	(struct nls_table) new field `is_singlebyte', which is set to 1, if
	  each character in the charset is represented with 1 byte;
	(struct nls_table) new field `unilen', which is reference to function,
	  that returns the length of the given unicode character in bytes
	  in this charset;
	all nls_table_* global variables are added as extern references;
	(str_utf8_to_enc) new function prototype;
	(str_utf8_to_enc_unchecked) new function prototype;
	(str_utf8_to_enc_heap) new function prototype;
	(str_utf8_to_koi8) new function prototype;
	(str_utf8_to_koi8_unchecked) new function prototype;
	(str_utf8_to_koi8_heap) new function prototype;
	(str_koi8_to_enc) new function prototype;
	(str_koi8_to_enc_unchecked) new function prototype;
	(str_koi8_to_enc_heap) new function prototype.

	* misctext.h: 
	(duration_str) prototype is updated.

	* misctext.c: <time.h> is included;
	(duration_str) new parameter `show_astr' is added. If this parameter
	  is non-zero, astronomic time of `cur' is displayed instead of
	  duraction `cur-start';
	  previous parameter `time' is decomposed into two: `cur' and `start',
	  `cur' is the time to convert to string, `start' is the contest start
	  time.

	* master.c:
	(change_status_if_asked) range of valid status constants is extended.

	* makefile: utf8_utils.[ch] module is removed;
	rules for compilation of `libcharsets.a' are added;
	rules for compilation of `libserve_clnt.a' are added;
	rule `clean' is updated to clean subdirectories;
	lists of c files for individual utilities are corrected.

	* files.make: cr_serialize.[ch] module added;
	all charset handling functions are moved to a separate directory
	  (charsets);
	utf8_utils.h is merged to nls.h;
	utf8_utils.c is decomposed into individual functions which are put
	  to `charsets' directory.

	* expat_iface.c: "utf8_utils.h" is no longer included.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* cr_serialize.c: 
	(cr_serialize_lock) debugging output is commented out;
	(cr_serialize_unlock) the same.

	* compile.c: "cr_serialize.h" is included;
	(do_loop) subprocess creation serialization is implemented using the
	  new `cr_serialize' module.

	* clntutil.h:
	`server_download_interval' variable is declared as extern.

	* clntutil.c:
	new server state variable `server_download_interval', which contains
	  the allowed interval (in seconds) between team submit downloads;
	(client_check_server_status) `server_download_interval' variable is
	  read;
	(client_print_server_status) calls of `duration_str' are updated as
	  the function parameters are changed.

2002-12-01  Alexander Chernov  <cher@ispras.ru>

	* serve_clnt.h: (serve_clnt_show_item) new function prototype;
	(serve_clnt_submit_run) new function prototype;
	(serve_clnt_submit_clar) new function prototype;
	(serve_clnt_team_page) new function prototype.

	* userlist-server.c:
	(cmd_admin_process) if there is an admin record for the given user
	  with the path "ANY", the path is not checked.

	* userlist_xml.c: "nls_utils.h" is no longer included;
	(userlist_unparse_ip) this is the new name for `unparse_ip',
	  function became externally visible;
	(unparse_cookies) use of `unparse_ip' is updated.

	* userlist.h: 
	(userlist_unparse_ip) prototype added.

	* .cvsignore: edit-userlist utility added

2002-11-30  Alexander Chernov  <cher@ispras.ru>

	* cr_serialize.h, cr_serialize.c: Initial revision

2002-11-24  Alexander Chernov  <cher@ispras.ru>

	* teamdb.c:
	(struct teamdb_extra) a new structure for each team, this structure
	  contains various temporary information about the team. Currently
	  it contains only the time of the last run archive downloading.
	(teamdb_refresh) team extra information is marked `out of sync';
	(teamdb_lookup_client) a new inline function to check the
	  validity of user_id in case of client-server operation mode;
	(syncronize_team_extra) a new function to syncronize list of
	  users with the current extra information;
	(teamdb_get_archive_time) a new function, which returns the time
	  of the last run archive download for a given team;
	(teamdb_set_archive_time) a new function, which sets the time of the
	  last run archive download for a given team.

	* teamdb.h: <time.h> is included;
	(teamdb_get_archive_time) new prototype;
	(teamdb_set_archive_time) new prototype.

	* serve_clnt.h: Initial revision

2002-11-23  Alexander Chernov  <cher@ispras.ru>

	* protocol.c: Initial revision

2002-11-18  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(do_loop) the executable file to be tested is removed from the
	  server_exe_dir directory.

	* compile.c:
	(do_loop) source file is removed from server_src_dir when the
	  incomping compile packet is being processed.

	* users.c: "fileutl.h" is included;
	(read_user_id) a new function to parse "user_id" CGI param;
	(put_http_header) a new function to print HTTP header only;
	(main) if CGI parameter "secret_mode" is set, ";"-separated
	  table is to be requested from server;
	  header and footer files are supported;
	  user_id and request_flags are passed to the server;

	* userlist_xml.c: "read_only" attribute is supported;
	(parse_contest) "banned", "invisible", "read_only" attributes are
	  parsed;
	(userlist_parse_str) a new function, which parses the userlist XML
	  from string;
	(userlist_unparse_reg_status) a new function;
	(unparse_contest) a new function to generate XML for a registration
	  entry;
	(unparse_contests) now uses `unparse_contest';
	(unparse_user_short) generates XML with a short user description;
	(unparse_user) "invisible", "banned" attributes are generated only
	  when in USERLIST_MODE_ALL mode;
	  "read_only" attribute is unparsed;
	(userlist_unparse_short) a new function to generate a short XML
	  with user list.

	* userlist_proto.h:
	new request codes: ULS_LIST_ALL_USERS, ULS_EDIT_REGISTRATION,
	  ULS_EDIT_FIELD, ULS_DELETE_FIELD, ULS_ADD_FIELD;
	new error codes: ULS_ERR_NOT_REGISTERED, ULS_ERR_CANNOT_DELETE,
	  ULS_ERR_CANNOT_CHANGE, ULS_ERR_DEADLINE;
	(struct userlist_pk_edit_registration) new packet structure;
	(struct userlist_pk_edit_field) new packet structure.

	* userlist_proto.c: new explanation for new error codes added.

	* userlist_clnt.h: (userlist_clnt_list_all_users) new prototype;
	(userlist_clnt_change_registration) new prototype;
	(userlist_clnt_edit_field) new prototype;
	(userlist_clnt_delete_field) new prototype;
	(userlist_clnt_add_field) new prototype.

	* userlist_clnt.c:
	(userlist_clnt_get_info) error codes from `send_packet' and
	  `receive_packet' are preserved and returned to sender;
	(userlist_clnt_list_all_users) a new function to list all users in
	  the database, or to list all users registered for a particular
	  contest. The result is returned in XML;
	(userlist_clnt_change_registration)  a new function to change
	  registration status of a particular user to a particular contest;
	(userlist_clnt_edit_field) a new function to change the value
	  of the given field;
	(userlist_clnt_delete_field) a new function to reset the value
	  of the given field;
	(userlist_clnt_add_field) a new function to add a new user or
	  a new member into user.

	* userlist.h: new registration status constant USERLIST_REG_LAST;
	new attribute code USERLIST_A_READ_ONLY;
	new USERLIST_NN_* constants for userlist_user field codes;
	new USERLIST_NM_* constants for userlist_member field codes;
	new registration flag constant USERLIST_UC_ALL;
	(struct userlist_user) `read_only' field added;
	new userlist unparse flag USERLIST_MODE_SHORT;
	(userlist_parse_str) new function prototype;
	(userlist_unparse_short) new function prototype;
	(userlist_unparse_reg_status) new function prototype;
	(userlist_member_status_str) new function prototype;
	(userlist_parse_date) new function prototype;
	(userlist_parse_bool) new function prototype;
	(userlist_unparse_bool) new prototype;
	(userlist_unparse_date) new prototype;
	(userlist_get_member_field_str) new prototype;
	(userlist_set_member_field_str) new prototype;
	(userlist_delete_member_field) new prototype;
	(userlist_get_user_field_str) new prototype;
	(userlist_set_member_field_str) new prototype;
	(userlist_delete_user_field) new prototype.

	* userlist.c:
	(userlist_member_status_str) a new function to return string
	  representation of member status;
	(userlist_parse_date) a new function to parse the date in the
	  format 'YYYY/MM/DD HH:MM:SS' to the internal time_t format;
	(userlist_unparse_bool) a new function;
	(userlist_unparse_date) a new function to convert the date
	  in the internal time_t format into the external format;
	(userlist_parse_bool) a new function;
	(userlist_get_member_field_str) a new function, which returns
	  the field's value of userlist_member structure by field code;
	(userlist_delete_member_field) a new function, which resets
	  the field value of userlist_member structure by field code;
	(userlist_set_member_field_str) a new function, which sets the
	  userlist_member field value by field code;
	(userlist_get_user_field_str) a new function, which returns
	  the userlist_user field value by its field code;
	(userlist_set_user_field_str) a new function, which sets
	  the userlist_user field value by its field code;
	(userlist_delete_user_field) a new function, which clears
	  the userlist_user field value by its field code.

	* userlist-server.c:
	constant->string tables for members (singular and plural) and
	member status are added;
	FIRST_COOKIE, NEXT_COOKIE, FIRST_CONTEST, NEXT_CONTEST macros added;
	(passwd_check) if the first password check failed, try it the second
	  time, now ignoring all spaces in the provided password;
	(allocate_new_user) a new function to allocate a new user structure,
	  link it into the tree and add it into the reference table;
	(create_newuser) locale_id is generated after the contest_id in
	  the URL in the e-mail message (because some mail clients add
	  the trailing dot from the message to the URL);
	  `allocate_new_user' function is used;
	(do_remove_user) a function to remove a user from the database,
	  notifying all the contests, in which the user has active
	  registrations;
	(check_all_users) `do_remove_user' is used;
	(get_user_info) contest administrator may get all the information
	  about the user, including the information, which is not send to
	  the user himself;
	(cmd_list_all_users) a new function to generate XML with brief
	  information about the users either all, or registered for a
	  particular contest. This function handles ULS_LIST_ALL_USERS
	  request;
	(set_user_info) some `info' messages replaced to `err';
	  new user XML tree is always freed - memory leak is fixed;
	(register_for_contest) some `info' messages replaced with `err';
	  administrator may register any user to any contest;
	(do_list_users) if passed flag is set to 1, all the user table
	  is exported in ';'-separated plain format (for import to Excel);
	  detailed information for a given user is generated, if
	  requested;
	  references to detailed user information is generated in the
	  general user list information;
	(list_users) user_id and contest_id fields of the incoming packet
	  are verified;
	(cmd_edit_registration) a new function to change registration status.
	  Handles ULS_EDIT_REGISTRATION request;
	(cmd_delete_field) a new function, which resets or removes the
	  given field. Handles ULS_DELETE_FIELD request;
	(cmd_edit_field) a new function, which changes the value of the
	  given field. Handles ULS_EDIT_FIELD request;
	(cmd_add_field) a new function, which adds a new user or new
	  member. Handles ULS_ADD_FIELD request;
	(process_packet) ULS_LIST_ALL_USERS, ULS_EDIT_REGISTRATION,
	  ULS_EDIT_FIELD, ULS_DELETE_FIELD, ULS_ADD_FIELD requests are
	  handled;
	(do_backup) backup file is created with mode 0600;
	(flush_database) the database file is created with mode 0600;

2002-11-17  Alexander Chernov  <cher@ispras.ru>

	* teamdb.c:
	(teamdb_export_team) all information, except passwords, is exported
	  correctly even in client mode.

	* serve.c:
	(update_standings_file) standings header and footer are passed
	  to `write_standings';
	  the second standings are generated, if requested;
	(update_public_log_file) a new function, which periodically updates
	  public log file, if such file is requested by the serve's
	  configuration;
	(do_loop) `update_public_log_file' is called on each iteration.

	* register.c:
	FIRST_COOKIE, NEXT_COOKIE, FIRST_CONTEST, NEXT_CONTEST macros are
	  added;
	(check_contest_eligibility) registration deadline is checked;
	(register_for_contest_page) "Submit solution" column header is
	  generated only if there is atleast one such button in all
	  registered contests;
	  the current locale is preserved when following "Submit solution"
	  button;
	  locale_id is not put into invisible variables since it is passed
	  directly with URL;
	(read_user_info_from_form) `user_registering' variable is also
	  read;
	(read_user_info_from_server) `user_read_only' flag is handled;
	  user_registering flag is set to 1, if the user is not yet
	  registered to the given contest;
	(edit_registration_data) if the given user is not eligible to this
	  contest, `user_registering' flag is reset to 0;
	  the form comment is changed, if in read_only mode;
	  all input forms are generated disabled, if in read_only mode;
	  the main buttons (register for the contest, save the data,
	  back) are reimplemented to be simplier to understand;
	(main) the current time is read.

	* prepare.c, prepare.h:
	new global parameters: `standings_file_name', `stand_header_file',
	  `stand_footer_file', `stand2_file_name', `stand2_header_file',
	  `stand2_footer_file', `plog_file_name', `plog_header_file',
	  `plog_footer_file', `plog_update_time'.

	* html.h: (write_standings) two new parameters are added;
	(write_public_log) a new prototype added.

	* html.c:
	(do_write_kirov_standings) two parameters are added. These parameters
	  are for text to be printed before and after the actual standings;
	(do_write_standings) the same as above;
	(write_standings) the same as above;
	(do_write_public_log) a new function to generate a public contest
	  log;
	(write_public_log) an exported function to the above function.

	* edit-userlist.c:
	russian letters are handled correctly when pressed in various menus;
	(display_role_menu) a new function to display a menu to choose
	  between `Student', `School student', etc;
	(display_user) adding a new team member now works;
	  adding a contest registration now works;
	(display_registered_users) adding a contest registration works;
	(display_user_menu) adding a new user works.

	* clntutil.h: 
	(client_put_copyright) a new function prototype.

	* clntutil.c:
	(client_put_copyright) a new function to print only the copyright
	  notice;
	(client_put_footer) now uses `client_put_copyright'.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-11-14  Alexander Chernov  <cher@ispras.ru>

	* run.c: several standard system include files are added;
	(run_tests) the program output file is created explicitly,
	  because in no-privs mode program is not allowed to create
	  new files.

	* contests.h: new tag CONTEST_REGISTRATION_DEADLINE;
	(struct contest_desc) new field `reg_deadline'.

	* contests.c: "registration_deadline" element is parsed;
	(parse_date) new function to parse dates;
	(parse_contest) "registration_deadline" element is parsed.

	* files.make: `edit_userlist.c' is added.

	* makefile: rule for compilation of `edit-userlist' added;
	several file lists are fixed (.o files were used instead of .c).

	* ejudge.ru_RU.KOI8-R.po: some new translations added

	* edit-userlist.c: completed

2002-11-10  Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h:
	(struct userlist_pk_login_ok) new `contest_id' field.

	* userlist_clnt.h:
	(userlist_clnt_team_cookie) new parameter `p_contest_id'.

	* userlist_clnt.c:
	(userlist_clnt_lookup_cookie) contest_id is copied from the reply
	  packet to the user's location;
	(userlist_clnt_team_cookie) new parameter `p_contest_id';
	  contest_id is copied from the reply packet to the user's location.

	* userlist-server.c:
	(create_newuser) login url and ejudge email are taken from the contest
	  settings, if the contest is specified;
	(login_user) contest_id of the reply packed is copied from contest_id
	  of the request packet;
	(login_team_user) the same as above;
	(login_cookie) if the contest_id of the request packet is set, it is
	  copied to the cookie structure;
	  contest_id of the reply packet is taken from the cookie structure;
	(login_team_cookie) the same as above.

	* team.c:
	(display_enter_password) the current language is set correctly
	  depending on the value of `locale_id' parameter.

	* register.c: initial number of members for user is handled;
	(register_for_contest_page) a button to proceed to team submit
	  solution page is added, if the registration status is OK;
	(prepare_var_table) initial number of members is initialized;
	(read_user_info_from_form) maximal grade is checked carefully;
	(read_user_info_from_server) initial number of members is handled;
	(edit_registration_data) "General user information" message is
	  translated;
	  a comment is printed for "User Name" field;
	(register_new_user_page) User Login field is marked mandatory;
	  Reset button is removed.

	* makefile: installed binaries are not stripped.

	* contests.h:
	new elements are supported: `register_email', `register_url',
	  `team_url';
	new attributes are supported: `initial'.

	* contests.c:
	new elements are parsed: `register_email', `register_url',
	  `team_url';
	new attributes are parsed: `initial';
	(parse_member) `initial' attribute is parsed;
	(parse_contest) new elements parsed.

	* ejudge.ru_RU.KOI8-R.po: new messages translated

	* edit-userlist.c: Initial revision

2002-11-09  Alexander Chernov  <cher@ispras.ru>

	* users.c: new static variable `self_url';
	(set_locale_by_id) a new function;
	(initialize) self-reference URL is constructed and stored in
	  `self_url';
	(main) the needed locale is set with `set_locale_by_id' call;
	  new parameters passed to `userlist_clnt_list_users'.

	* userlist_xml.c:
	(parse_passwd) all password encoding methods are now supported.

	* userlist_proto.h: new requests: ULS_MAP_CONTEST, ULS_ADMIN_PROCESS,
	  ULS_GENERATE_TEAM_PASSWORDS, ULS_TEAM_LOGIN, ULS_TEAM_CHECK_COOKIE,
	  ULS_GET_CONTEST_NAME, ULS_TEAM_SET_PASSWD;
	new reply: ULS_CONTEST_MAPPED;
	new error codes: ULS_ERR_IPC_FAILURE, ULS_ERR_IP_NOT_ALLOWED,
	  ULS_ERR_CANNOT_PARTICIPATE;
	new enumeration for user invisible and banned status;
	(struct userlist_user_short) a user information to share with `serve';
	(struct userlist_table) a user information structure to share with
	  `serve';
	(struct userlist_pk_list_users) new fields added;
	(struct userlist_pk_map_contest) new request structure;
	(struct userlist_pk_contest_mapped) new reply structure.

	* userlist_proto.c: new error message texts added.

	* userlist_clnt.h: 
	(userlist_clnt_team_login) a new prototype;
	(userlist_clnt_team_cookie) a new prototype;
	(userlist_clnt_team_set_passwd) a new prototype;
	(userlist_clnt_list_users) new parameters added;
	(userlist_clnt_admin_process) a new prototype;
	(userlist_clnt_map_contest) a new prototype;
	(userlist_clnt_generate_team_passwd) a new prototype.

	* userlist_clnt.c: 
	(userlist_clnt_team_login) a new function;
	(userlist_clnt_team_cookie) a new function;
	(userlist_clnt_set_passwd) a new function;
	(userlist_clnt_map_contest) a new function;
	(userlist_clnt_list_users) more parameters added;
	(userlist_clnt_admin_process) a new function;
	(userlist_clnt_generate_team_passwd) a new function.

	* userlist_cfg.h: (struct userlist_cfg_admin_proc) new structure;
	(struct userlist_cfg) new field `admin_processes'.

	* userlist_cfg.c: <pwd.h> is included;
	new tags <admin_processes>, <admin_process> are supported;
	new attributes "user", "path";
	(err_dupl_elem) new function;
	(err_text_not_allowed) new function;
	(err_attr_not_allowed) new function;
	(err_empty_elem) new function;
	(err_nested_not_allowed) new function;
	(err_invalid_elem) new function;
	(err_invalid_attn) new function;
	(handle_final_tag) rewritten with use of the new functions;
	(parse_processes) new function;
	(userlist_cfg_parse) <processes> element is handled.

	* userlist.h:
	enum for invisible and banned user contest status is defined;
	(struct userlist_contest) new field `flags'.

2002-11-08  Alexander Chernov  <cher@ispras.ru>

	* userlist-server.c: IPC-related header files are included;
	"version.h", "sha.h", "misctext.h" are included;
	new static variable "program_name" to store the program name;
	new static variable `contest_extras' to store the extra info about
	  contests;
	support for contest users table sharing between server and client is
	  implemented;
	(attach_contest_extra) a new function;
	(detach_contest_extra) a new function;
	(lock_userlist_table) a new function;
	(unlock_userlist_table) a new function;
	(update_userlist_table) a new function;
	(disconnect_client) contest shared info is detached;
	(graceful_exit) now is a simple function, not a signal handler;
	  it also releases the IPC objects;
	(interrupt_signal) a new function: interrupt signal handler;
	(make_sha1_ascii) a new function;
	(passwd_convert_to_internal) a new function;
	(passwd_check) a new function;
	(login_user) internal representation of the password is used;
	  passwd_check is used instead of strcmp;
	(login_team_user) a new function;
	(login_team_cookie) a new function;
	(set_user_info) all the contests, which are OK for the user, regenerate
	  teamdb tables;
	(set_password) `info' are replaced with `err' in many places;
	  a user-provided password is stored in sha1 format;
	(team_set_password) a new function;
	(do_list_users) arguments are changed;
	  more checking added;
	(cmd_map_contest) a new function;
	(cmd_admin_process) a new function;
	(do_generate_team_passwd) a new function;
	(cmd_generate_team_passwd) a new function;
	(cmd_get_contest_name) a new function;
	(process_packet) many new valid packets are added;
	(do_work) signal disposition is slightly changed;
	  root clients are never detached.

	* teamdb.h: (teamdb_open_client) a new prototype;
	(teamdb_refresh) a new prototype;
	(teamdb_regenerate_passwords) a new prototype.

	* teamdb.c: support for userlist-server mode is implemented;
	"userlist_clnt.h", "userlist_proto.h" are included;
	a number of system headers is included;
	several static variables to hold userlist-server related info;
	(lock_userlist_table) a new function;
	(unlock_userlist_table) a new function;
	(teamdb_refresh) a new function;
	(teamdb_open_client) a new function;
	(teamdb_regenerate_passwords) a new function;
	all the other function are modified to support the new client mode.

	* team.c:
	"contests.h", "userlist_proto.h", "userlist_clnt.h" included;
	new global parameters: contest_id, socket_path, contests_path;
	(fix_string) function to check a string for valid chars;
	(set_defaults) if `contest_id' is set, the program works in the
	  new mode, which includes userlist-server;
	(parse_client_ip) a new function;
	(initialize) if `contest_id' is set, the contests database is parsed;
	(check_passwd) new userlist-server mode is supported;
	(change_passwd_if_asked) new userlist-server mode is supported;
	(main) contest IP limitations are checked;
	  new userlist-server mode is supported.

	* serve.c:
	(judge_generate_passwords) a new function, which generates random
	  team passwords for the current contest;
	GENPASSWD command is handled;
	(do_loop) team database is refreshed from the server on each
	  server cycle;
	(main) if `contest_id' is set, team database is opened in client mode.

	* register.c: new static variable `self_url';
	(initialize) self referenced url is constructed;
	(logout_page) messages are changed to use `self_url';
	(registration_is_complete) `self_url' is used;
	(main) all the environment is printed (in debug mode).

	* prepare.h: "contests.h" is included;
	new global parameters: `contest_id', `socket_path', `contests_path';
	new global variables: `contests', `cur_contest'.

	* prepare.c:
	new global variables: `contests' - the list of all contests;
	  `cur_contest' the current contest;
	global parameters contest_id, socket_path, contests_path handled;
	(set_defaults) if global.contest_id is set (which means new client
	  mode, socket_path and contests_path must be set);
	  if global.contest_id == 0, old compatibility mode is supported.

	* master.c: "misctext.h" is included;
	(print_regenerate_button) a new function to print
	  "Regenerate user password" button;
	(confirm_regenerate_if_asked) a new function to print confirmation
	  dialog;
	(do_generate_passwords_if_asked) a new function;
	(main) support for user passwords regeneration is added.

	* makefile: default installation path changed;
	lists of .c files necessary for compile, serve, submit, clar, run,
	  mkpasswd, team, send-passwords, userlist-server are changed;
	no longer compiled: submit, clar, mkpasswd, make-teamdb,
	  make-teamdb-inet, send-passwords;
	require expat: compile, run, serve, submit, clar, team.

	* ejudge.ru_RU.KOI8-R.po: new messages added.

2002-11-06  Alexander Chernov  <cher@ispras.ru>

	* users.c: (main) the messages are slightly changed.

	* userlist_xml.c: element tag <team_password> is added;
	(userlist_node_alloc) `tag' field of the created node is filled;
	(node_free) freeing of `passwd' removed;
	(parse_passwd) changed to support the new XML tree;
	(do_parse_user) new element tag <team_password> is handled,
	  handling of <password> is updated.

	* userlist_cfg.c: first attribute constant now has number 1.

	* userlist.h: new element <team_password> added;
	new structure `struct userlist_passwd';
	struct `userlist_user' now contains two passwords: register_passwd and
	  team_passwd, which are references to the subnodes.

	* userlist-server.c:
	team participation status strings are now localized;
	(create_newuser) user password XML tree generation changed;
	  e-mail is sent to the user in the requested language;
	(login_user) password checking is updated due to changes in the
	  XML tree structure;
	(set_password) updated due to changes in the XML tree structure;
	(do_list_users) the list of the users is generated in the requested
	  language.

	* register.c:
	"Pending" status is printed in magenta instead of yellow;
	(change_password) invalid closing tag is fixed.

	* makefile: rule `install' added.

	* files.make: users.c file added

	* ejudge.ru_RU.KOI8-R.po: some translations are fixed

2002-11-05  Alexander Chernov  <cher@ispras.ru>

	* userlist_proto.h: ULS_LIST_USERS command is added;
	`struct userlist_pk_list_users' is added.

	* userlist_clnt.h: 
	(userlist_list_users) prototype added.

	* userlist_clnt.c:
	(userlist_list_users) a new function to request the list of users,
	  registered for a particular contest.

	* userlist-server.c:
	(create_newuser) incoming packed is strictly validated for size match;
	  some logging is added;
	  user_map is extended when full;
	(create_cookie) debugging fprintf is removed;
	(do_list_users) a new function to print the list of users, registered
	  for a particular contest;
	(list_users) a new function to handle ULS_LIST_USERS request;
	(process_packet) ULS_LIST_USERS request is handled.

	* makefile: new utility `users' is added;
	`submit' dependency rule is fixed.

	* contests.h: Element tags <header_file>, <footer_file> are added.

	* contests.c:
	Two new element tags: header_file, footer_file are added;
	(handle_final_tag) copied here from userlist_cfg.c;
	(parse_contest) <name> tag is parsed with handle_final_tag;
	  <header_file>, <footer_file> tags are parsed.

	* users.c: Initial revision

	* .cvsignore: *** empty log message ***

2002-11-04  Alexander Chernov  <cher@ispras.ru>

	* userlist_xml.c, userlist_proto.h, userlist_clnt.h, userlist_clnt.c:
	an initial version is completed.

	* userlist_cfg.h: *** empty log message ***

	* userlist_cfg.c, userlist.h, userlist.c:
	an initial version is completed.

	* makefile: `register' file list corrected;
	`userlist-server' file list corrected;
	`register.o' dependencies corrected;
	`userlist-server.o' dependencies corrected;
	`expat_iface.o' dependencies corrected.

	* contests.h, contests.c, userlist-server.c, register.c:
	an initial version is completed.

	* expat_iface.c:
	(xml_unlink_node) a new function to remove an xml_tree node from the
	  tree;
	(xml_link_node_first) a new function to add a new xml_tree node to
	  the front of the other node's children list;
	(xml_link_node_last) a new function to add a new xml_tree node to
	  the back of the other node's children list.

	* expat_iface.h: 
	(xml_unlink_node) new function prototype;
	(xml_link_node_first) new function prototype;
	(xml_link_node_last) new function prototype.

	* files.make: userlist_proto.c is added.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* userlist_proto.c: Initial revision

2002-10-28  Alexander Chernov  <cher@ispras.ru>

	* userlist_clnt.c: in progress...

	* userlist_xml.c: completely rewritten.

	* userlist_proto.h: packet formats are reworked considerably.

	* userlist_clnt.h:
	(userlist_clnt_get_email) a new function prototype.

	* userlist_cfg.c:
	(userlist_cfg_parse) a newly created tree is returned instead of
	  quitting the whole program.

	* userlist.h: completely rewritten.

	* userlist.c: removed all the old stuff (so the file is empty now ;-)

	* userlist-server.c: (generate_random_cookie) a new function;
	(generate_random_password) a new function;
	merged in Victor Matyukhin's stuff;

	* register.c: in progress...

	* makefile: base64.c is added to the list of `userlist-server' files;
	dependencies are regenerated.

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

2002-10-26  Alexander Chernov  <cher@ispras.ru>

	* contests.c, contests.h, register.c, userlist_clnt.c, userlist_proto.h:
	in progress...

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* cgi.c:
	(do_cgi_read) A case, when the first parameter is specified without
	  value is handled correctly (for example, in URL xxx?yyy).

2002-10-25  Alexander Chernov  <cher@ispras.ru>

	* contests.c, contests.h, register.c: in progress...

2002-10-24  Alexander Chernov  <cher@ispras.ru>

	* register.c, userlist_clnt.c, userlist_clnt.h, userlist_proto.h:
	in progress...

2002-10-23  Alexander Chernov  <cher@ispras.ru>

	* contests.c, contests.h: in progress...

	* ejudge.ru_RU.KOI8-R.po: *** empty log message ***

	* makefile: userlist_clnt.c is added to the list of `register' files.

	* register.c, userlist_clnt.c: in progress...

	* userlist_proto.h: Initial revision

2002-10-22  Alexander Chernov  <cher@ispras.ru>

	* register.c: "contests.h" is included;
	(initialize) `contests.xml' file is parsed.

	* makefile: contests.c is added to the list of `register' files.

	* contests.h, contests.c: in progress...

2002-10-21  Alexander Chernov  <cher@ispras.ru>

	* files.make: contests.[ch] is added.

	* contests.h, contests.c: Initial revision

	* register.c: in progress...

2002-10-21  Alexander Chernov  <cher@ispras.ru>

	* userlist_cfg.h: "expat_iface.h" is included;
	(struct userlist_cfg) it is now a subtype of xml_tree.

	* userlist_cfg.c:
	new module `expat_iface' is used instead of direct use of the expat
	  XML parser.

	* register.c: rewritten completely.

	* makefile: `register' files are changed;
	`register' utility needs expat.

	* expat_iface.h: (struct xml_attn) `line', `column' fields are added;
	(struct xml_tree) `line', `column' fields are added;
	(xml_build_tree) `tag_map', `attn_map' are declared `const';
	(xml_build_tree_str) the same as above;
	(xml_unparse_tree) parameters are changed;
	(xml_unparse_tree_str) parameters are changed.

	* expat_iface.c:
	(struct parser_data) `tag_map', `attn_map' fields are defined `const';
	(start_hnd) `tag_map' may be NULL;
	  current line and column is stored in the tree;
	  the root tree node is saved in `parser_data' structure;
	  `attn_map' may be NULL;
	  attribute line and column are saved in the tree;
	(xml_build_tree) `tag_map', `attn_map' are declared `const';
	(xml_build_tree_str) `tag_map', `attn_map' are declared `const';
	(do_xml_unparse_tree) a new function to do XML unparsing;
	(xml_unparse_tree) a new function to do XML unparsing.

	* ejudge.ru_RU.KOI8-R.po: new messages are translated

	* ejudge.fr_FR.ISO8859-1.po: Initial revision

2002-10-19  Alexander Chernov  <cher@ispras.ru>

	* expat_iface.c, expat_iface.h: in progress...

2002-10-19  Alexander Chernov  <cher@ispras.ru>

	* team.c:
	(main) all the action, which require team<->serve interaction are
	  disabled, if `server_clients_suspended' variable is set.

	* serve.c:
	(update_status_file) score_system_val and clients_suspended are
	  written to server status;
	(is_valid_status) SCORE_OLYMPIAD score system is supported;
	(read_compile_packet) SCORE_OLYMPIAD score system is supported
	  if the contest is not over, run packet is generated to have
	  `accept_testing' parameter set;
	(read_run_packet) SCORE_OLYMPIAD score system is supported;
	(judge_rejudge_all) a new function;
	(judge_rejudge_problem) a new function;
	(judge_reset_contest) a new function;
	(judge_suspend_clients) a new function;
	(judge_resume_clients) a new function;
	(judge_cmds) new commands `REJUDGE', `REJUDGEP', `RESET',
	  `SUSPEND', `RESUME' are supported;
	(do_loop) team's packets are not processed, if clients_suspended
	  variable is set.

	* runlog.h:
	`RUN_ACCEPTED', `RUN_MAX_STATUS' are added to testing outcome
	  enumeration;
	(run_reset) a new function prototype is added.

	* runlog.c: <reuse/osdeps.h> is included;
	(run_status_str) a new return code RUN_ACCEPTED is handled;
	(run_reset) a new function to clear the submission log.

	* run.c:
	(generate_report) a new parameter `accept_testing' is accepted, if
	  this parameter is 1, only acceptance testing is performed;
	  new SCORE_OLYMPIAD score system is supported;
	(generate_team_report) a new parameter `accept_testing' is accepted;
	  new SCORE_OLYMPIAD score system is supported;
	(run_tests) a new parameter `accept_testing' is added;
	  new SCORE_OLYMPIAD score system is supported;
	(do_loop) a new parameter is the serve's packet: `accept_testing'
	  is parsed and supported;
	(check_config) number of acceptance tests cannot exceed the total
	  number of tests.

	* protocol.h: score system enumeration is also defined here;
	(struct prot_serve_status) fields `score_system', `clients_suspended'
	  are added.

	* prepare.h:
	score system enumeration definition is protected with conditional
	  compilation, as it also defined in another file (protocol.h);
	(struct section_global_data) `tests_to_accept' parameter is added;
	(struct section_problem_data) `tests_to_accept' parameter is added.

	* prepare.c: new parameter `tests_to_accept' is parsed;
	(global_init_func) `tests_to_accept' parameter is set to -1;
	(problem_init_func) `tests_to_accept' parameter is set to -1;
	(set_defaults) `tests_to_accept' parameter is processed.

	* master.c:
	new configuration parameter `problems_submit_file' to read the list
	  of all the problems;
	(print_reset_button) a new function;
	(print_suspend_button) a new function;
	(print_resume_button) a new function;
	(confirm_reset_if_asked) a new function, which generates the
	  "Confirm reset" dialog;
	(do_contest_reset_if_asked) a new function to perform contest reset;
	(do_suspend_if_asked) a new function to suspend clients;
	(do_resume_if_asked) a new function to resume clients;
	(do_rejudge_all_if_asked) a new function to rejudge all the
	  solutions;
	(do_rejudge_problem_if_asked) a new function to rejudge one particular
	  problem;
	(main) all the new master commands are supported.

	* html.c:
	(write_team_statistics) new SCORE_OLYMPIAD score system is supported;
	(do_write_kirov_standings) the same as above;
	(write_standings) the same as above;
	(write_judge_allruns) the same as above;
	(write_judge_standings) the same as above.

	* makefile: expat_iface is added to the userlist-server files.

	* files.make: expat_iface.[ch] module is added.

	* ejudge.ru_RU.KOI8-R.po: new translations added.

	* clarlog.c:
	(clar_reset) a new function, which clears the clarification log.

	* clarlog.h: (clar_reset) a prototype added.

	* clntutil.c:
	new global variables: server_score_system, server_clients_suspended;
	(client_check_server_status) new server status fields (see above)
	  are read;
	(client_print_server_status) message is printed, if clients are
	  suspended.

	* clntutil.h: new variables are exported: server_score_system,
	server_clients_suspended.

2002-10-18  Alexander Chernov  <cher@ispras.ru>

	* expat_iface.h, expat_iface.c: Initial revision

2002-10-15  Alexander Chernov  <cher@ispras.ru>

	* sformat.c, serve.c:
	the final "Local variables" section is slightly changed.

	* mkpasswd.c:
	(main) "enable-multibute-characters" directive is removed from
	  the generated LaTeX file.

	* clntutil.c, cgi.c:
	the final "Local variables" section is slightly changed.

	* userlist-server.c: (main) help message translation is disabled.

	* team.c: <sys/time.h> is included;
	new parameter `show_generation_time';
	(initialize) error messages, which are written during configuration
	  file parsing are not translatable;
	(main) client page generation time (real time) is measured and
	  displayed, if `show_generation_time' parameter is set;
	  "Submission log" is not displayed until contest is started.

	* serve.c:
	(do_loop) contest_duration == 0 is considered as infinite contest
	  duration;
	  information messages, written to log marked as not translatable.

	* register.c:
	(set_defaults) error messages are marked as not translatable;
	(initialize) error messages for client_not_configured function
	  are also marked as untranslatable.

	* prepare.c:
	(global_init_func) `contest_time' parameter is initialized to -1;
	(set_defaults) unset flag for `contest_time' is now -1.

	* mkpasswd.c: (main) team information is marked as not translatable.

	* master.c:
	(set_defaults) error messages written to the log are not marked
	  as translatable;
	(initialize) "client not configured" messages are also not translated.

	* makefile: `clean' rule is changed slightly.

	* html.c:
	(write_team_statistics) submit buttons for "View report" and
	  "View source" are generated instead of image buttons.
	(write_judge_allruns) the same as above.

	* ejudge.ru_RU.KOI8-R.po: all the messages are translated.

	* clntutil.c:
	(client_print_server_status) server_duration == 0 is considered as
	  unlimited contest and printed as "Unlimited".

	* cgi.c:
	(bad_request) message translation calls are removed, since when
	  this function works, CGI parameters are not yet parsed;
	  added actual email <cher@unicorn.cmc.msu.ru> to the message.
	(request_too_large) message translation calls are removed.

2002-10-14  Alexander Chernov  <cher@ispras.ru>

	* makefile: ejudge.ru_RU.KOI8-R.po is made writable before msgmerge.

	* ejudge.ru_RU.KOI8-R.po: Initial revision

	* .cvsignore: *** empty log message ***

	* clntutil.c: "protocol.h" is included;
	<reuse/osdeps.h> is included;
	new global variables server_clars_disabled, server_team_clars_disabled,
	  server_standings_frozen;
	(client_check_server_status) the server keepalive messages are now
	  in binary format;
	(client_print_server_status) whether the standings are frozen is
	  printed.

	* clntutil.h: copyright notice is updated;
	`server_clars_disabled', `server_team_clars_disabled',
	  `server_standings_frozen' variables are declared as external.

	* compile.c: (do_loop) serve->compile protocol is changed;
	  the loop is rearranged;
	(check_config) `queue_dir' is checked to be writable.

	* files.make: protocol.h is added.

	* html.c:
	(write_team_statistics) a message is marked as not translatable;
	  `run_get_record' now accepts more parameters;
	(do_write_kirov_standings) `run_get_record' signature changed;
	(do_write_standings) `run_get_record' signature changed;
	(write_judge_allruns) `run_get_record' signature changed;
	  run change status menu is rearranged;
	(write_team_source_view) `run_get_record' signature changed;
	(write_team_report_view) `run_get_record' signature changed.

	* makefile: *~ files are removed on `clean' rule;
	ejudge.po is also removed;
	ejudge.ru_RU.KOI8-R.po is processed by merging the previous version
	  and `ejudge.po';
	ejudge.po rule is updated;
	mo rule is added to compile the message translation catalogs.

	* master.c:
	`enable_l10n', `l10n_dir' parameters are added and parsed;
	"refresh" button is renamed to "Refresh".

	* prepare.c:
	(section_global_params) all the new global configuration parameters
	  are added;
	(section_language_params) all the new language configuration parameters
	  are added;
	(section_tester_params) all the new tester parameters are added;
	(global_init_func) a new function, which initializes global section
	  variables;
	(tester_inheritance_info) `queue_dir' is added to the inheritance list;
	(set_defaults) all the new configuration parameters are processed;
	  value `0' of `board_unfog_time' is accepted as unfog right after the
	  contest stops;
	  the upper limit on the contest duration is removed;
	(create_dirs) `queue_dir' parameters are handled;
	(print_tester) new tester parameters are printed.

	* prepare.h:
	new global parameter `autoupdate_standings'. If enabled (the default)
	  the server updates the standing when the contest status or standings
	  change;
	new global flags fog_standings_updated, start_standings_updated,
	  unfog_standings_updated which are not user-settable;
	new global parameter `disable_clars'. If set, the clarification
	  requests are completely disabled;
	new global parameter `disable_team_clars'. If set, teams cannot
	  compose clarification requests, but the judges can.
	new global parameter `enable_l10n'. If set, message translation is
	  enabled;
	new global parameter `l10n_dir', which points to the message catalog
	  directory;
	new global parameter `standings_locale' which contains the locale
	  name for standings displaying. The only supported locale is yet
	  `ru_RU.KOI8-R';
	new global parameter `compile_queue_dir' for the queue of compile
	  commands issued by the serve;
	new global parameter `run_queue_dir' for the queue of run commands
	  issued by the serve;
	new language parameter `server_queue_dir' for the queue of server
	  compile commands;
	language parameter `src_dir' is replaced with language parameter
	  `queue_dir';
	new tester parameter `server_queue_dir' for the queue of server
	  run commands;
	tester parameter `exe_dir' is replaced with tester parameter
	  `queue_dir'.

	* run.c: <locale.h> is included, if localization is enabled;
	(setup_locale) a new function, which sets up the locale by the
	  locale_id;
	(print_by_line) `file is too long' is marked as a translatable message;
	  `line is too long' is marked as a translatable message;
	(generate_report) `OK' is marked as a translatable message;
	  `Score' is marked as a translatable message;
	(generate_team_report) `OK' and `Score' are now translatable messages;
	(run_tests) `locale_id' parameter is accepted;
	  the given locale_id is activated before `generate_team_report' is
	  called, the default locale is activated after the call;
	  removed some previously commented stuff;
	(do_loop) serve->run protocol is changed;
	  loop is generally reorganized;
	(main) message translation catalogs are set up, if the localization is
	  enabled.

	* runlog.c: RUN_RECORD_SIZE increased to 105;
	(struct run_entry) field `locale_id' is added;
	(run_read_entry) `locale_id' field is read;
	(run_make_record) `locale_id' parameter is accepted;
	(run_flush_entry) `locale_id' field is written;
	(run_add_record) `locale_id' parameter is accepted;
	(run_get_param) `plocale_id' parameter is accepted;
	(run_get_record) `plocale_id' parameter is accepted;
	(run_get_fog_period) a new function, which returns:
	  -1, if the contest is not started;
	  0, if the fog perion is not started;
	  1, if the fog perion is effective;
	  2, if the fog perion ended.

	* runlog.h: copyright notice is updated;
	(run_add_record) a new parameter `locale_id' is accepted;
	(run_get_param) a new parameter `plocale_id' is accepted;
	(run_get_record) a new parameter `plocale_id' is accepted;
	(run_get_fog_period) a new function.

	* serve.c: "protocol.h" is included;
	<locale.h> is included if compile-time localization is enabled;
	(setup_locale) a new function, which sets up the current locale by
	  `locale_id' parameter;
	(update_standings_file) function is totally rewritten. It also updates
	  `start_standings_updated', `fog_standings_updated',
	  `unfog_standings_updated' depending on the time period;
	(update_status_file) function is totally rewritten. Status file now
	  has binary format (as defined in protocol.h).
	(team_view_clar) `locale_id' parameter of the command is accepted;
	  error generated, if clarifications are disabled;
	(team_send_clar) `locale_id' parameter of the command is accepted;
	  error generated, if clarifications are disabled;
	(team_submit) `locale_id' parameter of the command is accepted;
	  `locale_id' is saved in the run log;
	  serve->compile protocol is changed by using the explicit command
	  safe directories and the separate source directory;
	(team_change_passwd) `locale_id' parameter of the command is accepted;
	(team_stat) `locale_id' parameter of the command is accepted;
	(team_view_report) `locale_id' parameter of the command is accepted;
	(team_view_source) `locale_id' parameter of the command is accepted;
	(read_team_packet) locale is reset to the default (0), after the
	  function, which executes the command, is completed;
	(read_compile_packet) `locale_id' parameter is requested from the
	  run log with `run_get_param' function;
	  serve->run protocol is changed by using an expilicit command safe
	  directory queue and the separate exe directory;
	(read_run_packet) `run_get_param' now accepts pointer to `locale_id'
	  parameter, so the call is updated;
	(rejudge_run) `locale_id' is requested from run log by using changed
	  `run_get_record' function;
	  serve->compile protocol is changed (see above);
	(judge_start) standings are no longer updated from here;
	(judge_stop) standings are no longer updated from here;
	(do_loop) if the current time is in fog period, let the
	  `fog_standings_updated' variable be set;
	  standings are automatically updated right after the start, right
	  after the fog period started, right after the fog period ended;
	  if compile-time and run-time localization is enabled, program
	  message catalogs are initialized.

	* team.c: <locale.h> is included, if internalization is enabled;
	(struct section_global_data) new parameters `enable_l10n' and
	  `l10n_dir' are added;
	new global variable `client_locale_id';
	(section_global_params) `enable_l10n', `l10n_dir' parameters are
	  parsed;
	(set_defaults) error messages written to log are not localized;
	  new configuration parameters are checked;
	(read_state_params) `locale_id' parameter, which contains the
	  language identifier is passed in forms along with `login' and
	  `password' parameters;
	(display_enter_password) locale selection dialog is added;
	(print_refresh_button) the default label for the button is `Refresh';
	(get_team_statistics) added `locale_id' parameter to `STAT' request;
	(send_clar_if_asked) check that the messages are disabled is added;
	  parameter `locale_id' added to `CLAR' command;
	(submit_if_asked) parameter `locale_id' added to `SUBMIT' command;
	(change_passwd_if_asked) parameter `locale_id' added to `PASSWD'
	  command;
	(show_clar_if_asked) check that the messages are disabled is added;
	  parameter `locale_id' is added to `VIEW' command;
	(request_source_if_asked) parameter `locale_id' added to `SOURCE'
	  command;
	(request_report_if_asked) parameter `locale_id' added to `REPORT'
	  command;
	(main) message translation is set up, if CONF_HAS_LIBINTL compile-time
	  macro is set and `enable_l10n' run-time parameter is set;
	  clarification send dialog is not shown, if team clarifications are
	  disabled;
	  clarification list is now shown, if clarifications are disabled;
	  reference to "Change language" dialog is added to the fast
	  navigation menu;
	  "Change Language" dialog is activated, if localization is enabled.

2002-10-13  Alexander Chernov  <cher@ispras.ru>

	* protocol.h: Initial revision

2002-10-12  Alexander Chernov  <cher@ispras.ru>

	* ejudge.ru-KOI8_R.po: no longer used

2002-10-11  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	(set_defaults) maximal contest_time is increased to 100 hours.

	* run.c:
	(run_tests) correct answer files are only used if `use_corr' flag is
	  set for a problem.

	* team.c:
	(main) generated html modified, so "Team standings" and "Problems"
	  open in a new window.

2002-10-09  Alexander Chernov  <cher@ispras.ru>

	* base64.c, cgi.c, clar.c, clarlog.c, clntutil.c, compile.c, html.c, mkpasswd.c, parsecfg.c, prepare.c, revinfo.c, run.c, runlog.c, serve.c, submit.c, teamdb.c:
	redundant message translations (_(...)) are removed

2002-10-08  Alexander Chernov  <cher@ispras.ru>

	* files.make: userlist_clnt.[ch] files added.

	* userlist-server.c: in progress...

	* userlist_xml.c: adapted to use in userlist-server.

	* userlist.c:
	(userlist_validate) a new name of previous `user_data_validate';
	(userlist_free) a new name of previous `user_data_free'.

	* userlist.h: 
	(userlist_free) a prototype added.

	* nls.c: <string.h> is included.

	* makefile: userlist-server file list is changed.

	* userlist_clnt.c, userlist_clnt.h: Initial revision

2002-10-07  Alexander Chernov  <cher@ispras.ru>

	* files.make: userlist-server.c added.

	* userlist_cfg.h, userlist_cfg.c: completed.

	* nls.c: windows-1251 encoding added as alias to cp1251.

	* makefile: userlist-server added to TARGETS;
	UL_CFILES, UL_OBJECTS variables declared;
	rule to compile userlist-server added.

	* userlist-server.c: Initial revision

	* .cvsignore: *** empty log message ***

2002-10-06  Alexander Chernov  <cher@ispras.ru>

	* prepare.c, prepare.h:
	added global properties `sound_player', `*_sound'.

	* run.c:
	(run_tests) playing sound, which depends on outcome of test run
	  is added.

2002-10-05  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(run_tests) `task_SetMaxRealTime' is called, if `max_real_time'
	  parameter is set.

	* prepare.h:
	(struct section_problem_data) `real_time_limit' field is added.

	* prepare.c:
	(section_problem_params) `real_time_limit' parameter is added;
	(set_defaults) `real_time_limit' problem parameter is processed.

	* clntutil.c: 
	(client_put_footer) copyright information is updated.

2002-10-03  Alexander Chernov  <cher@ispras.ru>

	* makefile: list of files are moved to a separate file `files.make'.

	* files.make: Initial revision

2002-10-02  Alexander Chernov  <cher@ispras.ru>

	* userlist_xml.c: some functions are moved to separate files.

	* nls.h: (nls_lookup_table) a new function is added.

	* userlist_cfg.h, userlist_cfg.c, utf8_utils.h, utf8_utils.c, nls.c:
	Initial revision

2002-09-30  Alexander Chernov  <cher@ispras.ru>

	* sha.h, sha.c: copyright notice is added.

	* nls_iso8859-5.c: added exported reference to translation table.

	* nls.h: #endif is fixed.

	* makefile: file list is updated (NLS files and XML parsing).

	* userlist_xml.c, userlist.h, userlist.c, nls_utf8.c:
	Initial revision

2002-09-24  Alexander Chernov  <cher@ispras.ru>

	* sha.h, sha.c: Initial revision

2002-09-01  Alexander Chernov  <cher@ispras.ru>

	* sformat.c, prepare.c, parsecfg.c: <string.h> is included.

	* mkpasswd.c, misctext.c, make-teamdb.c: copyright notice is updated;
	<string.h> is included.

2002-06-16  Alexander Chernov  <cher@ispras.ru>

	* sformat.c, serve.c, run.c: <reuse/format_io.h> is included.

2002-05-20  Alexander Chernov  <cher@ispras.ru>

	* mkChangeLog.c:
	(read_ChangeLog) internal line length limit is increased to 8192.

2002-03-30  Alexander Chernov  <cher@ispras.ru>

	* prepare.c: added missed `use_corr' problem parameter.

2002-03-22  Alexander Chernov  <cher@ispras.ru>

	* makefile: the files from reuse library are removed;
	configuration section is remade;
	reuse library is used to compile the sources.

	* pathutl.h: copyright notice is updated;
	`pathcpy', `pathcat', `path_add_dir', `path_init' functions are
	  defined `extern inline', only if compiled with gcc.

	* teamdb.c, team.c: copyright notice is updated;
	`osdeps.h', `logger.h', `xalloc.h' are included from reuse library.

	* submit.c: copyright notice is updated;
	`logger.h' is included from reuse library.

	* sformat.c: copyright notice is updated;
	`xalloc.h', `number_io.h' are included from reuse library.

	* serve.c:
	`xalloc.h', `logger.h', `osdeps.h', `number_io.h' are included from
	  reuse library.

	* runlog.c: copyright notice is updated;
	`xalloc.h', `logger.h' are included from reuse library.

	* run.c: copyright notice is updated;
	`osdeps.h', `logger.h', `exec.h', `xalloc.h', `number_io.h'
	  are included from reuse library.

	* revinfo.c: copyright notice is updated;
	(main) removal of file from the database does not cause a fatal error.

	* register.c, prepare.c: copyright notice is updated;
	`xalloc.h', `logger.h', `osdeps.h' are included from reuse library.

	* pathutl.c: copyright notice is updated;
	`osdeps.h', `logger.h' are included from reuse library.

	* parsecfg.c: copyright notice is updated;
	`xalloc.h' is included from reuse library include directory.

	* misctext.c: copyright notice is updated;
	`xalloc.h' is included from reuse library.

	* master.c: copyright notice is updated;
	`osdeps.h', `xalloc.h', `logger.h' are included from reuse library.

	* localdb.c: copyright notice is updated;
	`xalloc.h' is included from reuse library.

	* inetdb.c: copyright notice is updated;
	`xalloc.h' is include from reuse library.

	* idmap.c: copyright notice is updated;
	`xalloc.h' is included from reuse library.

	* html.c: copyright notice is updated;
	`logger.h', `xalloc.h', `osdeps.h' are include from reuse library.

	* compile.c: copyright notice is updated;
	`xalloc.h', `logger.h', `exec.h', `osdeps.h' are included from reuse
	  library.

	* clntutil.c: copyright notice is updated;
	`logger.h', `xalloc.h' are included from reuse library.

	* clarlog.c: copyright notice is updated;
	`logger.h', `xalloc.h', `osdeps.h' are included from reuse library.

	* clar.c: copyright notice is updated;
	`logger.h' is included from reuse library.

	* cgi.c: copyright notice is updated;
	`xalloc.h' is included from reuse library.

	* base64.c: copyright notice is updated;
	`logger.h' is included from reuse library.

2002-01-09  Alexander Chernov  <cher@ispras.ru>

	* sformat.c: copyright notice is updated;
	"number_io.h" is included instead of "osdeps.h" to import os_snprintf.

	* serve.c, run.c: copyright notice is updated;
	"number_io.h" is included to import os_snprintf.

	* makefile: copyright notice is updated;
	number_io.[ch] added to the list of all C and H files;
	-DR_HAS_LONGLONG added to compiler options;
	number_io.c is required to compile most of compiled binaries.

	* number_io.h:
	(os_readdf,os_readdd,os_readdld) prototypes added.

	* number_io.c:
	(os_readhf,os_readhd,os_readhld) only if endptr == 1, format error
	  is reported, if there is a garbage after number;
	(os_readdf,os_readdd,os_readdld) new functions are implemented to
	  convert floating-point number in decimal character notation into
	  internal form for floats, doubles and long doubles respectively.
	  These functions currenly use sscanf, so underflows and overflows
	  are not properly reported.

2002-01-08  Alexander Chernov  <cher@ispras.ru>

	* number_io.h: (os_readint) moved from `reuse/osdeps';
	(os_readdouble) moved from `reuse/osdeps';
	(reuse_strtoll) moved from `reuse/osdeps';
	(reuse_strtoull) moved from `reuse/osdeps';
	(os_readll) moved from `reuse/osdeps';
	(os_readull) moved from `reuse/osdeps';
	(os_writell) moved from `reuse/osdeps';
	(os_writeull) moved from `reuse/osdeps';
	(os_snprintf) moved from `reuse/osdeps';
	(os_vsnprintf) moved from `reuse/osdeps';
	(os_writehf) prototype for this new function added;
	(os_writehd) prototype for this new function added;
	(os_writehld) prototype for this new function added;
	(os_readhf) prototype for this new function added;
	(os_readhd) prototype for this new function added;
	(os_readhld) prototype for this new function added.

	* number_io.c: (os_readint) moved from `reuse/osdeps';
	(os_readdouble) moved from `reuse/osdeps';
	(reuse_strtoll) moved from `reuse/osdeps';
	(reuse_strtoull) moved from `reuse/osdeps';
	(os_readll) moved from `reuse/osdeps';
	(os_readull) moved from `reuse/osdeps';
	(os_writell) moved from `reuse/osdeps';
	(os_writeull) moved from `reuse/osdeps';
	(os_snprintf) moved from `reuse/osdeps';
	(os_vsnprintf) moved from `reuse/osdeps';
	(copy_to_buf) a new static helper function to work with limited
	  buffers;
	(os_writehf) a new function to convert `float' values to hex strings;
	(os_writehd) a new function to convert `double' values to hex strings;
	(os_writehld) a new function to convert `long double' values to hex;
	(os_readhf) a new function to parse `float' hex strings;
	(os_readhd) a new function to parse `double' hex strings;
	(os_readhld) a new function to parse `long double' hex strings.

	* osdeps.h: copyright notice is updated;
	(os_readint) moved to `reuse/number_io';
	(os_readdouble) moved to `reuse/number_io';
	(reuse_strtoll) moved to `reuse/number_io';
	(reuse_strtoull) moved to `reuse/number_io';
	(os_readll) moved to `reuse/number_io';
	(os_readull) moved to `reuse/number_io';
	(os_writell) moved to `reuse/number_io';
	(os_writeull) moved to `reuse/number_io';
	(os_snprintf) moved to `reuse/number_io';
	(os_vsnprintf) moved to `reuse/number_io'.

2002-01-07  Alexander Chernov  <cher@ispras.ru>

	* number_io.h, number_io.c: Initial revision

2001-12-26  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h:
	Prototypes for new functions `os_writell', `os_writeull' added.

2001-12-09  Alexander Chernov  <cher@ispras.ru>

	* makefile: added rule `log' to generate ChangeLog;
	added compilation of mkChangeLog utility.

	* AUTHORS: initial revision

2001-12-08  Alexander Chernov  <cher@ispras.ru>

	* makefile: compilation of run.exe enabled on win32;
	-O2 insteand of -O3 on win32;
	-s during linking on win32.

	* run.c:
	(result2str) os_GetSignalString is used instead of strsignal.

2001-12-04  Alexander Chernov  <cher@ispras.ru>

	* NEWS: set the date of 1.4.0 release

2001-12-04  Alexander Chernov  <cher@ispras.ru>

	* makefile: compilation of run.exe for Windows is disabled fow now.

	* sformat.c:
	(sformat_message) os_snprintf is used instead of snprintf, this
	  allows compilation on Windows platform.

2001-12-04  Alexander Chernov  <cher@ispras.ru>

	* NEWS: Many additions for version 1.4.

	* pathutl.c, submit.c:
	meaningless change in order to normalize revision number.

	* parsecfg.c:
	(copy_param) new parameter type "x" is supported: this type means,
	  that string values to be added to extendable string array;
	(sarray_len) new function, which returns the number of strings
	  in an extendable string array;
	(sarray_free) new function, which frees memory from an extendable
	  string array;
	(sarray_merge_pf) new function, which merges two extendable string
	  arrays, freeing the second argument and preserving the first;
	(sarray_merge_arr) new function, which merges an array of extendable
	  string arrays.

	* parsecfg.h: 
	(sarray_len) new function prototype;
	(sarray_merge_pf) new function prototype;
	(sarray_free) new function prototype;
	(sarray_merge_arr) new function prototype.

	* prepare.c:
	(section_tester_params) type of `super' field changed to "x";
	  new field `clear_env' of type "d";
	  new field `start_env' of type "x";
	(tester_get_name) new function, which returns name of tester;
	(struct inheritance_info) new structure to specify inheritable fields;
	(inherit_fields) new function, which processes inheritance
	  specifications;
	(inh_isdef_int) new function;
	(inh_isdef_int2) new function;
	(inh_copy_int) new function;
	(inh_isdef_path) new function;
	(inh_isdef_path2) new function;
	(inh_copy_path) new function;
	(tester_inheritance_info) new table, which specifies, which fields
	  may be inherited for testers;
	(process_abstract_tester) new function to handle abstract testers;
	(set_defaults) `start_env' is processed: the values of supertester
	  and concrete tester are merged;
	  `errorcode_file' is checked properly for being undefined;
	  `clear_env' variable is handled;
	  single inheritance for concrete testers is allowed;
	  handling of abstract testers is moved into a separate function;
	(print_global) new function;
	(print_problem) new function;
	(print_all_problems) new function;
	(print_language) new function;
	(print_all_languages) new function;
	(print_tester) new function;
	(print_all_testers) new function;
	(print_configuration) new function, which prints all the configuration
	  variables.

	* exec.h: 
	(task_PutEnv) new function prototype;
	(task_ClearEnv) new function prototype.

2001-12-03  Alexander Chernov  <cher@ispras.ru>

	* prepare.h: include of <stdio.h> is added;
	(struct section_tester_data) type of `super' field is changed to
	  enable multiple inheritance;
	  new field `is_processed' (which may not be set from configuration
	  file). It is set to 1, when the tester is processed, i.e. fields are
	  inherited from its supertesters. Used to prevent circular
	  inheritance;
	  new field `clear_env';
	  new field `start_env';
	(print_problem) new prototype;
	(print_language) new prototype;
	(print_tester) new prototype;
	(print_global) new prototype;
	(print_all_languages) new prototype;
	(print_all_problems) new prototype;
	(print_all_testers) new prototype;
	(print_configuration) new prototype.

	* run.c:
	(run_tests) configuration variables `clear_env' and `start_env'
	  are honored when the testee program is started;
	(main) support for new option '-T' added. If this option is specified,
	  all the configuration settings are printed to stdout
	  (using print_configuration() function) and the program exits
	  with code 0.

	* compile.c, serve.c:
	(main) support for new option '-T' added. If this option is specified,
	  all the configuration settings are printed to stdout
	  (using print_configuration() function) and the program exits
	  with code 0.

2001-11-29  Alexander Chernov  <cher@ispras.ru>

	* NEWS: all the changes from 1.3.1 are documented

2001-11-08  Alexander Chernov  <cher@ispras.ru>

	* run.c:
	(struct testinfo) added field termsig to hold the termination signal;
	(result2str) 2 extra parameters added to verbosely print the
	  description of the terminating signal;
	(generate_report) updated to use the new result2str prototype;
	(generate_team_report) updated to use the new result2str prototype;
	(run_tests) added support for the new parameters:
	  `kill_signal', `no_core_dump', `max_stack_size', `max_data_size',
	  `max_vm_size';
	(run_tests) if the program is terminated due to a signal, its number
	  is saved in struct testinfo.

	* prepare.c:
	support for the new parameters `no_core_dump', `kill_signal',
	  `max_stack_size', `max_data_size', `max_vm_size' added.

	* prepare.h: new checker parameters: `no_core_dump', `kill_signal',
	  `max_stack_size', `max_data_size', `max_vm_size'.

	* exec.h: prototypes for new functions `task_SetKillSignal',
	  `task_SetStackSize', `task_SetDataSize', `task_SetVMSize',
	  `task_DisableCoreDump' added.

2001-11-07  Alexander Chernov  <cher@ispras.ru>

	* prepare.c:
	new static variables `abstr_probs', `abstr_testers', `max_abstr_prob',
	  `max_abstr_tester';
	new problem parameters `abstract', `super';
	(set_initial_values) removed since never used;
	(problem_init_func) new function, which initializes some fields in
	  a new problem data structure to a special `uninitialized' value;
	(tester_init_func) new function;
	(set_defaults)
	  1) added code to check goodness of abstract problem specification
	    (must have `short_name' field filled, cannot define `id',
	    `long_name', `super');
	  2) if the problem specification has `super' field, the corresponding
	    abstract problem is looked up;
	  3) any problem now must have `short_name' field defined;
	  4) if `long_name' is not defined, it is composed from `short_name';
	  5) for fields: `enable_rep_view', `full_score', `test_score',
	    `run_penalty', `use_stdin', `use_stdout', `time_limit',
	    `test_score_list', `test_sfx', `corr_sfx', `test_dir' (*),
	    `corr_dir' (*), `input_file', `output_file':
	    if a field is not defined in problem specification, but defined
	    in a superproblem for this problem, the field value is copied
	    from the superproblem, for fields marked (*) sformat_message
	    substitution is performed;
	  6) `test_sfx', `corr_sfx' are properly inherited from global, if
	    necessary;
	  6) added code to check abstract tester specification
	    (must define `name' field, cannot define `id', `super', `problem',
	    `problem_name');
	  7) for the following tester fields: `arch', `key', `tester_dir' (*),
	     `tmp_dir' (*), `work_dir' (*), `server_root_dir', `exe_dir' (*),
	     `is_dos', `no_redirect', `error_file' (*), `errorcode_file' (*),
	     `start_cmd', `prepare_cmd':
	    if a field is not defined in tester specification, but defined
	    in a supertester, the field value is copied
	    from the supertester, for fields marked (*) sformat_message
	    substitution is performed;
	(collect_sections)
	  1) abstract problems are collected to `abstr_probs' array;
	  2) abstract testers are collected to `abstr_testers' array;
	(prepare)
	  1) removed call of `set_initial_values';
	  2) fixed invalid usage of the 4th argument of parse_param function
	    call.

	* prepare.h:
	problem.abstract - new parameter, which is set to 1, if the problem
	  is the abstract problem specification;
	problem.use_corr - new parameter, which is set to 1, if the correct
	  answers for tests are provided. The initialization code contains
	  some heuristics to set it, if it was not set. For example, if the
	  correct answer directory was provided, this parameter is set to 1.
	problem.super - is the name of the superproblem specification
	  (which must be an abstract problem).
	  Most of the field values may be inherited from this abstract
	  problem's values.
	tester.abstract - new parameter, which is set to 1, if the tester
	  specification is abstract;
	tester.super - is the name of the supertester specification
	  (which must be an abstract tester).

	* teamdb.c:
	(teamdb_export_team) new function, which fills up a structure,
	  containing all the information about a team.

	* teamdb.h:
	(struct teamdb_export) a new structure is defined just to export
	  all the information about a team in one place. This structure
	  is then passed further to sformat_message function;
	(teamdb_export_team) a new function, which fills up this structure.

	* sformat.c: some debugging

	* run.c:
	(check_config) new tester parameter use_corr is used to decide
	  whether the correct answer files to be used.

	* pathutl.h:
	added GNU C specific function attributes to perform printf format
	checking on function calls of err and warn.

	* parsecfg.c:
	(read_variable) if only the variable name is provided, without the
	  value, "1" is assumed (like in C preprocessor -D option);
	(parse_param) section initialization function is called right
	  after xcalloc;
	(parse_param) stdout is flushed in order to not lost debugging output.

	* parsecfg.h:
	(struct config_section_info) added field `init_func' --- the initialize
	  function, which is called right after the memory for the new section
	  is allocated.

	* team.c, master.c:
	(initialize) configurable data directory is implemented --
	  CGI_DATA_PATH variable is used.

	* makefile:
	new variable CGI_DATA_PATH_FLAG allows setting of CGI scripts data dir;
	sformat.[ch] files added.

	* html.c:
	(sformat_url) function is removed, since it is superseded by a new
	  function `sformat_message' from sformat.c;
	(do_write_kirov_standings) changed to use `sformat_message';
	(do_write_standings) changed to use `sformat_message'.

	* clarlog.c: (clar_open) minor printf format warning is fixed.

	* sformat.h, sformat.c: Initial revision

2001-10-08  Alexander Chernov  <cher@ispras.ru>

	* html.c:
	(write_clar_view) team name is printed instead of team login;
	(do_write_kirov_standings) invalid <a> tag generation fixed;
	(write_judge_allclars) team name is printed instead of team login.

	* localdb.c:
	(localdb_selection_team) The team participates in selection tour,
	  if it does not participate in the training tour.

	* prepare.c:
	(create_dirs) correctly handled situation, when checker ids are
	  not successive (if testers[i] == null, it is skipped).

2001-10-05  Alexander Chernov  <cher@ispras.ru>

	* makefile: new files added

	* html.c:
	(sformat_url) new function, which formats the URL template from
	  the configuration file;
	(do_write_kirov_standings) new global parameters `prob_info_url',
	  `team_info_url' are supported;
	(do_write_standings) the same as above.

	* prepare.c: new global parameters `team_info_url', `prob_info_url'.

	* prepare.h: new parameters `team_info_url' and `prob_info_url'.

	* make-teamdb-inet.c, send-passwords.c: compilation command changed

	* teamdb.c:
	(teamdb_get_plain_password) new function, which returns the password
	  from the database in the plain text.

	* teamdb.h: new function teamdb_get_plain_password.

	* .cvsignore: new files added

	* make-teamdb.c: compilation command fixed

	* make-teamdb-inet.c, make-teamdb.c, send-passwords.c, inetdb.c, inetdb.h, localdb.c, localdb.h:
	initial revision

	* idmap.c: compilation command fixed

	* idmap.h, idmap.c: initial revision

2001-06-16  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h: 1) added prototypes for os_readll, os_readull;
	2) added prototypes for reuse_strtoll, reuse_strtoull,
	   these are activated only if __REUSE_FORCE_STRTOLL macro
	   is set.

2001-05-19  Alexander Chernov  <cher@ispras.ru>

	* html.c: write_judge_allruns: new score textfield
	should not be shown not in KIROV mode

2001-05-14  Alexander Chernov  <cher@ispras.ru>

	* VERSION: boosted to 1.4

	* html.c: 1) new `write_judge_teams_view' to write to the client the
	information about all the registered teams;
	2) new `write_judge_one_team_view' to write to the client
	(detailed?) information about a particular team.

	* html.h: prototypes for new functions `write_judge_teams_view'
	and `write_judge_one_team_view' added.

	* makefile: added new `register' dependencies.

	* master.c: 1) added support for viewing and editing team information;
	2) new `add_team_if_asked' to generate NEWTEAM command to server,
	   if correspoding parameter is set;
	3) new `do_team_action_if_asked' to perform various team editing
	   actions (CHGNAME, CHGLOGIN, CHGPASSWD, CHGBAN, CHGVIS),
	   if correspoding parameters are set;
	4) new `view_one_team_if_asked' to send VTEAM command to server
	   and display the results;
	5) new `view_teams_if_asked' to sent MTEAMS or JTEAMS command
	   and display the received list of all the teams;
	6) new `print_teamview_button' to print `view teams' button.

	* prepare.c:
	new integer parameters `max_line_length', `max_file_length'
	to limit the length of line and the size of file to be inserted
	into run report generaten in `run' module.
	Default values are 4096 and 65535 bytes.

	* prepare.h:
	new integer parameters `max_line_length', `max_file_length'
	to limit the length of line and the size of file to be inserted
	into run report generaten in `run' module.

	* register.c:
	some code added (from master), but still not yet completed.

	* run.c: 1) new `print_by_line' to cut excessively long files and
	excessively long lines of program output streams;
	2) in `generate_report' all tested program output is passed
	through `print_by_line' function.

	* serve.c: 1) new judge's commands added:
	        MTEAMS          - view all the teams (master's mode);
	        JTEAMS          - view all the teams (judge's mode);
	        VTEAM           - view a particular team;
	        CHGLOGIN        - change the team's login;
	        CHGNAME         - change the team's name;
	        CHGBAN          - change the team's banned status;
	        CHGVIS          - change the team's visibility status;
	        CHGPASSWD       - change the team's password;
	        NEWTEAM         - add a new team;
	2) new function `judge_add_team' implements `NEWTEAM' command;
	3) new function `do_add_team' parses data passed by the master program
	   to prepare call of `teamdb_add_team';
	4) new function `judge_change_team_ban' implements `CHGBAN' command;
	5) new function `judge_change_team_vis' implements `CHGVIS' command;
	6) new `judge_change_team_password' implements `CHGPASSWD' command;
	7) new `judge_change_team_name' implements `CHGNAME' command;
	8) new `judge_change_team_login' implements `CHGLOGIN' command;
	9) new `judge_view_one_team' implements `VTEAM' command;
	10) new `judge_view_teams' implemets `MTEAMS' and `JTEAMS' commands;
	11) some rearrangements in error reporting code
	(report_bad_packet, report_error - new function).

	* teamdb.c: 1) transaction mode is supported for functions which update
	teamdb base. In transaction mode previous state of base
	is saved, so undo operation is possible. Transaction mode
	is entered by calling `teamdb_transaction'. Function
	`teamdb_rollback' rolls back the changes, function
	`teamdb_commit' leaves transaction mode with all changes
	performed;
	2) new function `teamdb_add_team' to add new team to database.
	The function performs all the necessary range checkings;
	3) new function `teamdb_toggle_vis' toggles visibility
	flag from normal to TEAM_INVISIBLE and back;
	4) new function `teamdb_toggle_ban' toggles availability flag
	from normal to TEAM_BANNED and back;
	5) new function `teamdb_change_login' changes login field for
	the given team;
	6) new function `teamdb_change_name' changes name field for
	the given team;
	7) new function `teamdb_is_valid_login' checks that the given
	string does not contain characters, invalid for team login;
	8) new function `teamdb_is_valid_name' checks that the given
	string may be team's name (does not contain invalid chars);
	9) new function `teamdb_get_total_teams' returns the total number
	of registered teams;
	10) new function `teamdb_write_teamdb' saves teamdb file to disk.

	* teamdb.h: new functions prototypes: teamdb_write_teamdb,
	teamdb_get_total_teams, teamdb_is_valid_login, teamdb_is_valid_name,
	teamdb_change_login, teamdb_change_name, teamdb_toggle_ban,
	teamdb_toggle_vis, teamdb_transaction, teamdb_commit, teamdb_rollback,
	teamdb_add_team.

2001-05-13  Alexander Chernov  <cher@ispras.ru>

	* TODO: put reference to html/index.html instead of previous content.

2001-05-09  Alexander Chernov  <cher@ispras.ru>

	* parsecfg.c: '%' and ';' made comment characters

2001-05-07  Alexander Chernov  <cher@ispras.ru>

	* makefile: basic compilation rules for `register' added.

2001-05-06  Alexander Chernov  <cher@ispras.ru>

	* register.c: initial revision

2001-05-02  Alexander Chernov  <cher@ispras.ru>

	* VERSION: boosted to 1.3

	* team.c, master.c:
	fixed charset passing to `client_not_configured': before `global'
	is initialized we cannot use it, so pass NULL.

	* html.c:
	1) write_team_statistics: information about scores gained for runs
	   is now showed in run statistics (only in KIROV scoring system);
	2) do_write_kirov_standings updated to use `score' field of run
	   database (scores gained for the run not counting penalties);
	3) write_judge_allruns: information about scores gained for runs
	   is now showed in run statistics (only in KIROV scoring system);
	4) write_team_source_view: run_get_record now has one more parameter.

	* run.c: 1) `struct testinfo' has two more fields: score, max_score;
	2) generate_report accepts two more parameters:
	   scores: score gained for this run, max_score: full score for this
	   problem;
	3) run report is extended both for judges and teams: it includes
	   information about scores gained for each test and for the run as
	   the whole (only in KIROV scoring system);
	4) generate_team_report accepts two more parameters:
	   scores, max_score (see above);
	5) run report packed now has three parameters instead of 2:
	   gained score included, so it is calculated in run_tests;
	6) ntests and tscores fields are filled up during initalization
	   for each problem;
	7) implemeted parsing of test_score_list and some sanity checking.

	* serve.c:
	1) updated calls to `run_change_status': new parameter newscore
	   passed as -1 where it is not relevant;
	2) run result packet now has 3 parameters instead of 2:
	   gained score is passed (used only in KIROV scoring system);
	   function `read_run_packet' updated accordingly;
	3) updated calls to `run_get_record': new parameter pscore passed
	   as NULL;
	4) `CHGSTAT' master judge command now has 4 parameters instead of 3:
	   new score is passed (used only in KIROV scoring system);
	   function `judge_change_status' is updated.

	* prepare.h: 1) new [problem] section parameter: test_score_list;
	2) added private (non-configurable) fields to
	   `struct section_problem_data':
	   ntests  - number of tests;
	   tscores - array of scores for tests.

	* prepare.c: 1) new parameter in [problem] section: test_score_list;
	2) start_cmd is concatenated with script_dir only if
	start_cmd is defined for the [tester] section;

	* master.c: 1) change_status_if_asked: support to change run score
	(if specified), applicable only to KIROV score system;
	2) command `CHGSTAT' now has 4 parameters (new parameter `score');
	3) view_report_if_asked: corrected header;

	* runlog.c:
	1) implemented function run_get_attempts, that return the number
	of attepts to solve the same problem by the same team before
	the given runid. The current implementation is dumb: it scans
	all the previous runs, it should be fixed;
	2) run_get_record accept one more parameter: pointer to variable
	to fill with score gained for this run (used only in KIROV
	score system). The pointer might be NULL, in this case nothing
	happens;
	3) run_change_status accept one more parameter: newscore: score
	for the run;
	4) record and header length increased to 99 to accomodate new
	field;
	5) new field is stored in the table: score for run, this parameter
	used in KIROV score system only, though; `struct run_entry',
	function `run_read_entry', function `run_make_record' updated
	accordingly.

	* runlog.h:
	1) run_change_status got one more parameter: score for the run;
	2) run_get_record got one more parameter: pointer to fill with score
	   for the run;
	3) new function run_get_attempts(int runid, int *pattempts)
	   this function returns the number of attempts to solve
	   the same problem by the same team, as given runid;

2001-04-28  Alexander Chernov  <cher@ispras.ru>

	* serve.c:
	fixed: judge_update_public_standings did not respond to the client,
	so it hung

	* mkpasswd.c: added option to generate tex password report

2001-04-20  Alexander Chernov  <cher@ispras.ru>

	* master.c, serve.c:
	added support for master's UPDATE command: force update
	of public standings

2001-03-31  Alexander Chernov  <cher@ispras.ru>

	* makefile: tweaks...

	* master.c: new configuration parameter conf_dir added
	partially.

	* prepare.c: bugs fixed

	* run.c: uninitialized local variable bug fixed

	* team.c: references to problems and standings are shown when
	the contest is started

	* prepare.c: Preprocessor is invoked with cpp command

	* team.c: 1) removed previously commented stuff;
	2) implemented "View Source" and "View Report";
	3) added 'charset' configuration parameter;
	4) all html headers now use this parameter.

	* serve.c: added two team commands: SOURCE, REPORT.
	added support for "KIROV" score system.

	* runlog.c, runlog.h: added RUN_PARTIAL run result.

	* run.c: 1) added support for "KIROV" score system;
	2) added support for generation of team_log;

	* prepare.h, prepare.c: new parameters:
	global:
	  team_enable_src_view
	  team_enable_rep_view
	  charset
	  team_report_archive_dir
	  run_team_report_dir
	problem:
	  team_enable_rep_view
	  full_score
	  test_score
	  run_penalty
	tester:
	  run_team_report_dir

	* master.c: 1) added 'charset' configuration parameter;
	2) all generated html headers use this parameter;
	3) removed old commented out stuff;

	* html.h: added write_team_source_view, write_team_report_view

	* html.c: 1) added "View source" and "View report" options to
	team's page, this depends on config parameters;
	2) added support for "KIROV" score system;
	3) implemeted write_team_source_view;
	4) implemeted write_team_report_view;

	* clntutil.h: charset argument added to cgi_read.

	* clntutil.c: 1) removed previously commented stuff;
	2) added charset parameter where html headers are printed;
	3) charset parameter is added to some functions.

	* cgi.h: charset argument added to cgi_read.

	* cgi.c: 1) removed previously commented stuff;
	2) added charset parameter where html headers are printed;
	3) charset parameter is added to some functions.

2001-03-25  Alexander Chernov  <cher@ispras.ru>

	* unix/unix_fileutl.h, unix/osdeps.c, unix/logger.c, unix/fileutl.c, unix/exec.c, win32/osdeps.c, win32/logger.c, win32/fileutl.c, win32/exec.c, xalloc.h, xalloc.c, version.h, teamdb.h, runlog.h, parsecfg.h, osdeps.h, misctext.h, logger.h, html.h, fileutl.h, exec.h, clntutil.h, clarlog.h, cgi.h, base64.h:
	copyright notice updated

	* makefile: 1) -D_GNU_SOURCE added for Linux;
	2) copyright notice updated.

	* clntutil.c: asprintf usage fixed

	* run.c: tTask added to c-types

	* team.c, submit.c, serve.c, runlog.c, run.c, pathutl.c, parsecfg.c, mkpasswd.c, misctext.c, master.c, html.c, compile.c, clntutil.c, clarlog.c:
	copyright notice updated

	* revinfo.c: copyright notice updated

	* prepare.h, prepare.c: 1) added global score_system parameter;
	2) copyright notice updated.

	* clar.c, cgi.c, base64.c, pathutl.h: copyright notice updated

	* teamdb.c: copyright notice updated

2000-11-05  Alexander Chernov  <cher@ispras.ru>

	* makefile 1.12: removal of revinfo added to clean rule

	* TODO 6.2: .

	* makefile 1.11: added rule force

	* prepare.h 1.9, revinfo.c 1.2, run.c 1.9, runlog.c 1.3, runlog.h 1.2, serve.c 1.10, submit.c 1.6, team.c 1.6, teamdb.c 1.6, teamdb.h 1.5, version.h 1.2, base64.c 1.3, base64.h 1.2, cgi.c 1.6, cgi.h 1.3, clar.c 1.4, clarlog.c 1.5, clarlog.h 1.4, clntutil.c 1.7, clntutil.h 1.5, compile.c 1.9, html.c 1.7, html.h 1.7, master.c 1.9, misctext.c 1.2, misctext.h 1.2, mkpasswd.c 1.4, parsecfg.c 1.5, parsecfg.h 1.5, prepare.c 1.11:
	copying conditions changed: LGPL -> GPL

	* clntutil.c 1.6:
	Copyright notice added at the bottom of the generated html page.

	* makefile 1.10: added version number tracking

	* COPYING.GPL 1.1: New file.

	* .cvsignore 6.2: x

	* TODO 6.1: new todo

	* VERSION 1.1, revinfo.c 1.1, version.h 1.1: New file.

2000-11-04  Alexander Chernov  <cher@ispras.ru>

	* makefile 1.9: dependencies regenerated;
	some other changes;

	* team.c 1.5: 1) new configuration parameters;
	2) write_log(...) is replaced with err(...) or info(...);
	3) other changes.

	* submit.c 1.5: 1) added preprocessor-related options (-D, -E);
	2) other changes.

	* run.c 1.8: many changes.

	* master.c 1.8, serve.c 1.9: many changes

	* compile.c 1.8: 1) some documentation added;
	2) write_log(...) is replaced with err(...) or info(...);
	3) added preprocessor-related (-E, -D) options;
	4) MAX_LANGUAGE is replaced with max_lang;
	5) some more changes.

	* clar.c 1.3: 1) preprocessor-related options added (-E -D);
	2) message-related functions from misctext.h
	   are used;
	3) some more changes.

	* clntutil.c 1.5:
	1) const removed from the first param of client_transaction function;
	2) sf_* function used to do checked syscalls.

	* clntutil.h 1.4:
	const removed from the first param of client_transaction function;

	* clarlog.c 1.4:
	1) write_log(...) is replaced with err(...) or info(...);
	2) macro ERR_R introduced to further simplify error reporting;
	3) sf_* read/write functions used to do checked i/o;

	* runlog.c 1.2: 1) sf_* functions from unix/fileutl are used to do
	   checked i/o;
	2) write_log(...) is replaced with err(...) or info(...) calls.

	* teamdb.c 1.5: write_log(...) is replaced with err or info calls;

	* html.c 1.6:
	1) write_log(...) mostly replaced with calls of info and err;
	2) sf_fopen function implemented to do checked fopen;
	3) many configuration parameters renamed due to changes
	   in prepare.[ch];
	4) old write_standings is split into write_standings and
	   do_write_standings, the latter is used in write_judge_standings;
	5) implemented write_judge_source_view;
	6) implemented write_judge_report_view;
	7) implemented write_judge_standings.

	* html.h 1.6: added prototypes for write_judge_source_view,
	write_judge_report_view, write_judge_standings.

	* pathutl.h 1.6: added prototypes for err and info.

	* pathutl.c 1.5:
	1) pathmake2 does not alter the path, if it starts from "./";
	2) added functions err and info;
	3) added outlined implementation of path_add_dir and path_init.

	* parsecfg.c 1.4: implemented reading from the gived file descriptor

	* parsecfg.h 1.4: added new param to function parse_param
	to read from the given FILE.

	* prepare.c 1.10: 1) many parameter names changed;
	2) new parameters added;
	3) added support for preprocessing of configuration file;
	4) other changes (don't remember which...);

	* prepare.h 1.8:
	too many changes to list, most notably, the configuration
	params names changed.

2000-11-03  Alexander Chernov  <cher@ispras.ru>

	* fileutl.h 1.7:
	added prototypes for check_executable, check_readable_dir,
	  check_writable_dir, check_writable_spool, relaxed_remove.

	* osdeps.h 6.13: 1) copyright notice updated;
	2) added proto for os_ErrorMsg;
	3) char * -> const char * for many functions.

	* logger.h 6.5: 1) copyright notice updated;
	2) char * -> const char * for write_log, vwrite_log.

	* exec.h 6.8: 1) copyright notice updated;
	2) added prototypes for task_ErrorCode, task_GetRunningTime.

	* cgi.c 1.5: 1) MAX_VALUE_SIZE increased to 128K;
	2) added function documentation.

	* base64.c 1.2: 1) added function descriptions;
	2) write_log(0, LOG_ERR ...) is replaced with err;
	3) added include for pathutl to import err();
	4) removed previously commented out debugging stuff.

2000-10-30  Alexander Chernov  <cher@ispras.ru>

	* .cvsignore 6.1: initial revision

2000-10-25  Alexander Chernov  <cher@ispras.ru>

	* master.c 1.7, team.c 1.4: 1) macro GLOBAL_PARAM is used;
	2) certain configuration parameters are renamed;
	3) initialization rewritten using path_init and path_add_dir.

	* prepare.c 1.9:
	macros GLOBAL_PARAM, PROBLEM_PARAM, LANGUAGE_PARAM, CHECKER_PARAM
	are used.

	* pathutl.h 1.5: added functions path_add_dir and path_init.

	* run.c 1.7: added support for correct answer files

	* prepare.c 1.8: directory permissions fixed for checker->exe_dir.

	* master.c 1.6: added parameter standings_url;

	* makefile 1.8: added misctext

	* html.h 1.5: prototype of write_standings changed.

	* html.c 1.5: 1) added include for misctext.h;
	2) contestlog is renamed to runlog;
	3) dur2str moved to misctext under the name duration_str;
	4) status2str moved to runlog under run_status_str;
	5) write_runs_table removed;
	6) html_armored_*, html_armor_* moved to misctext;
	7) clar_flags_to_str moved to clar under the name clar_flags_str;
	8) write_clars_table removed;

	* clntutil.h 1.3: removed prototype of client_duration_to_str.

	* clntutil.c 1.4: 1) added include directive for "misctext.h";
	2) no-cache option is added to header;
	3) client_duration_to_str moved to misctext under the name
	duration_str;

	* serve.c 1.8: 1) removed outdated "theory of operation";
	2) contestlog.h renamed to runlog.h;
	3) added include directive for misctext.h;
	4) two standings are generated: judge's and public;
	5) log_ prefix systematically replaced with run_ prefix;
	6) get_quoted_message_size moved to misctext.h under
	the name message_quoted_size;
	7) quote_message moved to misctext.h under the name
	message_quote;
	8) make_reply_subj moved to misctext.h under the name
	message_reply_subj;
	9) process_judge_reply is updated to work with new
	functions with slightly changed API;
	10) RUNSTAT, GETSTAT, CLARSTAT, CLARSTAT2 commands are
	removed.

	* z.cfg 6.7: moved to conf/server.cfg

2000-10-24  Alexander Chernov  <cher@ispras.ru>

	* clarlog.h 1.3: added proto for clar_flags_html.

	* clarlog.c 1.3: 1) CLAR_RECORD_SIZE increased to 79;
	2) implemented function clar_flags_html.

	* cgi.c 1.4: added include of cgi.h

	* contestlog.c 1.5, contestlog.h 1.5: renamed to runlog

	* TODO 1.4: most items are done.

	* misctext.c 1.1, misctext.h 1.1, runlog.c 1.1, runlog.h 1.1: New file.

2000-10-20  Alexander Chernov  <cher@ispras.ru>

	* z.cfg 6.6: corrections

	* html.h 1.4: added proto for write_judge_allstat.

	* team.c 1.3: added quick navigation with anchors

	* serve.c 1.7: 1) standings are updated more correctly;
	2) server supports JSTAT and MSTAT commands;
	3) server now sleeps for global.serve_sleep time.

	* run.c 1.6: 1) checkers are now stored in checks array;
	2) program return code can be read from a file;
	3) some new configuration parameters;

	* prepare.h 1.7: new parameters

	* prepare.c 1.7: 1) new parameters;
	2) all checkers are collected in checks table;

	* mkpasswd.c 1.3: more verbose printing of generated passwords.

	* master.c 1.5: changed navigation

	* html.c 1.4: 1) fixed bugs in standings calculation;
	2) implemented new scheme of judge status reporting.

	* fileutl.h 1.6: added prototype for make_writable.

	* exec.h 6.7: added prototype for task_Kill.

	* compile.c 1.7: added support for language specific spool directories

	* clntutil.h 1.2, clntutil.c 1.3: 1) added function client_split;
	2) added support for quick navigation (with anchors).

2000-10-18  Alexander Chernov  <cher@ispras.ru>

	* serve.c 1.6:
	prepare and create_dirs take extra argument: initialization mode

	* z.cfg 6.5: added language bc

	* submit.c 1.4, run.c 1.5:
	prepare and create_dirs take extra argument: initialization mode

	* prepare.h 1.6, prepare.c 1.6:
	added three initialization modes: PREPARE_SERVE,
	PREPARE_COMPILE, PREPARE_RUN.

	* pathutl.h 1.4: added proto of pathmake4

	* pathutl.c 1.4: added implementation of pathmake4

	* osdeps.h 6.12: fixed prototype of os_rGetBasename

	* makefile 1.7: fixes for win32

	* compile.c 1.6: 1) prepare() takes extra argument: prepare mode;
	2) create_dirs() is called with mode PREPARE_COMPILE.

	* clar.c 1.2: prepare() takes extra argument: prepare mode

2000-10-17  Alexander Chernov  <cher@ispras.ru>

	* z.cfg 6.4: *** empty log message ***

	* xalloc.h 6.5: added XALLOCA macro

	* teamdb.h 1.4: added definitions of TEAM_INVISIBLE and TEAM_BANNED

	* teamdb.c 1.4:
	implemented support for team flags (invisible and banned)

	* team.c 1.2: 1) added check that team is banned;
	2) corrections in client_put_header usage.

	* serve.c 1.5: 1) added update of standings file;
	2) maximal number of runs and clars for a team
	is checked;
	3) original message is quoted when replied by a judge;
	4) rejudge run option implemented.

	* run.c 1.4: 1) memory leak plugged;
	2) output files not attached to report if their size > 64K

	* prepare.h 1.5, prepare.c 1.5: new parameters

	* mkpasswd.c 1.2: added ability to change a team's password

	* master.c 1.4: 1) corrections in usage of client_put_header;
	2) added "YES" and "NO" buttons to judge's reply dialog.

	* html.h 1.3, html.c 1.3: implemented write_standings

	* contestlog.h 1.4: log_get_total_size rewritten as log_get_team_usage.

	* contestlog.c 1.4: 1) problem and language swapped in log_add_record;
	2) log_get_total_size rewritten as log_get_team_usage;
	3) log_get_times checks for null pointers before write to them.

	* clntutil.c 1.2: corrections is client_put_header usage

	* clarlog.h 1.2, clarlog.c 1.2:
	clar_get_from_size rewritten as clar_get_team_usage

	* TODO 1.3: progress...

	* z.cfg 6.3: changes

	* teamdb.h 1.3, teamdb.c 1.3: actually implemented

	* submit.c 1.3: added new IP-address parameter to SUBMIT directive.

	* serve.c 1.4: mostly implemented

	* run.c 1.3: 1) added initial configuration checking;
	2) bug fixes.

	* prepare.h 1.4, prepare.c 1.4: new configuration parameters

	* osdeps.h 6.11:
	added os_rDirName, os_GetWorkingDir, os_rGetWorkingDir,
	os_IsAbsolutePath.

	* master.c 1.3: 1) some stuff moved to clntutil;
	2) added reading of configuration file;
	3) added support for sending messages.

	* makefile 1.6: progress...

	* html.h 1.2, html.c 1.2: massive additions

	* fileutl.h 1.5: added permission bits to make_dir, make_all_dir

	* exec.h 6.6: added support for time-limited execution

	* contestlog.h 1.3: added IP-address

	* contestlog.c 1.3: added ip address to the record

	* compile.c 1.5: added initial configuration checking to spot
	nonexisting scripts, etc

	* cgi.c 1.3: added handling of multipart/form-data

	* TODO 1.2: progress...

	* team.c 1.1, clar.c 1.1, mkpasswd.c 1.1, clarlog.c 1.1, clarlog.h 1.1, base64.c 1.1, base64.h 1.1, clntutil.h 1.1, clntutil.c 1.1:
	New file.

2000-10-11  Alexander Chernov  <cher@ispras.ru>

	* teamdb.c 1.2, teamdb.h 1.2: added teamdb_get_login, teamdb_get_name

	* serve.c 1.3: in progress... interaction with judge client
	mostly implemented

	* run.c 1.2: major progress. still not tested though

	* prepare.c 1.3, prepare.h 1.3: new parameters

	* master.c 1.2: mostly implemented

	* makefile 1.5: added rules for master executable

	* fileutl.h 1.4: added PIPE flag

	* contestlog.c 1.2: many new functions;
	format of header and records changed;
	record size increased to 64 bytes

	* contestlog.h 1.2:
	many new functions; format of header and records changed

	* cgi.c 1.2: implemented cgi_nparam and cgi_nname

	* cgi.h 1.2: added prototypes for cgi_nparam and cgi_nname

	* z.cfg 6.2: added mandatory parameter checker.check_cmd.

	* html.h 1.1, html.c 1.1, TODO 1.1: New file.

2000-10-10  Alexander Chernov  <cher@ispras.ru>

	* master.c 1.1, cgi.h 1.1, cgi.c 1.1: New file.

	* submit.c 1.2: changes according to changes in fileutl module.

	* serve.c 1.2: in progress

	* prepare.h 1.2, prepare.c 1.2: lots of new parameters

	* pathutl.h 1.3: added proto for pathmake3 and chop.

	* pathutl.c 1.3: implemented functions pathmake3 and chop.

	* parsecfg.h 1.3: quiet_flag parameter added to function parse_param.

	* parsecfg.c 1.3: lots of new options

	* osdeps.h 6.10: 1) os_GetBasename_r renamed to os_rGetBasename;
	2) added proto for os_GetWorkingDir;
	3) added proto for os_rGetWorkingDir;
	4) added proto for os_IsAbsolutePath.

	* makefile 1.4: new utility "run" added

	* logger.h 6.4: prototype for logger_set_level added;

	* fileutl.h 1.3: major rewritings

	* exec.h 6.5: added platform-independent file open flags and
	file open modes.

	* compile.c 1.4: changes due to changes in fileutl (generic_*_file)
	and in osdeps.

	* run.c 1.1: New file.

2000-10-07  Alexander Chernov  <cher@ispras.ru>

	* r.cfg 6.2: Removed

	* t.cfg 1.2: Removed.

	* contestlog.c 1.1, teamdb.h 1.1, teamdb.c 1.1, submit.c 1.1, serve.c 1.1, prepare.h 1.1, prepare.c 1.1, contestlog.h 1.1:
	New file.

	* pathutl.h 1.2, pathutl.c 1.2: pathmake2 function added

	* parsecfg.h 1.2, parsecfg.c 1.2: enhanced

	* osdeps.h 6.9: os_GetBasename_r function added

	* makefile 1.3: in progress

	* fileutl.h 1.2: lots of functions added

	* compile.c 1.3: massive rewritings

	* z.cfg 6.1: initial revision

2000-10-03  Alexander Chernov  <cher@ispras.ru>

	* compile.c 1.2: Fixed bug in pathmake call.

	* r.cfg 6.1: New file.

	* makefile 1.2: Added dependencies for .o files;
	fixed compilation flags for win32.

2000-10-01  Alexander Chernov  <cher@ispras.ru>

	* xalloc.c 6.6: REUSE fancy stuff ("lconfig.h", "reuse/..." includes)
	is used only if __REUSE__ symbol defined.

	* exec.h 6.4: added function task_SetWorkingDir

	* osdeps.h 6.8: added function os_Sleep.

	* logger.h 6.3: 1) added proto of function logger_init_ex;
	2) removed old prototypes of fd_printf, etc.

	* pathutl.h 1.1, pathutl.c 1.1, t.cfg 1.1, parsecfg.h 1.1, parsecfg.c 1.1, fileutl.h 1.1, compile.c 1.1:
	initial revision

	* makefile 1.1: New file.

1999-08-30  Alexander Chernov  <cher@ispras.ru>

	* xalloc.c 6.5: "reuse_version.h" is included using CONF_DEPFILE macro.

1999-08-16  Alexander Chernov  <cher@ispras.ru>

	* exec.h 6.3, logger.h 6.2, osdeps.h 6.7, xalloc.c 6.4, xalloc.h 6.4:
	Copyright notice added (GNU LGPL).

	* COPYING.LGPL 6.1: *** empty log message ***

1999-08-04  Alexander Chernov  <cher@ispras.ru>

	* xalloc.h 6.3: XOFFSET, XDEREF, XPDEREF macros added.

1999-07-30  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h 6.6:
	prototypes for os_AttachFILE, os_snprintf, os_vsnprintf added.

1999-07-24  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h 6.5: REUSE_F_OK constant added

	* osdeps.h 6.4: äÏÂÁ×ÌÅÎ ÐÒÏÔÏÔÉÐ os_CheckAccess.

1999-06-02  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h 6.3: added functions get_PRJ_HOME_name, get_PRJ_HOME,
	get_PRJ_CONFIG_name, get_PRJ_CONFIG

1999-05-31  Alexander Chernov  <cher@ispras.ru>

	* logger.h 6.1: copyright notice updated;
	merged with the UniCad's version of the file.

	* xalloc.h 6.2, xalloc.c 6.3:
	äÏÂÁ×ÌÅÎÙ const Ë×ÁÌÉÆÉËÁÔÏÒÙ × ÐÒÏÔÏÔÉÐÙ xstrmerge*

	* osdeps.h 6.2, xalloc.c 6.2, xalloc.h 6.1: copyright notice updated;
	merged with the UniCad's version of the file.

	* exec.h 6.2: copyright notice updated;
	protection against c++ added

1999-05-30  Alexander Chernov  <cher@ispras.ru>

	* osdeps.h 6.1, exec.h 6.1: tabulation converted to spaces

	* xalloc.c 6.1: áÄÁÐÔÁÃÉÑ Ë ÎÏ×ÏÍÕ ÏËÒÕÖÅÎÉÀ ËÏÍÐÉÌÑÃÉÉ.

	* exec.h 6.0, logger.h 6.0, osdeps.h 6.0, xalloc.h 6.0, xalloc.c 6.0:
	New file.

END

	$Id$
