		CHANGES
		Last Modified: $Date$

2002/01/13, 01/12, ...

   final clean up campaign in 2001 
   	クリーニングキャンペーン 2001 final はいまだに続いているぞ;-)

   Mail::Message
   FML::parse
	rfc822_message_FUNCTION()

	メッセージ全体( Mail::Message の chain 全体)に対する
	メソッドには rfc822_message_ を頭につけるように名前をあわせる

   File::SimpleLock 
   Mail::Delivery::Queue 
        
        use Fcntl qw(:DEFAULT :flock), remove LOCK_XX() definitions.

2001/12/25

   Mail::HTML::Lite 
	bug fix::_print_li_filename() check is too restricted

2001/12/22,23,24,25

   final clean up campaign in 2001
   	クリーニングキャンペーン 2001 ファイナル:)
	FNF-ify 
	コメントおよびドキュメントの更新
	空白の削除 \s*$
	使っていないので削除したモジュール
		FML::Messages
		FML::MIME
		FML::Language::Japanese::Subject

   renamed
	FML::Checksum -> Mail::Message::Checksum
  
2001/12/22

   FML::Process::Kernel 
	remove FML::Messages
	
   TinyScheduler 
	define get_mode() for symmetric definition.

2001/12/18

  記事の HTML 化を可能にする(デフォルトで ON)

	use_html_archive = yes (デフォルト)

	~fml/public_html/mlarchive/ＭＬ名/ 

   FML::Process::Kernel 
	define $fml_owner_home_dir by process $uid
	
   FML::Process::Distribute 
	htlmify article

2001/12/16

   FML::Messages 
   IO::Adapter::LDAP 
   Mail::Message::Date 
   Mail::Message::Language::Japanese::Subject 
	nuke "require Exporter, which is not needed
	
   INSTALL.sh 
	warn you should update loader if needed

   loader.in
	use $fmlconfdir not $sysconfdir
	use IO::File not FileHandle

2001/12/11

   FML::Command::Admin::newml 
	ensure installed file mode to be 0644
	
   TinyScheduler 
	speculate $user by $$ unless defined $user

   ./configure の拡張
		メッセージをいろいろつけたす	
		--with-fml-group=$GROUP
		--with-fmlconfdir=$prefix/etc/fml

2001/12/09

  インストーラのバグをとる
	makefml の引数チェックのバグを修正
	fml/etc/ 以下の構成を変更する	
	makefml newml は config.cf 生成時にＭＬ名の変更をする	

2001/12/08

   TinyScheduler 
	more proper error messages
	
   FML::Process::Configure 
	fix error handling, define finish() to avoid loading error
	
   FML::Process::DocViewer 
	add path for perl executatbles e.g. ::usr::local::bin

2001/11/27

   FML::Log 
   Tie::JournaledDir 
	FML::Date -> Mail::Message::Date
	
   Mail::Message::Date 
	remove MTI.. message

   update comments
	clean up
	FNF-ify

   Mail::ThreadTrack::Analyze 
	run prepare_history_info($msg) if $self->{ _is_rewrite_header }

   configure
	@sysconfdir@ -> @sysconfdir@/fml
	modify message
	
   FML::Process::Switch 
	modified not to use Standalone
	loader has Standalone by itself now.

   config.sh.in 
   etc/main.cf.in 
	@sysconfdir@ -> @sysconfdir@::fml
	
   FML::Process::Switch 
   libexec/loader.in 
	modified not to use Standalone
	loader has Standalone by itself now.

2001/11/26

   FML::Process::Kernel 
	bug fix missing mkdir() argument
	
   FML::Process::Distribute 
   Mail::ThreadTrack 
   Mail::ThreadTrack::Analyze 
	toggle header rewriting (subject) to add thread id. off by default
	
   config.cf
	define $use_thread_subject_tag to toggle header rewrite

2001/11/25

   more tainted safe
	(but needs more consideration, may be use of FML::Restriction class)
	TinyScheduler 
	FML::Process::ConfViewer, FML::Process::Scheduler
	
   FML::Filter::BodyCheck 
	validate get_first_plaintext_message() return value

   libexec/loader.in 
	we should not use @INC derived from $0
	reset PATH in the early stage

   FML::Process::*
	implement help() method
	enable --help for all command line programs
	verify_request() checks @ARGV and show help() if needed
	
   FML::Process::Switch 
	enable distribute and command
	check whether getopt() options are given or not.
	enable --help for all command line programs
	xxx.cgi SHOULD NOT ACCPET the same options as command line program xxx
	does.
	
   FML::Process::Kernel 
	trap --help in new() to show and exit asap
	
   FML::Process::ConfViewer 
	fmlconf and makefml are separete now
	
   FML::Process::CGI::Kernel 
	change defualt target to _top
	
   FML::Process::CGI::Param 
   FML::Restriction
	reconstructured safe parameter definitions

2001/11/21

   FML::Process::Switch 
	fmlsch -h to show help
	
   FML::Process::Scheduler 
   TinyScheduler 
	clean up fmlsch
	FNF-ify
	handle options by getopt() in Process::Scheduler not TinySchedule
	make "fmlsch help" work
	fix entry duplication bug in parser
	print_specific_month() can handle (month, year) pair
	define set_mode()
	use env var BROWSER ("w3m" by default)

2001/11/20

   File::Sequence 
	implement search_max_id() in hash key
	more debug
	
   Mail::ThreadTrack::DB 
	db_hash( $type ) to return hash reference for $type
	
   Mail::ThreadTrack::HeaderRewrite 
	validate variables
	
   FML::Process::ThreadTrack 
	update database for latest not-yet-analyzed articles.

2001/11/19

   Mail::ThreadTrack 
	implement set_fd(), get_fd()
	implemente set_order()
	
   FML::Process::ThreadTrack 
   Mail::ThreadTrack::Print 
	split functions for list and summary.
	"list" shows thread summary but "summary" shows thread summary +
	article summary.
	
	enhance fmlthread to provide CUI, oh this is useful !
	
   Mail::ThreadTrack::Print 
	enable --reverse for summary, list command
	check reverse_order value ;-)
	
   Mail::ThreadTrack::Print::Message 
	check value of header fields, which is undefined in some cases
	
   Mail::ThreadTrack::Print::Text 
	implement show_articles_in_thread()
	
   FML::CGI::ThreadTrack 
	summary listing on CGI is normal order by default

2001/11/18

   FML::Article 
	implement speculate_max_id()
	
   FML::Process::ThreadTrack 
	change max_id speculation strategy:
	1. check the max_id is given or not, use it if given
	2. try max_id() of FML::Article;
	3. speculate_max_id($spool_dir) in FML::Article

   fml/etc/paths.cf
	./configure が paths.cf を作る。

2001/11/17

   FML::Process::HTMLify 
   Mail::HTML::Lite 
	disable debug code, enable it when $ENV{debug} is defined
	
   FML::CGI::Configure ThreadTrack.pm 
   FML::Process::Switch 
   Mail::ThreadTrack 
   Mail::ThreadTrack::Print::HTML 
	change default target to _top
	use $msg_base_url to show link to article

2001/11/16

   Mail::ThreadTrack 
	new()::save $args as _saved_args in $self
	
   Mail::ThreadTrack::DB 
	fix _status but in unpolite way. XXX fix it !

2001/11/13

   CGI 新スタイルへ変更他、

	Problem 追跡システム、スケジューラ、makefml CGI 版 (プロトタイプ)
	すべて動くようにした

   FML::Process::CGI::Kernel 
	some cgi may need no ml_name
	
   FML::Process::CGI::Param 
	fix address regexp, define $command, modify error return way

   FML::Process::CGI::Kernel 
	move get_ml_list() to FML::Process::CGI::Kernel
	from FML::CGI::ThreadTrack 

2001/11/12

   use autoconf
	いろいろ改造する。そういうわけで

		# useradd fml
		# ./configure; make install

	というインストール方式になりました。

   loader
	loader generated from loader.in (autoconf)
	
   Standalone 
	expand ${variable}
	
   FML::CGI::ThreadTrack 
	fix typo, $myname resolved by $curproc->myname()
	
   FML::Process::Switch 
	fix to introduce $config_dir (etc::fml) from main.cf
	default_config -> default_config_cf

   FML::CGI::ThreadTrack 
   FML::Process::CGI::Kernel Param.pm 
	move "function to get paramlist" to FML::Process::CGI::Param module
	implement safe_pramlist\d+_\S+() via AUTOLOAD()

2001/11/11

   Mail::ThreadTrack::Print::Sort 
	change cost evaluation logic (numeric now)
	
   Mail::ThreadTrack::Print 
   Mail::ThreadTrack::Print::HTML Message.pm 
	clean up summary() mode for both text and html modes.
	print() method knows what should it do for text::html mode.
	
   Mail::ThreadTrack::HeaderRewrite 
	defined $rh->{ _articles  }->{ $thread_id }
	
   Mail::ThreadTrack::Print 
   Mail::ThreadTrack::Print::HTML Text.pm 
	dynamic binding accoding to mode::text or html
	
   Mail::ThreadTrack 
	change article_summary_lines to 5 by default
	
   FML::Process::CGI::Param 
	define article_id, method -> action
	
   FML::Process::CGI::Kernel 
	header( -charset => $charset)
	
   FML::CGI::ThreadTrack 
	modified to fit FML::Process::CGI structure.
	enable 'close' operation
	reset button
	
   FML::Process::CGI::Kernel 
	workaround::header( -target  => "ResultsWindow" ) anyway
	
   FML::Process::CGI::Param 
	allow action =~ ::^[-a-z_]+$::
	
   FML::CGI::ThreadTrack 
   Mail::ThreadTrack 
   Mail::ThreadTrack::Print 
   Mail::ThreadTrack::Print::HTML 
	enable "show" and "change_status" to work
	
   FML::CGI::ThreadTrack 
   FML::Process::{Distribute,Switch,ThreadTrack}
   Mail::ThreadTrack 
   Mail::ThreadTrack::Print::HTML 
	ThreadTrack switches acconding to myname ($0).
	threadview is view only and cannot change status.

2001/11/10

   loader
   FML::Process::Switch 
	bug fix::format $reason
	
   FML::Process::CGI::Kernel 
	remove makefml issue.
	modify run() which now executes:
		$curproc->html_start($args);
		$curproc->run_cgi($args);
		$curproc->html_end($args);

2001/11/08

   Mail::Message::Language::Japanese::Subject 
	nuke new(), not used
	
   Mail::ThreadTrack 
	restructure hierarchy
	clean up inheritence for further refactoring
	modify method names
	clean up
	nuke some "*cost*" indicator codes
	closed -> close for some cases
	
   Mail::ThreadTrack::Analyze 
	avoid duplicated commit to articles DB { thread_id => [ id1 id2 ... ] }
   Mail::ThreadTrack::Print::Message 
	ignore ^= line in message summary
	
   Mail::Message::Date 
	validate $in $shift_m
	
   Mail::ThreadTrack 
	list_up_thread_id()::remove db_*() operation
	
   Mail::ThreadTrack::Analyze 
	speculate date from header's Date:
	
   loader
	least error infomation by default OR raw $@ if debug
	
   FML::Process::Switch 
	least error infomation by default OR raw $@ if debug
	
   Mail::ThreadTrack::Print 
	bug fix trap pattern of _valid_buf() and
	_delete_subject_tag_like_string()
	
   FML::Process::CGI 
	use FML::Process::CGI::{Kernel,Param}

   FML::Command 
	defined() check for $command_args
	
   FML::Process::Switch 
	modify error message

2001/11/07

   FML::Process::Switch ThreadTrack.pm 
   Mail::ThreadTrack 
   Mail::ThreadTrack::Print 
	
	enable fmlthread options:
	--article_id_max=\d+  to override ::var::spool::ml::$ml::seq
	--reverse             to reverse time order in showing "review"
	
   Mail::ThreadTrack::DB 
	
	remove not used variables
	
   FML::Process::Switch ThreadTrack.pm 
   Mail::ThreadTrack::Analyze 
	
	fmlthread -f filterlist ...
	
   Mail::ThreadTrack::DB 
	
	show ... when processing
	
   Mail::ThreadTrack::Print 
	
	check -f article_file
	
   FML::Process::Utils 
	
	command_line_argv_find()
	
   FML::Process::ThreadTrack 
	
	fmlthread review ML RANGE srcdir=::some::where
	XXX srcdir=\S+ overwrites config->{ spool_dir } variable
	
   Mail::ThreadTrack 
	
	define add_filter() method
	
   FML::Process::Switch ThreadTrack.pm 
	
	we should use long line options since we support it :)
	o define --spool_dir for fmlthread. for example:
	% fmlthread db_clear fml-help
	% fmlthread --spool_dir=::some::where -f ::tmp::filter db_rebuild fml-help
	% fmlthread --spool_dir=::some::where review fml-help last:100
	


2001/11/06

   スレッド review と再生成をリモートでできるようにするとちょっと便利

	fmlthread db_clear fml-help
	fmlthread --spool_dir=/some/where -f /tmp/filter db_rebuild fml-help
	fmlthread --spool_dir=/some/where review fml-help last:100

2001/11/05

   fmlthread review
	review() mode to show summary for articles in each thread

   FML::Process::Utils 
	implement command_line_options()

   fmlhtmlify [-I dir] src_dir dst_dir
		new utility for convenience
	Affected Files:
		INSTALL.sh 
		fml/bin/fmlhtmlify 
		FML::Process::Switch 
		FML::Process::HTMLify 

2001/11/04

   プログラム全域で ticket -> thread

   FML::Process::Switch 
	eval FML::Process::Flow::ProcessStart($obj, $args);
	and trap error.
	If error traped and $obj has help() method, run $obj->help().
	also upcall the $@ by croak($@)
	
   FML::Process::
	save $args at $curproc->{ __parent_args }
	$curproc provides convenient functions FML::Process::Utils has.
	fml_version()
	myname()
	command_line_raw_argv()
	command_line_argv()
	article_id_max()
	
	my $myname  = $curproc->myname();
	my $argv    = $curproc->command_line_argv();
	
   FML::Process::ThreadTrack 
	enable db_clear, db_mkdb, summary, help
	
   Mail::ThreadTrack 
	implement exist() and close()
	implemente db_clear(), db_mkdb()

2001/11/03

   remove fmlticket, create fmlthread

   FML::Process:: を Mail::ThreadTrack ベースに切替える
	FML::Process::TicketSystem は削除し、
	FML::Process::ThreadTrack が作られた。

   Mail::ThreadTrack を CVS へ入れる。
	これはスレッドを追跡するためのツールであり、
	call tracking system の概念のごく一部をなしているといってよい

   Mail::ThreadTrack 
	change new() parameters
	nuke pcb
	$config->{ db_type } = 'AnyDBM_File'; by default
	$self->{ _index_db } = $db_base_dir::"index"
	moved set_status() into this module
	
   Mail::ThreadTrack::Analyze 
	nuke pcb
	bug fix $article_id handling
	Log() to $self->log()
	assign()::clean up function names and arguments
	define {get,set}_thread_id() and modified to use them
	add commentes for FNF style
	clarify assign() and rewrite_header() roles
	define {set,get}_thread_status() and modified to use them
	message-id is <addr-spec> (RFC822), we use this format also in DB.
	correct handling of $config->{ thread_subject_tag_location }
	remove _address_clean_up(), which is not used now.
	remove set_status()
	
   Mail::ThreadTrack::HeaderRewrite 
	prepare_history_info()
	
   Mail::ThreadTrack::DB 
	make index database in db_base_dir not db_dir
	
   Mail::ThreadTrack::Print 
	build-in decode_mime_string()
	tune up alignment in printing
	EUC-ify output
	define STR2EUC() for convenience
	
2001/10/29

   Mail::Message 
	_get_mime_header() checks offset boundary
	return default pair if overrun.
	
   Mail::HTML::Lite 
	nuke $ENV{DEBUG}, check input data more
	
	rename key:
	prev_thread -> prev_thread_id
	next_thread -> next_thread_id
	
	count up $self->{ _num_attachment } for child process
	attachment file name $id.$count.html
	parent passes the id to child (processing attachment)
	
	ignore type if type is ::^multipart::
	
	check $idp pattern

2001/10/28

   Mail::HTML::Lite 
	change method to speculate thread link

	rename functions
	implement _create_temporary_filename()
	reorder $type check
	
	consider case of text::* with encoded content
	save content to file once and rewrite it by _rewrite_html_file()
	
	consider encoding style of quoted-printable, 7bit also
	
	_format_safe_header() and print it in raw mode to enable
	<SPAN> tag use. 

	define _sprintf_safe_str() and  __sprintf_safe_str() for convenience
	
	define _separete_url() to help incomplete regexp of
	HTML::FromText::text2html()

2001/10/27

   Mail::HTML::Lite 
	use _PRINT_DEBUG(), define _print_safe_{str,buf}() to be easy for eyes
	_print() -> _print_raw_str()
	
   Mail::Message 
	oops, should be s::::::mi to trap encodinge

   FML::Filter::BodyCheck 
   Mail::Message 
   Mail::Bounce::DSN 
   Mail::HTML::Lite 
	change method: data() -> data_in_body_part()

2001/10/22

   FML::Ticket::System (clean up campaign)
	remove obsolete functions:_quote_space(), _dequote_space(), AUTOLOAD()
	remove not used _pcb_[sg]et_id()
	$self->_pcb_set_id($curproc, $id) -> $pcb->set('article', 'id', $id)

   Mail::HTML::Lite 
	add (X-ML-Name X-Mail-Count X-Sequence) into @header_field (default
	header to show)
	
	defined() check before calling Jcode::XXX()
	
   FML::Command::Admin::htmlify 
	accept command line option::srcdir=$srcdir

2001/10/21

   makefml htmlify $ml_name outdir=$out_dir

	スプールを HTML 化するコマンド
	もちろん Mail::HTML::Lite を利用する。
	＃ fml 4 の spool2html に対応するものといえよう

   Mail::HTML::Lite 
	月ごとの ID インデックスも作る (TABLE)。
	make monthly index always
		monthly_index.html
		month.YYYYMM.html

	prepare top level entrance functions:
		htmlify_file() for file
		htmlify_dir()  for directory
	
	clean up codes, documents
	
	implement _print_index_{begin,end}() and modified to use them
	
	sort location of function definition
	rename functin name:
	_print_attachment -> _print_inline_object
	_raw_text_print   -> _text_print_by_raw_mode
	
	oops, fix untie() operation to be ensured

	check target html is already processed or not
	
	bug fix _address_clean_up() syntax check
	
	check already processed or not
	you can know it by $self->is_ignore($id) method.
	
	move a lot of debug code to "if $debug > 3" in cache_message_info()

2001/10/20

   Mail::HTML::Lite 
	メールを HTML 化するモジュール
	mhonarc のように凝ってはいないが必要十分な最低限の機能は持つ
	(だから Lite なんだよん)

	cache information in .ht_hml_* in html article directory
	rewrite links using these data among articles needed to rewrite.
	links contains prev::next by ID (article ID) and prev::next by Thread.
	
	bug fix target lists to update, modified to use the result by
	evaluation_relation()
	
	clean up debug code
	more debug information

	show <META> and <LINK> information in <HEAD> if could
	new() takes charset as argument
	change _decode_mime_string() to method
	modify ifdef in_chaset_to_code() to be more suitable

	we can make index.html and thread.html
	
	Mail::HTML::Lite::new() accepts
		{ db_type => "DB_TYPE", attachment => 0::1 }

	change html_begin argument::($wh, { message => $msg });
	we can specify title in <HEAD>
	several minior changes
	
	bug fix::_address_clean_up() should check return value, which is
	address or not more rigolously.
	
	bug fix::check parent::child (attachment) process or not
	
	more and more debug info

   Mail::Message 
	
	bug fix::$InComingMessage should not local scope. modify it to
	SCALAR REF
	
	bug fix::data_in_body_part() returns whole data not the first
	512 bytes. if $size is specified as argument, return the first
	$size bytes. 
	
	feature::get_data_type_list() returns ARRAY of xxx::yyy by
	default for other method use. If under $debug mdoe, it shows
	verbose output. 

2001/10/19

   import HTML::FromText 1.005
	
   Mail::Bounce 
	Mail::Message::get_data_type_list() is changed. To sync with it,
	use $msg->get_data_type_list( { debug => 1 } ) for debug.
	
2001/10/18

   Tie::JournaledDir 
	change default unit to "day" not number (unix time).

2001/10/17

   variables
	add $confirm_keyword to $available_commands_for_stranger
	add $available_commands_for_stranger to $available_commands

   FML::Command 
	modified FML::Command uses get_attribute() in FML::Command::Attribute

   FML::Command::Attribute 
	renamed FML::Command::ACL -> FML::Command::Attribute.pm

   FML::Command::SendFile 
	support MH style arg::first, last, cur, first:\d+ and last:\d+
	
   FML::Command::User::bye 
	fix typo

   File::Sequence 
	implemente get_id() method to return the latest article id
	update document

2001/10/15

   フィルタリングを有効にする

     FML::Filter::BodyCheck
     FML::Filter::HeaderCheck.pm 
	define @default_rules and use it if rules not specified
	rules() method to overwrite filtering rules

     variables
	define the following variables for filtering (FML::Filter)
		body_cksum_cache_dir
		body_filter_rules	
		body_loop_check_rules	
		header_filter_rules	
		use_body_filter		
		use_body_loop_check	
		use_header_filter	

2001/10/14

   FML::Process::Kernel 
	bug fix::we should pay attention to implisit $_ use
	
   FML::Process::Configure 
	sync style w:::Process::Command

   FML::Process::Command 
	make argument vector from $command
	relocate _parse_command_options()
	implemt _get_command_name()
	clean up
	fix typo

   FML::Command::Admin::get 
	prototype to use FML::Command::SendFile

   FML::Command
   FML::Command::*
   FML::Process::Configure
   FML::Process::Command 
	$optargs -> $command_args

2001/10/13

   FML::Process::Command 
	pass $comname in $optargs
	
   FML::Command::SendFile 
	fix duplicatoin for $charset
	
   FML::Config 
	avoid infinite loop

   FML::Command::SendFile is added
	This module provides basic file sending functions

   implement command: get help summary guide
	FML::Command::SendFile based command        

2001/10/12

   FML::Command 
	remove error_nl()

   FML::Command::Admin::resign 
	->SUPER::process()

   FML::Command::Admin::subscribe 
	clean up log message, LogError() -> croak()

   FML::Command::User::subscribe 
	use reply_message_nl()

   FML::Command::User::unsubscribe 
	confirm version

   FML::Config 
	expand_variable_in_buffer can take optional $args

   FML::Credential 
	bug fix variable name

   FML::Process::Kernel 
	implement search template mechanism in reply_message_nl()
	$config->expand_variable_in_buffer() takes optional $args

   FML::Process::Command 
	use reply_message_nl()
	remove exception mechanism by $obj->error_nl();

   etc/
	define $message_message_dir
	add chaddr to $available_commands

   メッセージ
	テンプレートは euc-jp を使う

   FML::Config 
	expand_variable_in_buffer()
	expand $varname to $config->{ varname }

   FML::Process::Command 

	add _pre_scan()
	even not member need to use $confirm_keyword.
	for example, 'guide', 'subscribe', 'confirm'

	add _can_accpet_command()
	1. simple command syntax check
	2. use of this command is allowed in FML::Config or not ?
	3. Even new comer need to use commands [ guide, subscirbe, confirm ].

   enable confirmation
	FML::Confirm module を利用します
	変数 $available_commands_for_stranger を定義する。
	FML::Confirm provides basic functions needed for confirmation
	+ FML::Command::User::subscribe
	+ FML::Command::User::confirm
	+ FML::Confirm

   FML::Command::Admin::subscribe 
	check address is specified or not

   FML::Command::User::help 
	clean up
	expand_variables_in_file() -> prepare_file_to_return()

   FML::Process::Kernel 
	define prepare_file_to_return():
	expand $xxx variables in template (e.g. $help_file).
	1. in Japanese case, convert kanji code::iso-2022-jp -> euc
	2. expand variables::$ml_name -> elena
	3. back kanji code::euc -> iso-2022-jp
	4. return the new created template

2001/10/11

   FML::Filter::Utils
	it provides utility functions
		is_secure_command_string()
		is_valid_mail_address()

   FML::Process::Command
	it checks input by FML::Filter::Utils::is_secure_command_string()

2001/10/10

   コマンド
	get mget help などが動くようになった。

   FML::Config
	check defined() more

   FML::Credential
	implement is_same_address() completely.
	is_member() accpepts $args->{ address }
	define set_compare_level(), get_compare_level()

   add variables
	command_prompot	= >>>
	help_file = $message_template_dir/help
	message_template_dir = $fml_share_dir/template/$template_file_charset
	template_file_charset = $default_charset

   Mail::Delivery::SMTP
	old IO::Socket has no connected() method. modified to use our
	own socket_is_connected() method or remove connected() check. 

	Mail::Delivery::SMTP	
	+ bug fix: ensure we handle IPv6 case more restrictly  

	Mail::Delivery::Net::INET6
	+ bug fix: clear error counter
	+ check more defined($socket) or not, socket is connected    
	+ more debug log

   FML::Process::Kernel
	define prototype for reply_message_nl() for natural language
	check more defined() or not
	more debug info
	define expand_variables_in_file()
	+ expand $xxx variables in template (e.g. $help_file).

   FML::Process::Command
	bug fix: $obj->$command where $command is a command name not line.
	modified to use reply_meessage_nl()

   FML::Command
	define error_nl(), but a dummy yet now
	+ get natural language information

2001/10/09

   libexec/Standalone.pm
	check $config->{ $x } is defined() or not

   Ticket System
	consider $ticket_subject_tag_location in regexp
	change ticket_id_syntax to "$ml_name/%d" by default
	define ticket_subject_tag_location as "appended"
	change default ticket syntax 
		etc/default_config.cf.ja
		etc/defaults/tickets.cf.ja

	FML::Header::Subject
		change regexp_compile().
		quotemeta() firstly, and hack a few

   FML::Process::Command
	catch up the modification in FML::Process::Distribute.
	make command function work with replying request mail.
	disable lock()/unlock() since each command module lock/unlock
	by itself. 

   FML::Process::Distribute
	modified finish() to use queue_flush()


2001/10/08

   メールでのコマンドの応答を可能にした(プロトタイプ)
	add a lot of debug messages

	* Affcted modules:
		FML::Command
		FML::Process::Command
		FML::Process::Distribute
		FML::Process::Kernel
		FML::Process::Switch

	* newly added:
		FML::Command::User::help

	* test tools:
		regress/simulation/test-ctl.sh
		regress/testmails/text=plain.command

   FML::Command
   FML::Process::Kernel
	more debug info

   FML::Process::Distribute
	log ACL error

   FML::Process::Switch
	enable "loader --ctladdr" behaves as libexec/command
	more debug messages
	modify style e.g. eval q## -> eval q{} et. al.

   regress/simulation/test-ctl.sh 
	added simple command mode emulator

   regress/simulation/perlcheck 
	add -I ../../fml/libexec

   libexec/loader
	die() -> croak()
	define missing default value in initialization
	remove obsolete variable: $libexec_dir
	eval()-fiy more
	fix error message
	show $@ in error
	fix typo

   fix: more severe initialization check 
	FML::Credential


2001/09/23

   Mail::Message
	implement get_encoding_mechanism() in Mail::Message. 

	implement get_offset(): return offset information in the data.
	return value is	ARRAY.

	return encoding type for specified Mail::Message not whole mail. 
	The return value is one of base64, quoted-printable or undef. 

	Modified Files:
		fml/lib/Mail/Message.pm
		fml/doc/ja/tutorial/module/Mail::Message.sgml
		regress/message/dump.pl

   チュートリアル
	module  に関する新パートの創設
	module/ ディレクトリを創設
		Mail::Message
		IO::Adapter
	のプロトタイプを用意する。
	このディレクトリでは各モジュールの詳細な使い方について
	記述するもの。

   FML::Filter
	fml 4.0.x 相当の機能をきちんと実装する。
	＃ ただし、ウィルスチェックは除く
	XXX これで、おおむね、いつでも入れ換え可能か？ 

	Utils を削除し、関数は適当なモジュールへ移動
	move clean_up_buffer() and compare_euc_string() to
	FML::Filter::BodyCheck and FML::Language::Japanese::Utils
	respectively to remove FML::Filter::Utils.

	MS GUID を判別するルーチンも実装した

2001/09/22

   FML/Config.pm
	if ($ENV{'debug'}) { ... debug ...;}

   TinyScheduler.pm
   FML/Command/Admin/edit.pm
	modified to use File::Spec

2001/09/18

   errormail collection
	add netscape messaging server 3.54 sample
	thanks PR for Toshimi Aoki <toshi@kinotrope.co.jp>

2001/09/17

   IO::Adapter

     * IO::Adapter::{DBI,MySQL,RDBMS}.pm
	rename: $self->{ _driver } -> $self->{ _model_specific_driver } 
	dynamically load DBD:mysql

	move replace(), getline() and get_nextvalue() to DBI.pm 
	since these functions are MI (Map Independent).

	implement setpos(), getpos() and eof() in MySQL.pm 
	since these functions is dependent on map type (MD).

	RDBMS.pm is not used now, so removed.

     * IO/Adapter.pm
	change replace()
	o fix typo: s/regexp/replace/
	o fix case insensitive search when $show_all is on
	o call md_find (md == map dependent, function) if defined
	o enabled to call md_XXX()
		define AUTOLOAD() to hook up md_XXX() functions
		XXX For example, md_XXX() should be implemented at
		XXX IO::Adapter::SQL::toymodel.pm

     * IO/Adapter/SQL/toymodel.pm
	rename: fetch_and_cache_address_list -> fetch_all  
	implement md_find()


2001/09/13

   FML::Process::QueueManager
	send() can take queue id as the argument

   FML::Process::Kernel
	more friendly error message

	implement queue_flush($queue): This flush C<$queue>, that is,
	send mail specified by C<$queue>.  It uses
	FML::Process::QueueManager module.

   FML::Config.pm
	define FIRSTKEY and NEXTKEY for complete hash emulation

   FML::Command::Admin	ユーザ用コマンド群
		commit prototype
		makefml uses this class

2001/08/26

   FML::Credential
	implement has_address_in_map() method and is_member() uses this. 
	has_address_in_map() searches the address in the specified map.

   IO::Adapter クラス
	touch() メソッドを追加
	XXX file タイプ以外では無意味。ダミー

   FML::Command:: クラスの再構成

	FML::Command.pm		FML::Command クラス以下への入口
	FML::Command::ACL	ACL
	FML::Command::Utils	よもやまの定義
	FML::Command::User	ユーザ用コマンド群
	FML::Command::Admin	ユーザ用コマンド群

		newml edit などは Admin のみ

2001/08/24

  regress/
	add&enable FML::Config {+,-}= overload test tools

2001/08/23

   FML::Config の拡張
	postfix style のさらなる拡張

	変数名 += 値
	変数名 -= 値
	で、特定の値の足し引きができます。

	例:
		x  = a b c d
		x -= b
		は
		x = a c d

		x  = a b c d
		x += e
		は
		x = a b c d e
		などとなる。

2001/08/22

   clean up
	File::Spec を使うように変更


2001/08/21

   Tie::JournaledDir クラスの創設
   Tie::JournaledFile の clean up

	Tie::JournaledDir クラスはキャッシュとしてあるディレクトリを使い、
	その中の複数個のファイルを順番に使います。
	それぞれのファイルは Tie::JournaledFile を使ってアクセスします。

	これにより auto expiration をする Journaled 型キャッシュを実現
	します。

	add Tie::JournaledDir which wraps Tie::JournaledFile and uses some
	directory as cache area. 

	add/update test tools for Tie::Journaled{File,Dir} modules.

	clean up Tie::JournaledFile
	o remove header in the cache file
	o $self->{ 'key' }
	o $debug is on if $ENV{'debug'} is defined.
	o more carefull check of whether the value is defined or not.
	o quotemeta() for pre search key in find()
	o rename grep() to find()

2001/08/19

  フィルタコードの改良
	一行メールか否か？の判定コードをきれいにする

		そのために signature や引用か？を判定するコード他を書く
		Utils.pm もきれいにし、いらないコードを消した。
		

2001/08/06

  フィルタ
	clean up 

  fml/lib/
  fml/etc/
	変数名の変更をする。s/header_check/header_loop_check/
	ループチェックの設定であることを変数名自体ではっきりさせる

  IO::Adapter

	IO::Adapter
		set @ISA = qw(IO::Adapter::ErrorStatus) to call error_set()
		check $@ before call configure()
		add more debug codes

	IO::Adapter::MySQL
		メインの部分を 	IO::Adapter::SQL:: 以下へ移す
		IO::Adapter::MySQL は単なるフロントエンドにする

2001/08/02

   Mail::Message
	bug fix wrong handling of "\n" at the last of part

2001/07/31

   rename FML::NL to FML::Language

   Mail::Bounce class

	以下のパターンを解析できるようになったはずです。
		Lotus Notes
		pakeo.ne.jp
		jp-r.ne.jp (ほんとか?)

	Mail::Bounce::Language::Japanese
		日本語依存パーサを作成する

   Mail::Bounce::DSN

	call again $self->address_clean_up($addr, $addr)
	gives $addr itself as a hint of fixing broken address
	domain part of $addr may match someting e.g. nifty.ne.jp, webtv.ne.jp.

   Mail::Bounce.pm
   Mail::Bounce::FixBrokenAddress.pm 

	use Mail::Bounce::FixBrokenAddress to clean up address

	Mail::Bounce::FixBrokenAddress class provides irrgular
	address handlings, so handles domain/MTA specific addresses.
	For example, nifty.ne.jp, webtv.ne.jp, ...

2001/07/30

   Mail::Bounce class

        pick up Reporting-MTA and Received-From-MTA in DSN

	clean up documentation
	add error examples

	modify Mail::Bounce::$module return "hints" to caller
	(Mail::Bounce class). 

2001/07/19

   add errormail samples

	freeserve.ne.jp
	webtv.ne.jp

2001/07/15

   設定変数

	pid を _pid へ変更

   FML::Config

	enable read and write configuration file

	コメントを保存しつつ postfix スタイルの設定ファイルの
	読み書きを可能にするように

2001/07/15

   このファイルを創設する:)

$FML: CHANGES.txt,v 1.45 2001/12/26 14:33:29 fukachan Exp $
