2005-05-02  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* letools.cpp (strndup): New function to avoid the build issue on some
	 platform, like Solaris and MacOS X.

2005-04-28  Akira TAGOH  <tagoh@redhat.com>

	* IIIMP_IMState.cpp (IIIMP_IMState::send_hotkeys): allow Shift+space for Korean.

2005-04-22  Akira TAGOH  <tagoh@redhat.com>

	* IIIMP_hotkey_profile.cpp (IIIMP_hotkey_profile::get_super_hotkeys):
	new method.
	(IIIMP_hotkey_profile::add_default_hotkey_profiles): removed.
	(IIIMP_hotkey_profile::add_super_hotkey_profiles): new method.
	(IIIMP_hotkey_profile::retrieve_trigger_keys): new method.

	* IIIMP_IMState.cpp (IIIMP_IMState::send_trigger_keys): send
	IM_REGISTER_TRIGGER_KEYS according to current trigger hotkey.
	(IIIMP_IMState::send_hotkeys): modified to support the configurable
	hotkey feature.

	* IIIMP_IMState.hh (IIIMP_IMState): added 3rd argument of send_hotkeys
	method.

	* IIIMP_hotkey_profile.hh (IIIMP_hotkey_profile): add new method
	add_super_hotkey_profiles, get_super_hotkeys and retrieve_trigger_keys.
	removed add_default_hotkey_profiles method.

	* lexmlconf.h, lexmlconf.cpp, letools.cpp: modified much more to
	support the configurable hotkey feature.

2005-04-21  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* letools.cpp: revert to C++.
	* Makefile.am (iiimf_le_tools_SOURCES): letools.c -> letools.cpp
	Note: letools.c which is written in C depends on libiiimutil.so
	which is written in C++.  libtool explicitly excludes C++ runtime
	libraries when building libiiimutil.so.  Consequently link error
	on Solaris.

2005-04-13  Akira TAGOH  <tagoh@redhat.com>

	* iwrap.c (authenticate_with_unix): use socklen_t instead of size_t for
	getsockopt(2).

	* IMNSMapConf.cpp (IMNSMapConf::read_ns_map_config): missing a return
	code.

	* IIIMP_IMState.cpp (IIIMP_IMState::get_imstate_from_desktop):
	return NULL if no valid IIIMP_IMState instance.

	* lexmlconf.cpp (iiim_le_xmlconf_remove_modules): avoid the double-free
	issue.

2005-04-11  Akira TAGOH  <tagoh@redhat.com>

	* IIIMP_ICState.cpp (IIIMP_ICState_REQUESTED::set_values):
	sync pshared->conversion_mode.

	* IIIMP_hotkey.cpp (IIIMP_hotkey::switch_language): likewise.

2005-04-06  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.cpp (open_ns): Bug fix.  open() expects path,
	oflag, and optionally mode.

2005-04-05  Akira TAGOH  <tagoh@redhat.com>

	* IMUtil.cpp (IMSocketAddress::~IMSocketAddress): clean up a socket
	directory too.

2005-04-05  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IMSvrXMLConf.cpp (IMSvrXMLConf::load): match parenthesis
	(IMSvrXMLConf::configure): call IM_unix_domain_socket_file_dir for
	-user fallback

	* IMUtil.cpp (dir_valid): new function for -user fallback.
	(alternate_unix_domain_socket_file_dir): new function for -user
	fallback.
	(IM_unix_domain_socket_file_dir): new function for -user fallback.

	* IMUtil.hh (IM_unix_domain_socket_file_dir): new.

2005-04-04  Akira TAGOH  <tagoh@redhat.com>

	* LEMgr.cpp (LEMgr::choose_LE): don't try to find LEs with
	the traditional way when an requested language nor an IM description
	is given.

2005-04-01  Akira TAGOH  <tagoh@redhat.com>

	* LEMgr.cpp (LEMgr::listup_LEs): implemented the loading preferred
	LE feature.

	* lexmlconf.cpp (iiim_le_xmlconf_load_file): clean up before
	loading the configuration file.

	* IMSvrXMLConf.hh: added a missing header file.

	* IMSvrArg.cpp (IMSvrArg::show_usage): modified the message.
	(IMSvrArg::initialize): added -preferredload option.
	(IMSvrArg::configure): Replaced IMLEXMLConf to IIIMLEXMLConf.

	* IMSvr.cpp (IMSvr::config_le): likewise.

	* LEMgr.cpp (LEMgr::reload): likewise.
	(LEMgr::choose_LE):likewise.
	(LEMgr::LEMgr): added another constructor to give a flag for
	the loading-preferred-LEs feature.

	* IMSvrCfg.cpp (IMSvrCfg::initialize): related changes.

	* IMLEXMLConf.cpp, IMLEXMLConf.hh: removed.

	* LE.cpp (LEContext::bind_imlexec): fixed the build fails with gcc4.
	(LEContext::initialize): likewise.
	(LEContext::~LEContext): likewise.
	(from Tomas Mraz <tmraz@redhat.com>)

2005-03-31  Akira TAGOH  <tagoh@redhat.com>

	* IMSvrXMLConf.cpp (IMSvrXMLConf::configure): Use /tmp/.iiimp-unix-$USER
	for a per-user daemon.

2005-03-31  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IMDesktop.cpp (IMDesktop::release_iml_desktop): If -desktop
	option is specified, terminate iiimd if the last desktop is
	destroyed.  Currently, an environment variable is consulted
	instead of -desktop option.

	* IMSvrArg.cpp: Add -desktop option.

	* IMSvrCfg.cpp: Add -desktop option.

	* IMSvrCfg.hh (class IMSvrCfg): Add -desktop option.

2005-03-30  Akira TAGOH  <tagoh@redhat.com>

	* IMSvrArg.cpp (IMSvrArg::configure): Use /etc/iiim/iiimd.xml.conf
	if $HOME/.iiim/iiimd.xml.conf is missing.

	* segvlogger.c (main): try to output a segv log to $HOME/.iiim/logs
	when opening a log on /var/log/iiim was failed.

2005-03-29  Akira TAGOH  <tagoh@redhat.com>

	* IMSvrXMLConf.cpp (IMSvrXMLConf::configure): listen on
	$HOME/.iiim/.iiimp-unix-$USER instead of /var/run/iiim/.iiimp-unix-$USER
	when iiimd is running with -user.

	* lexmlconf.cpp (iiim_le_xmlconf_get_le_info_list): implemented.
	(iiim_le_xmlconf_get_lang_list): likewise.

	* letools.c: implemented --list option.

	* lexmlconf.h: add a missing prototype.

2005-03-25  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IMSvrCfg.cpp (IMSvrCfg::initialize):
	add -udsfile option to specify unix domain socket file name.
	add -vardir option.

	* IMSvrArg.cpp (IMSvrArg::show_usage):
	correct typo.

	* IMSvrArg.cpp (IMSvrArg::IMSvrArg::initialize):
	add -udsfile option to specify unix domain socket file name.
	add -vardir option.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::parse_listen_tcp_node):
	changed to do nothing when -udsfile option is specified.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::parse_listen_unix_node):
	changed to do nothing when -udsfile option is specified.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::configure):
	modified for -udsfile option.

	* IMUtil.cpp (IMSocketAddress::setup_unix):
	modified for -udsfile option.

	* IMSvrCfg.hh (class IMSvrCfg)
	add VARDIR and UDSFILE.

2005-03-25  Akira TAGOH  <tagoh@redhat.com>

	* IIIMP_hotkey_profile.cpp (IIIMP_hotkey_profile::add_default_hotkey_profiles):
	add the hotkeys to cycle switching LE.

	* IIIMP_hotkey.hh (IIIMP_hotkey::set_current_lang_id): new method.
	(IIIMP_hotkey::get_current_lang_id): new method.

	* IIIMP_hotkey.cpp (IIIMP_hotkey::process_hostkey): add the hotkeys to
	cycle switching LE.
	(IIIMP_hotkey::do_cycle_lang_selection): new method.

	* IIIMP_hotkey_profile.hh (IIIMP_hotkey_profile::get_default_hotkey_cycle_lang_switch_id):
	new method.
	(IIIMP_hotkey_profile::get_default_hotkey_reverse_cycle_lang_switch_id):
	new method.

2005-03-21  Akira TAGOH  <tagoh@redhat.com>

	* IMUtil.cpp (LEDirectoryInfo::refresh): also support the old-style LE
	loading for the backward compatibility. it's still useful
	when the server is running with -ifpath_name.

	* LEMgr.cpp (LEMgr::choose_LE): fixed the comparison of the path
	against the directory structure change.
	Also, look at ple to check if it found the requested LE.

	* letools.c (lang_list_free): fixed a segfault.

2005-03-20  Akira TAGOH  <tagoh@redhat.com>

	* Makefile.am (iiimutilsincludedir): Use $(includedir)/iiim.
	clean up.

2005-03-18  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* LEMgr.cpp: use LEDirectoryInfo.
	* IMUtil.cpp:
	(LEDirectoryInfo::addfile): added.
	(LEDirectoryInfo::refresh): added.
	* IMUtil.hh: (class LEDirectoryInfo): added.

2005-03-18  Motonobu Ichimura  <famao@openi18n.org>

	* IMBasicObject.hh: add operator!= for IMLang. it
	is needed for older g++.

	* IIIMP_ICState.hh:
	(IIIMP_ICState::xics): removed.
	(IIIMP_ICState::get_instance): removed.

	* IIIMP_IMState.hh:
	(IIIMP_IMState_Identified::get_instance): removed.
	(IIIMP_IMState_Identified::ims_id): removed

	* LEMgr.cpp:
	(LEMgr::choose_LE): don't pass UTFCHAR* to LOG_DEBUG.

2005-03-18  Motonobu Ichimura  <famao@openi18n.org>

	* IMSvr.hh:
	(IMSvr::config_conversionkeys): removed.
	(IMSvr::pkeyparser): removed.
	(IMSvr::addrvec) : removed.
	(IMSvr::get_conversionkeys): modified to 
	create IMKeySpecList on demand.

	* IMSvrArg.cpp:
	(IMSvrArg::configure): don't call
	IMSvr::config_conversionkeys.

	* IMKeyUtil.hh, IMKeyUtil.cpp:
	(IMKeyParse::parse_key): fix memory leak.

	* IMConnection.cpp:
	(IMConnection::get_triggerkeys): modified to use
	new IMSvr::get_conversionkeys.

	* IMLEXMLConf.cpp:
	(IMLEXMLConf::parse_key_node): ditto.

2005-03-18  Motonobu Ichimura  <famao@openi18n.org>

	* LEMgr.cpp:
	(LEMgr::listup_LEs): create sunim_default_lebase
	whether other les are found or not.

	* IMUtil.cpp:
	(DirectoryInfo::refresh): reverted. filtering so name
	isn't this function's work area.

2005-03-18  Motonobu Ichimura  <famao@openi18n.org>

	* IIIMP_hotkey_profile.hh:
	* IIIMP_hotkey_profile.cpp:
	* IMHotkeyPrimitive.hh:
	* IIIMP_hotkey.cpp:
	remove const_cast.

2005-03-17  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_ICState.cpp: path name changes.
	* IMDesktop.cpp: path name changes.
	* IMDesktop.hh: path name changes.
	* IMSvrArg.cpp: path name changes.
	* IMSvrCfg.cpp: path name changes.
	* IMSvrXMLConf.cpp: path name changes.
	* IMUser.hh: path name changes.
	* IMUtil.cpp: path name changes.
	* LE.cpp: path name changes.
	* Makefile.am: path name changes.
	* le.xml.conf: path name changes.
	* segvlogger.c: path name changes.
	* watchdog.c: path name changes.

2005-03-17  Motonobu Ichimura  <famao@openi18n.org>

	* LE.cpp:
	(LEBase::LEBase): initialize iml_if, iml_if_context,
	iml_if_context_ref_count in the case of sunim_default.
	(LEBase::remove_lecontext): call if_CloseIF with True as a second
	argument to call LE's if_CloseIF function.

2005-03-17  Motonobu Ichimura  <famao@openi18n.org>

	* LEMgr.cpp:
	(LEMgr::~LEMgr): delete psunim_default_lebase.

	* IMBasicObject.cpp, IMBasicObject.hh:
	(IMLangPredicate): removed. 

	* LE.cpp:
	(LEBase::closeif): call if_CloseIF with True(as second argument) to
	call LE's if_CloseIF function.

2005-03-17  Motonobu Ichimura  <famao@openi18n.org>

	* IIIMP_ICState.cpp IIIMP_IMState.cpp 
	IIIMP_hotkey_profile.cpp IMBasicObject.cpp IMInputContext.cpp LE.cpp LEMgr.cpp
	ICHandler.hh IIIMP_ICState.hh IIIMP_IMState.hh IIIMP_hotkey_profile.hh IMBasicObject.hh
	IMHotkeyPrimitive.hh IMInputContext.hh IMKeyUtils.hh: 
	use reference when we can use it.

2005-03-16  Motonobu Ichimura  <famao@openi18n.org>

	* IMSvr.cpp:
	(IMSvr::start): move main loop from IMScheduler_MTPC.

	(IMSvr::signal_flag): added.
	(IMSvr::teminate, IMSvr::reload): 
	modify signal-handling code to work correctly.

	* IMSignal.hh, IMSignal.cpp: ditto.

	* IMSchedule.hh:
	(IMScheduler::set_improtocol): removed.
	(IMScheduler::send_request): removed.
	(IMScheduler::pimp): removed.
	(IMScheduler::start): requires IMAccept, IMProtocol, IMState as args.

	* IMScheduler_MTPC.hh, IMScheduler_MTPC.cpp: ditto.

	* IMLog.cpp:
	(IMLog::voutput): clear buffer before using it.

2005-03-16  Motonobu Ichimura  <famao@openi18n.org>

	* IMSvr.hh, IMSvr.cpp:
	(IMSvr::imclist): removed.
	(IMSvr::remove_imconnectionlist): removed

	* IMConnection.hh, IMConnection.cpp:
	(IMConnection::iclist): removed
	(IMConnection::remove_inputcontext): removed

	* IMState.cpp:
	(IMState::~IMState): destroy imhandler

2005-03-16  Akira TAGOH  <at@gclab.org>

	* lexmlconf.cpp: implemented some functions for no-regressions.

	* letools.c: rewriten in C.
	NOTE: default behavior has been changed. it works for the user-based
	le.xml.conf by default. if you want to run iiimf-le-tools to change
	the system-wide configuration, please add -g option then.

	* letools.cpp, IMXMLUtil.cpp, IMXMLUtil.hh: removed.

2005-03-12  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IMAuth.cpp: include <sys/types.h>
	* watchdog.c (main): always use setsid()

2005-03-11  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IMTLS.cpp: include "pthread.h"

	* IIIMP_hotkey_profile.cpp: include "IMKeyUtils.hh".

2005-03-10  Akira TAGOH  <tagoh@redhat.com>

	* Makefile.am (iiimutilsincludedir): use IM_INCLUDEDIR instead of.

	* lexmlconf.cpp, lexmlconf.h: added new files.

	* Makefile.am: added a rule for libiiimutils.so which contains the LE
	xml configuration stuff. any applications can accesses to le.xml.conf
	with this library then.

	* letools.cpp: modified a bit to access the LE xml configuration from
	a shared library. *NOTE* it still needs some work. it doesn't work
	correctly ATM then. will be done soon.

	* IMUtil.cpp, IMUtil.hh: moved IMKeyParser class into IMKeyUtils.cpp.

	* IMBasicObject.cpp, IMBasicObject.hh: moved IMKeySpec class into
	IMKeyUtils.cpp.

	* IMKeyUtils.cpp, IMKeyUtils.hh: new files, including IMKeySpec and
	IMKeyParser class to make a shared library.

2005-03-08  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* iwrap.c: 
	fix my stupid uid = geteuid() for sun and _APPLE. Instead,
	use getpwnam(char *user) to get passwd info from the user
	name. This seems working on Solaris 10 where neither
	HAVE_GETPEEREID	nor SO_PEERCRED are set. I'll test this on Darwin
	later.
	
	Also, do defined(HAVE_GETPWNAM), instead of defined(sun)

2005-03-07  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IIIMP_hotkey_profile.hh : 
	* LEMgr.cpp: 
	fixed compile errors with native C++ compiler on Solaris
	
2005-02-28  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* segvlogger.c: include <limits.h> for PATH_MAX

	* IMSignal.cpp: include sys/wait.h instead of wait.h for MacOSX

	* iwrap.c: 
	  do 
	   #elif defined (__APPLE) || defined (sun)
	     uid = geteuid();
	  for Solaris and MacOSX - just make compiler silent for now, will
	  do run-time testing of unix-domain later

	* IMState.hh (class IMState): bool set_register_hotkey_flag() ->
	void set_register_hotkey_flag()

	* LEMgr.cpp: char fname[j->size()+1] -> char *fname = new char[j->size() + 1]

2005-01-26  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IIIMP_hotkey_profile.cpp (add_default_hotkey_profiles):
	added Alt+Kanji as a toggle key.

2005-01-14  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

	* LEMgr.cpp (LEMgr::listup_LEs):
	avoid crash when hkm point to NULL.

2004-12-22  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IIIMP_hotkey_profile.cpp (add_default_hotkey_profiles):
	add Kanji key (and Hanja as well) in trigger keys

2004-12-22  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

	* IIIMP_hotkey_profile.cpp (init_hotkey_profile_list):
	avoid crash when hkps point to NULL.

2004-12-21  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IIIMP_ICState.cpp (create_langimlist): 
	* LE.cpp:
	* IIIMP_hotkey.cpp: 
	* IIIMP_hotkey.hh (class LangIM):
	* IMBasicObject.cpp: 
	* IMBasicObject.hh (class IMDescriptor):
	* IMConnection.cpp
	* IIIMP_hotkey_profile.hh
	* LEMgr.cpp
	* LEMgr.hh
	* IIIMP_IMState.cpp
	* LE.hh
	* IMHandler.hh
	use IMHotkeyProfileList only in IMState layer

2004-12-21  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

	* keysym.h:
	correction of key code of Zenkaku_Hankaku key.

2004-12-18  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* LE.cpp
	* LE.hh
	* LEMgr.cpp
	* IMConnection.cpp
	* IMHandler.hh
	* IMState.hh
	* IMState.cpp
	* IIIMP_IMState.cpp
	* IIIMP_hotkey.cpp
	* LEMgr.hh
	* IMConnection.hh
	* IIIMP_hotkey.hh
	* IIIMP_hotkey_profile.hh
	* IIIMP_hotkey_profile.cpp
	change hotkey code implementaion
	  - class name changed : Hotkey -> IMHotkey, HotkeyList -> IMHotkeyList
	  - remove iml_hotkey_manager_t
	  - hotkey_id and profile_id are members of IMHotkey and 
	    IMHotkeyProfileclass classes (respectively)
	  - And code cleanup
	* IMHotkey.hh: new file
	* IMHotkeyPrimitive.hh: new file 

2004-12-07  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

	* basictype.hh (UTFCHAR_char_traits::compare):
	Fixed the bug of memory comparison.
	This bug pulls up the identification mistake of the user.

2004-11-28  Sriram Swaminathan <sriram.swaminathan@sun.com>
	* LE.cpp
	
	Fixed the server crash problem while desktop is getting closed.

2004-11-24  Hidetoshi Tajima  <tajima@red.iplanet.com>

	* IMState.hh, IIIMP_IMState.cpp: fix run-time crash at register
	hotkeys in IM_CREATEIC.
	* IIIMP_hotkey_profile.cpp: add 'fix me' kinda comment for ja only
	shift+space hack.

2004-11-24  Makoto Fujiyoshi <makoto_fujiyoshi@justsystem.co.jp>

	* IIIMP_IMState.hh: fix build failures on Red Hat Linux 9.

2004-11-23  Sriram Swaminathan <sriram.swaminathan@sun.com>
	* IIIMP_hotkey_profile.hh
	* IIIMP_IMState.hh
	* IIIMP_IMState.cpp
	* IIIMP_hotkey_profile.cpp

        Except for Client applications running in Japanese locales, <Shift>space
        won't be the TRIGGER_KEY.

2004-11-10  Akira TAGOH  <tagoh@redhat.com>

	* segvlogger.c (main): check IIIMF_DEBUG environment variable to
	disable crash dump feature. when IIIMF_DEBUG is set and htt_server
	crashes, iiimf-segv-logger will gets stuck. you can run gdb manually
	then.

2004-11-05  Akira TAGOH  <tagoh@redhat.com>

	* IMInputContext.hh
	* IMLEXMLConf.cpp
	* IIIMP_ICState.cpp
	* IMXMLUtil.cpp
	* IMBasicObject.cpp
	* LEMgr.cpp
	* IMState.cpp
	* IMUserMgr.cpp
	* IMSvrXMLConf.cpp
	* IIIMP_hotkey.cpp
	* basictype.hh
	* IMUtil.cpp
	* IIIMPUtil.cpp
	* IMTLS.hh
	* IMUtil.hh
	* IMTLS.cpp
	* ICState.cpp
	* IIIMP_IMState.cpp
	* IMAuth.hh
	* IMLog.cpp
	* IIIMP_hotkey_profile.cpp
	* IIIMPTrans.cpp
	* letools.cpp: clean up to silence the compiler warnings.

2004-11-02  Sriram Swaminathan <sriram.swaminathan@sun.com>

	* IIIMP_ICState.cpp
	* IIIMP_ICState.hh
	* ICState.cpp
	* ICState.hh
 
	Since protocols are going to be introduced for OPEN, READ, WRITE
        separately, IM_READ_NS is renamed as IM_NS_LISTENER which will be
        specific to listener functionality
        
2004-10-22  Akira TAGOH  <tagoh@redhat.com>

	* IMSignal.cpp (IMSignal::_segv): clear string before getting another
	string.

2004-10-15  Akira TAGOH  <tagoh@redhat.com>

	* segvlogger.c (main): output the signal number to logs.

	* IMSignal.cpp (IMSignal::abrt): new method to determine the signal
	number.
	(IMSignal::trap): likewise.
	(IMSignal::fpe): likewise.
	(IMSignal::bus): likewise.
	(IMSignal::_segv): moved from segv().
	improved the message.

2004-10-15  Makoto Fujiyoshi <makoto_fujiyoshi@justsystem.co.jp>

	* IMSignal.cpp: add unistd.h for getpid(), or build fails
	on Red Hat Linux release 9.

2004-10-15  Akira TAGOH  <tagoh@redhat.com>

	* IMUtil.cpp (IMSocketAddress::setup_unix): fixed failing to create
	a unix domain socket.

	* Makefile.am: changed the name to iiimf-segv-logger and the install
	path under $(libexecdir). since iiimf-segv-logger won't work from
	the command line say.

	* IMSignal.cpp (IMSignal::segv): fixed to be changable for even the filename.

	* gdbcmd: the command list for gdb.

	* segvlogger.c: new program to store the backtrace log to the file.

	* Makefile.am: clean up and added segvlogger.

	* IMSignal.cpp (IMSignal::segv): new method to take care of SIGSEGV
	etc.
	(IMSignal::IMSignal): added the signal handler for SIGSEGV, SIGABRT,
	SIGTRAP, SIGFPE and SIGBUS.

2004-10-14  Akira TAGOH  <tagoh@redhat.com>

	* watchdog.c (main): fixed the handling of options.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::load): use xmlParseFile instead of
	xmlReadFile.
	* IMLEXMLConf.cpp (IMLEXMLConf::load): likewise.

2004-10-13  Akira TAGOH  <tagoh@redhat.com>

	* watchdog.c (main): added --help option for htt.
	(main): also, fixed the infinite loop when htt gives the wrong option
	to htt_server.
	(main): decrease the retry conter when htt gets the signals from
	htt_server.

	* Makefile.am (INCLUDES): added -DSOCKETDIR.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::parse_listen_unix_node): stop using
	the hardcoded path.
	(IMSvrXMLConf::configure): likewise.

	* IMLEXMLConf.cpp (IMLEXMLConf::load): use xmlReadFile if it's not
	available.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::load): likewise.

2004-10-04  Akira TAGOH  <tagoh@redhat.com>

	* IMSvrXMLConf.cpp (IMSvrXMLConf::configure): disabled the tcp
	connection by default to be more secure. please modify htt.xml.conf
	if you want to allow the tcp connection.

	* Makefile.am (socketdir): added to ensure making the directory when
	it's installing.

	* IMSvrXMLConf.cpp (IMSvrXMLConf::parse_listen_unix_node):
	use /var/run/iiim for the unix domain socket directory instead of /tmp.
	to get working on SELinux.
	(IMSvrXMLConf::configure): likewise.

	* letools.cpp: new tool to add/delete the LEs to/from
	the LE configuration file.

	* IMSvrXMLConf.cpp, IMSvrXMLConf.hh: new class to take care of
	the server xml configuration file.

	* le.xml.conf: sample xml configuration file for LE.

	* IMSvrCfgFile.cpp, IMSvrCfgFile.hh: removed. it's no longer used.

	* IMLEXMLConf.cpp, IMLEXMLConf.hh: new class to take care of the LE xml
	configuration file.

	* IMXMLUtil.cpp, IMXMLUtil.hh: new class to modify the LE xml
	configuration file.

	* Makefile.am (libiiimsf_la_SOURCES): create the static library so that
	htt_server and iiimf-le-tools needs the same source code to build.
	(sbindir, bindir): removed. don't override it here. if it's needed,
	it should be done in the option for configure script.
	(sbin_PROGRAMS): moved htt_server and htt from bin_PROGRAMS.

	* IMUtil.hh (IMKeyParser): added new method, genereate_key.

	* IMSvrArg.hh (IMSvrArg): use IMSvrXMLConf and IMLEXMLConf class
	instead of IMSvrCfgFile class.

	* IMUtil.cpp (IMKeyParser::generate_key): new method to generate
	the key string from IMKeySpec.

	* LEMgr.cpp (LEMgr::reload): reload the xml configuration too.
	(LEMgr::choose_LE): load the requested LE by priority in le.xml.conf.
	if the requested LE was not found, try to find the LE by
	the traditional way, the alphabetical order.
	(LEMgr::LEMgr): added another constructor for the xml configuration.

	* IMSvr.cpp (IMSvr::config_le): new method.

	* IMSvrArg.cpp (IMSvrArg::configure): create the instance of
	IMSvrXMLConf class instead of IMSvrCfgFile class.

	* IMSvrCfg.cpp (IMSvrCfg::initialize): use XMLCONFDIR instead of
	the hardcoded path.

	* IMSvr.hh (IMSvr): added config_le method for the xml configuration.

2004-09-08  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* iwrap.c: 
	- include <sys/socket.h> for SO_PEERCRED
	- add #error to cause compile error when neither HAVE_GETPEERED nor
	SO_PEERCRED are found.

2004-08-26  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_hotkey.cpp

  - Added more keyboard shortcuts to navigate through the 
    "Language Selection Window" (like arrow keys, page-up,
     page-down, space + enter)

  - Added a small status field in the title of the "Language
    Selection Window" which will show : 
        "[current selected IM / Total number of IMs]"

2004-08-26  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_ICState.cpp
  * IIIMP_hotkey.cpp
  * IIIMP_hotkey.hh

  - Fix to avoid crash when focussing out of an application
    when "Language Selection Window" is ON.

2004-08-26  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_ICState.cpp
  * IIIMP_hotkey.cpp

  - Problem of Status window not getting updated when switching
    languages from "Language Selection Window" is fixed.

2004-08-23  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_ICState.cpp
  * IIIMP_hotkey.cpp

  - Problem of having the event forwarding always ON even if you
  do CONVERSION_OFF is fixed
  - Status window update is also done with this fix

2004-08-25  Motonobu Ichimura <famao@openi18n.org>

        * iwrap.c (authenicated_with_unix): fix a "root user always denied
        access" bug.

2004-08-23  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_ICState.cpp
  * IIIMP_hotkey_profile.hh
  * IIIMP_IMState.hh
  * IIIMP_hotkey.cpp
  * IIIMP_IMState.cpp
  * IIIMP_hotkey_profile.cpp

  - Implemented the IM_SELECT_HOTKEY_PROFILE protocol to 
    switch profiles from the server.

2004-08-18  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_hotkey.cpp
  * IIIMP_IMState.cpp
  * IIIMP_hotkey.hh

  - Problem of Language Selection window not getting closed
    when the hotkey is pressed twice is fixed.
  - Code cleanup

2004-08-18  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * ICState.hh
  * IIIMP_hotkey.cpp
  * IIIMP_hotkey.hh
  * IIIMP_hotkey_profile.cpp
  * IIIMP_hotkey_profile.hh
  * IIIMP_ICState.hh
  * IIIMP_IMState.cpp
  * IIIMP_IMState.hh
  * IMState.hh
  * Makefile.am

  - Implemented the HotkeyProfile class
  - Code cleanup

2004-08-11  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_hotkey.cpp

  While creating the candidate list for drawing the Language Selection
  Window, check if HRN is valid. If HRN is NULL then use the IMName.

2004-08-11  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_hotkey.cpp
  * IIIMP_IMState.cpp

  Fixed typo

2004-08-11  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * IIIMP_hotkey.cpp
  * IIIMP_hotkey.hh

  Added iiimp_hotkey_state_notify() in server to notify the client
  to change its current state to 'FORWARDING ON' or 'FORWARDING OFF'

2004-08-11  Akira TAGOH  <tagoh@redhat.com>

	* IMBasicObject.cpp(IMObjectMgr::add): use LOG_CRITICAL for seriously
	  failed message in order to notify it to syslog and to find it out
	  easily for people.
	* LEMgr.cpp(LEMgr::listup_LEs): likewise.
	* IMUtil.cpp(IMSocketAddress::create_sockets): likewise.
	* IIIMProtocol.cpp(IIIMProtocol::accept): likewise.
	* IMLog.hh: extended IMLOG_DEFINE_FUNC to make a function to enforce
	  to output the message to syslog.
	  created LOG_CRITICAL function to output the message as IMLog::ERROR
	  level to both of stderr and syslog.
	* watchdog.c(zalloc): use syslog(3) instead of perror(3).
	(is_load_or_cpu_low): likewise.
	(main): likewise. and added new command line option -retryonerror to
	  specify the number of times for retry when starting htt_server was
	  failed.

2004-07-21  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	fix build failures on Solaris
	
	* IMSvrCfg.cpp: check for non-posix getpwuid_r
	* iwrap.c : check for non-posix getpwuid_r
	* IMUtil.cpp (setup_unix): s/sun/sun_addr
	* IIIMP_hotkey.hh (class IIIMP_hotkey):
	set_hotkey_mode and set_lang_selection don't take return value

2004-07-14  Motonobu Ichimura <famao@openi18n.org>

        * IMSvrCfgFile.cpp: fix a bug when listenaddress is
        not empty, htt_server does crash.

2004-07-13  Motonobu Ichimura <famao@openi18n.org>

        * IMSvrArg.cpp, IMSvrCfgFile.cpp:  bugfix.

2004-07-12  Motonobu Ichimura <famao@openi18n.org>

        * IMSvrCfg.cpp, IMSvrCfg.hh
        (IMSvrCfg::get_process_user)
        (IMSvrCfg::get_home_dir): new function.

        * IMUtil.cpp: use delete[] instead of free

        * IMSvrArg.cpp: 

        if -user option is set, use ~/.iiim/htt.conf as a configuration file.
        bugfix.

        * IMSvrCfgFile.cpp:

        remove unneeded messages.

        (IMSvrCfgFile::add_ssl_listen_file)
        (IMSvrCfgFile::add_listen_file): use IMSvrCfg::get_process_user
        to get a user name.

2004-07-12  Motonobu Ichimura <famao@openi18n.org>

        * IMSvrCfgFile.cpp, IMSvrCfgFile.hh:

        (IMSvrCfgFile::add_ssl_listen_file)
        (IMSvrCfgFile::add_ssl_listen_address)
        (IMSvrCfgFile::add_certificate_file)
        (IMSvrCfgFile::add_certificate_keyfile)
        (IMSvrCfgFile::add_cacertificate_file)
        (IMSvrCfgFile::add_cacertificate_path)
        (IMSvrCfgFile::set_verify_client)
        (IMSvrCfgFile::set_verify_depth) :  new function.

        * IMTLS.cpp, IMTLS.hh: added

        * IMUtil.hh: 

        add IMSocketAddress::ADDRESS_TYPE.
        add IMSocket::trans_type.
        move IMSocketTrans(int fd) to a public function.
        move IMSocketTrans::recv,send to a virtual function.


2004-06-23  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IMSvrCfgFile.cpp: add unistd.h for geteuid, or build fails
	on JDS.

2004-06-19  Motonobu Ichimura <famao@openi18n.org>

	* IMSvrCfgFile.cpp, IMSvrCfgFile.hh
	* IMUserMgr.cpp, IMUserMgr.hh:
	* IMUtil.hh, IMUtil.cpp:
	* iwap.h, iwap.c:
	* IMAuth.cpp, IMAuth.hh:
	* IMSvrCfg.hh, IMSvrCfg.cpp:
	* IMSvrArg.cpp:
	add unix domain support.
	add -user option.

2004-06-17  Motonobu Ichimura <famao@openi18n.org>

	* IMSignal.hh, IMSignal.cpp:
	use RETSIGTYPE

2004-06-16  Motonobu Ichimura <famao@openi18n.org>

	* IMSvr.cpp,IMSvr.hh:
	* LEMgr.cpp, LEMgr.hh:
	* LE.hh, LE.cpp:
	reloading LEs when IIIMSF receives SIGHUP signal.
	
2004-05-03  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IIIMP_ICState.cpp:
	- aux_getvalues(): use IMAuxGetEvent, instead of IMAuxEvet.

	- scope of auxnamev, intvalv, imtextvec should be same as aux_draw - 
	fixed.

	- FIXME: The pilist and pstrh must be freed, but freeing them will
	cause htt_server to freeze. We'll need to fix this memory leak.

2004-04-30  Motonobu Ichimura  <famao@momonga-linux.org>

	* IMBasicObject.cpp (IMLangMatchPredicate::IMLangMatchPredicate):
	add some locales

2004-04-22  Motonobu Ichimura  <famao@openi18n.org>

	* IMUtil.cpp (IMSocketTrans::accept): fix a bug if the system
	only supports the select(2) function.

2004-03-30  Hidetoshi Tajima  <tajima@SFBay.Sun.COM>

	* IIIMP_ICState.cpp: use IM_EventAuxSet(=4) and IM_EventAuxGet(=5)
	to distinguish aux request events by event->type.

2004-03-29  Hidetoshi Tajima  <tajima@SFBay.Sun.COM>

	* IIIMP_ICState.hh, IIIMP_ICState.cpp: added aux_getvalues()

2004-02-13  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* IMDesktop.cpp, IMDesktop.hh:
	make one IMDesktop for the same user on the same host and
	display.

2003-12-02  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* LE.cpp, LE.hh:
	  Change lifecycles of session contexts and interface module.
	 - open session contexts per single interface module.
	 - close interface module when the last lecontext is destroyed.
	  Added:
	    typedef list<LEContext*> LEContextList;
	    LEBase::remove_lecontext().
	    iml_if_t *iml_if_context
	    int iml_if_context_ref_count;

2003-11-19  Motonobu Ichimura  <famao@momonga-linux.org>

	* LE.cpp (LEBase::LEBase): fix a missing initialization for iml_if.
	patch from Yu Shao <yshao@redhat.com>


2003-09-03  MIYASHITA Hisashi  <himi@li18nux.org>

	* LE.cpp (LEContext::initialize): Call get_le_context_args() on
	the input context for args before calling set_values().

	* IMInputContext.hh (class IMInputContext):
	Added a new member function, get_le_context_args()

	* IMInputContext.cpp: Include IMLog.hh.
	(IMInputContext::get_current_lecontext): When failing to create LEContext,
	output an error.
	(IMInputContext::get_lecontext_args): New function.
	(IMInputContext::send_event): If failing to get the
	current context, return false immediately.
	(IMInputContext::toggle_conversion): Likewise.
	(IMInputContext::reset): Likewise.
	(IMInputContext::toggle_focus): Likewise.

	* IIIMPUtil.cpp
	(convert_iiimp_icattr<IIIMP_ICATTRIBUTE_CHARACTER_SUBSETS>):
	Set IMCharSubsets of icattr.

	* Makefile.am (htt_server_SOURCES): Added ICHandler.cpp.

	* ICHandler.cpp: New file.

	* ICHandler.hh (class IMCharSubsets): Implemented.

2003-08-23  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMDesktop.cpp (unknown_display_name): New const. string.
	(create_iml_desktop): When it fails to find an appropriate
	display name, set unknown_display_name instead.
	(create_iml_desktop): Pass LEBase's iml_if to new_user().

	* IMDesktop.hh (IMDesktop::iml_desktop): Removed.
	It has been never used.

2003-08-11  MIYASHITA Hisashi  <himi@li18nux.org>

	* LE.cpp (initialize): Before using args for get_lecontext_args(),
	do args.clear().
	(iml_execute_iml_wrapper): If DEBUG is defined, output the issuing
	IML instructions.

2003-08-09  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMAuth.cpp (IMAuth::set_fd_from): Instead of name, I defined ss as
	struct sockaddr_storage, and also defined pname as struct sockaddr_storage*
	to point ss, and apply pname to getnameinfo and getaddrinfo.
	(IMAuth::set_fd_from): Don't specify NI_NAMEREQD to resolve the address
	of fd.
	(IMAuth::set_fd_from): Use pst->ai_addrlen when applying pst->ai_addr to
	getnameinfo().

2003-07-30  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMAuth.cpp (IMAuth::set_fd_from): Define from_address2
	as an array.  And allocate from_address before setting an
	address to it.

	* IIIMPUtil.cpp (convert_IMText_to_iiimp_text): When
	pimtext is NULL, create an empty IMText.

	* IMAuth.cpp (IMAuth::addr6_element_to_number): Made it
	adapt to the zero compression format.
	(IMAuth::store_addr6_pattern): Likewise, and check the format
	strictly.
	(IMAuth::set_fd_from): Deal with the case of AF_INET6.

2003-07-26  MIYASHITA Hisashi  <himi@li18nux.org>

	* IIIMProtocol.cpp (IIIMProtocol::restart): Call
	pimls->listen() in this method.
	(IIIMProtocol::accept): Don't call pimls->listen()
	in this method.
	(IIIMProtocol::set_server_listen_address): Made it
	take IMSocketAddressVec& and pass it to restart().

	* IMUtil.hh (class IMSocketAddress): New class.
	(IMSocket::LISTEN_MODE): Removed.
	(class IMSocket): Inhibit duplication.
	(IMSocket::IMSocket): Made it take a file descriptor.
	(IMSocketListen::sockvec): Renamed from endvec.
	(IMSocketListen::listen): Made it take
	IMSocketAddressVec&.
	(IMSocketListen::IMSocketListen): Made it take
	no argument.

	* IMUtil.cpp (IMSocket::get_addrinfo): Removed.
	Defined the equivalent functionality in
	IMSocketAddressVec::get_addrinfo.
	(IMSocketAddress::get_addrinfo): New function.
	(IMSocketAddress::bind_fail): New function.
	(IMSocketAddress::configure_socket): Ditto.
	(IMSocketAddress::setup_inet): Ditto.
	(IMSocketAddress::setup_unix): Ditto.
	(IMSocketAddress::create_sockets): Ditto.
	(IMSocketAddress::~IMSocketAddress): New destructor.
	(IMSocketAddress::IMSocketAddress): New constructor.
	(IMSocket::do_listen): Set status to OPEN if succeed.
	(IMSocket::IMSocket): Made it takes a file descriptor.
	(IMSocket::~IMSocket): Made it not do freeaddrinfo().
	(IMSocketListen::listen): Before actually listening sockets,
	initialize sockvec.
	(IMSocketListen::accept): Use sockvec instead of endvec.
	(IMSocketListen::~IMSocketListen): do delete_all to sockvec.

	* IMSvrArg.cpp (IMSvrArg::configure): Made it use
	IMSocketAddressVec to specify addresses.

	* IIIMProtocol.hh (IIIMProtocol::endvec): Removed.
	(IIIMProtocol::restart): Made it take IMSocketAddressVec&.
	(IIIMProtocol::set_server_listen_address): Ditto.

	* IMSvrCfgFile.cpp (IMSvrCfgFile::add_listen_address):
	Renamed from listenendvec to listenaddrvec.
	(IMSvrCfgFile::configure): Ditto.

	* IMSvr.hh (IMSvr::addrvec): new member.
	(IMSvr::config_listenaddress): Made it take
	IMSocketAddressVec&.

	* IMSvr.cpp (IMSvr::config_listenaddress): Made it take
	IMSocketAddressVec&.

2003-06-24  MIYASHITA Hisashi  <himi@li18nux.org>

	* IIIMP_IMState.cpp (create_input_method_descriptors):
	Adopted imname as an "idname", and an empty string
	as a reverse domain name for
	iiimp_inputmethod_descriptor_new().

2003-06-21  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMBasicObject.hh (IMDescriptor::get_languages): New member
	function.

	* IIIMP_IMState.hh
	(IIIMP_IMState_Identified::create_language_list)
	(IIIMP_IMState_Identified::create_input_method_descriptors):
	New member functions.

	* IIIMP_IMState.cpp (IIIMP_IMState::create_language_list)
	(IIIMP_IMState::create_input_method_descriptors):
	New functions.
	(IIIMP_IMState::set_data_to_client): When the protocol version is
	not less than 3, send input method descriptors in IM_SETIMVALUES
	as well.

2003-06-21  MIYASHITA Hisashi  <himi@li18nux.org>

	* IIIMP_IMState.cpp (IIIMP_IMState::send_protocol_version):
	New function.
	(IIIMP_IMState::message_proc): Call send_protocol_version(),
	and pass proto_version to the constructor of
	IIIMP_IMState_Identified.
	(IIIMP_IMState::IIIMP_IMState): Added a new argument,
	"proto_version".  Just only pass it to IMState().
	(IIIMP_IMState_Identified::IIIMP_IMState_Identified):
	Likewise, but pass it to IIIMP_IMState().


	* IMState.hh (IMState::protocol_version): New member variable.
	(IMState::get_current_protocol_version): New member function.
	(IMState::check_protocol_version): Ditto.
	(IMState::IMState): Added a new argument, "x_protocol_version".

	* ICState.hh (ICState::check_protocol_version): New member
	function.

	* IIIMP_IMState.hh (IIIMP_IMState::send_protocol_version):
	New decl.
	(IIIMP_IMState::IIIMP_IMState): Added a new argument,
	"proto_version".
	(IIIMP_IMState_Identified::IIIMP_IMState_Identified): New
	constructor.

2003-06-17  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMState.cpp (IMState::new_ic_id): Made ic_id start
	from 1, not 0.

	* LE.cpp (LEBase::loadif): When iml_if->ifpath_name,
	iml_if->if_version, or iml_if->locale is NULL, print
	"(NULL)" for each of them as a debugging message.

2003-06-12  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (htt_server_LDADD): Add $(SOCKET_LIBS).

	* IMSvrCfgFile.hh
	(IMSvrCfgFile::DirArgs, IMSvrCfgFile::DirHandler):
	Made them public.

	* IMLog.hh (IMLog::cleanup):
	Defined it as void.

	* iwrap.c: Included stdlib.h.
	(authenticate_with_pam): When assigning cv.appdata_ptr,
	cast password to (void*).

	* IMLog.cpp (IMLog::output): Define the second argument as
	"lvl" because "lv" hides the instance variable.
	(IMLog::output): When LOG_AUTHPRIV is not defined, use
	LOG_AUTH instead.

	* IMInputContext.cpp
	(IMInputContext::switch_lecontext): Return false.

	* IMScheduler_MTPC.cpp (IMScheduler_MTPC::construct):
	Return pimsch.

	* IMState.hh (IMState::ICStateMap): Made it public.
	(IMState::deliver): Return the value of message_proc.

	* ICState.hh (ICState::mark_terminal): return true.

	* IIIMProtocol.cpp
	(IIIMProtocol::set_server_listen_address):
	Return the value of restart().

	* basictype.hh (Functor_deleteobject::operator):
	Return true.
	(Functor_destroyobject::operator):
	Ditto.

	* IMSignal.hh: Define IMSignalHandlerMap as
	map<int, IMSignal_handler> because, in SunONE compiler,
	declarations of map::insert conflicts if the key type is
	constant.
	(IMSignal::cleanup): Defined it as void.

	* watchdog.c: Include stdlib.h.

	* IMBasicObject.cpp (get_object_from_fullid): Return the
	value of get_object_from_attribid().

	* LE.cpp (create_lecontext): Rename iml_if to iml_if_ctx
	because iml_if hides the instance variable of LEContext.
	(send_event): Return true.
	(reset): Return true.

2003-06-10  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (htt_server_LDADD): Link htt_server
	with libiml.la, not libiml.a.

2003-05-06  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMSvrArg.cpp (configure): Permit "localhost.localdomain"
	by default as well as "localhost".

	* Makefile.am (htt_server_LDADD): Made it link with libiiimp.la.
	It would result in dynamically linking them.

2003-05-05  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMAuth.cpp: include IMLog.hh.
	(fd_ok, auth_fd): Output messages on authentication.

2003-04-08  MIYASHITA Hisashi  <himi@li18nux.org>

	* watchdog.c (main): Refrain to print the argument list.

2003-03-27  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (bindir): Set it to $(IMBINDIR).

2003-03-26  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (htt_server_SOURCES): Add header files also.

	* watchdog.c (main): Pass -nodaemon option to htt_server.

	* IMSvrArg.cpp (IMSvrArg::initialize): Add "nodaemon" option.
	(IMSvrArg::configure): If NODAEMON option is true, don't
	daemonize the program.

	* IMSvrCfg.cpp (initialize): Initialize NODAEMON as
	a bool flag.
	* IMSvrCfg.hh (IMSvrCfg::IMSvrCfgOpt): Add "NODAEMON"
	option.

2003-03-25  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMSvrCfgFile.cpp (IMSvrCfgFile::initialize):
	Add "ListenAddress" directive.
	(IMSvrCfgFile::add_listen_address): New function.
	(IMSvrCfgFile::configure): When listenendvec is
	configured by add_listen_address, call
	config_listenaddress, and invalidate
	IMSvrCfg::HOSTNAME.

	* IMSvrCfgFile.hh (class IMSvrCfgFile): Introduce
	listenendvec.
	(IMSvrCfgFile::add_listen_address): New function.

	* IMSvrArg.cpp (IMSvrArg::set_argopt): New function.
	(IMSvrArg::configure): Call set_argopt() before and after
	calling configure() of IMSvrCfgFile.  And if IMSvrCfg::HOSTNAME
	has a valid value, call config_listenaddress() here.
	(IMSvrArg::parse_arguments): When the same options are specified
	more than once, raise an error.
	(IMSvrArg::addopt): Use insert method of optmap because operator[]
	requires the default constructor of ArgVal.

	* IMSvrArg.hh (class IMSvrArg): Introduce "ArgVal", and the second
	value of IMSvrArgMap is ArgVal.
	(IMSvrArg::set_argopt): New function.

	* IMSvrCfg.cpp (IMSvrCfg::initialize): Now PORT is configured as
	a string.
	(initbool): Use popts instead of opts.
	(initnum, initstr, setbool, setnum, setstr, get_boolval) 
	(get_numval, get_strval, showall): Ditto.
	(IMSvrCfg::IMSvrCfg): In order to share popts among duplicated objects,
	if the copy constructor is called, set &base to pbase; otherwise,
	set NULL to it.
	(IMSvrCfg::~IMSvrCfg): delete popts if pbase is not NULL.

	* IMSvrCfg.hh: include IMUtil.hh.
	(class IMSvrCfg): Add a new member, pbase.
	(IMSvrCfg::popts): It replaces "opts".
	(IMSvrCfg::get_type, IMSvrCfg::get_description):
	Use popts instead of opts.
	(IMSvrCfg::config_listenaddress): Now it accepts IMSocketVec&
	instead of address and port.
	(IMSvrCfg::IMSvrCfg): Implement its own copy constructor.
	(IMSvrCfg::~IMSvrCfg): Implement a virtual destructor.

	* IMSvr.cpp (IMSvr::config_listenaddress):
	Now it accepts IMSocketVec&.
	(IMSvr::terminate): Call stop() of IMSchduler().

	* IMSvr.hh: include IMUtil.hh.
	(IMSvr::config_listenaddress): Now it accepts IMSocketVec&.
	(IMSvr::terminate): Not define it here.

	* IMScheduler_MTPC.cpp (IMScheduler_MTPC::stop): Currently,
	only return 1.
	(IMScheduler_MTPC::start): Make it return 1 (but usually
	it never returns).

	* IMScheduler_MTPC.hh (class IMScheduler_MTPC):
	Implement stop().

	* IMScheduler.hh (class IMScheduler): Add a new
	pure virtual method, stop().

	* IIIMProtocol.cpp (IIIMProtocol::restart): Create
	IMSocketListen instead of IIMTransListen.
	(IIIMProtocol::accept): Rename "pimtl" to "pimsl".
	And create IIIMPTrans from IMSocketTrans issued
	by "pimsl".
	(IIIMProtocol:set_server_listen_address):
	Now it receives IMSocketVec&.

	* IIIMProtocol.hh (class IIIMProtocol):
	To remember the end point, use IMSocketVec instead of
	"port" and "addr" members.  And use IMSocketListen instead
	of IIIMPTransListen.
	(IIIMProtocol::set_server_listen_address):
	Now it receives IMSocketVec&.

	* IIIMPTrans.cpp (IIIMPTrans::IIIMPTrans): Now it use IMSocketTrans*.
	(IIIMPTrans::~IIIMPTrans): Simply delete pimst.
	(IIIMPTrans_read): Use recv method of IMSocketTrans.
	(IIIMPTrans_write): Use send method of IMSocketTrans.
	(IIIMPTransListen): Removed.

	* IIIMPTrans.hh: Include IMUtil.hh.
	(class IIIMPTrans): Introduce "pimst" instead of "fd".
	And it is instanciated from IMSocketTrans*, not a file
	descriptor.
	(class IIIMPTransListen): Removed.  Use IMSocketListen
	instead.

	* IMUtil.cpp (do_listen, bind_fail, configure_socket) 
	(listen_inet, listen_unix_domain, listen, accept, get_fd) 
	(get_addrinfo, IMSocket::IMSocket, IMSocket::~IMSocket):
	New IMSocket method definitions.
	(send, recv, IMSocketTrans::IMSocketTrans)
	(IMSocketTrans::~IMSocketTrans): New IMSocketTrans method
	definitions.
	(listen, accept, IMSocketListen::IMSocketListen)
	(IMSocketListen::~IMSocketListen): New IMSocketListen method
	definitions.

	* IMUtil.hh: Include sys/types.h for size_t.
	(class IMSocket): New class.
	(class IMSocketTrans): Ditto.
	(class IMSocketListen): Ditto.

2003-03-23  MIYASHITA Hisashi  <himi@li18nux.org>

	* ICState.cpp (IMLExec_ICState::execute): Do
	iml_delete_inst() after executing it.

	* IIIMPTrans.cpp (IIIMPTrans::~IIIMPTrans): Delete pstream
	and pimplibstate.

2003-02-06  MIYASHITA Hisashi  <himi@li18nux.org>

	* ICState.cpp (ICState::deliver): When terminating IC, we don't destroy
	ICState if the current state has pproc_state because it means the
	current state may be waiting for the client response.

2003-01-06  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (htt_server_LDADD): Add $(IM_LIBDIR)/iiimp/libiiimp.la
	instead of ../lib/iiimp/libiiimp.a

2003-01-05  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMUserMgr.cpp: When HAVE_CRYPT_H is defined, include crypt.h
	instead of unistd.h.

2002-12-26  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMSvrCfg.cpp (IMSvrCfg::get_strval): Bug fix.
	opts[opt].type must be ARG_STRING.

2002-12-25  MIYASHITA Hisashi  <himi@li18nux.org>

	* LEMgr.cpp (listup_LEs): Fix the error message.

2002-12-21  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (htt_SOURCES): New variable for htt.
	(bin_PROGRAMS): Add "htt".

	* SharedData.h: Restored from "old" for htt.
	* watchdog.c: Ditto.

2002-11-11  MIYASHITA Hisashi  <himi@li18nux.org>

	* IMState.cpp (new_ic_id): Bug fix.  When it failed to
	allocate new ic-id at the first loop(tid is equal to
	size), this function immediately failed.  Increment tid
	if tid is not already allocated.

2002-11-03  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.in: Updated.

2002-10-28  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.in: Updated.

	* IMSignal.cpp: Include signal.h if HAVE_SIGNAL is defined.
	And include IMSvr.hh.
	(IMSignal::ignore): New function.
	(IMSignal::add): Call ::signal if HAVE_SIGNAL is defined.
	(IMSignal::IMSignal): Ignore SIGPIPE.

	* IMSignal.hh: Don't include IMSvr.hh.  Declare
	class IMSvr instead.  Include basictype.hh.  Don't include
	signal.h.
	(class IMSignal): Canonicalize style.
	(IMSignal::ignore): New member.

	* IMSvr.hh: Include basictype.hh explicitly.

2002-10-11  MIYASHITA Hisashi  <himi@li18nux.org>

	* LE.cpp (LEBase::loadif): If sunim_default is true, filename is
	used as try_lename.  And init. lename and lename_hrn with the
	predefined values.

	* LEMgr.cpp (LEMgr::listup_LEs): When fail to initialize
	psunim_default_lebase, stop the server.

2002-10-04  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.in: Updated.

	* Makefile.am (htt_server_LDADD): Add $(LIBCRYPT_FLAGS)
	and $(LIBWRAP_FLAGS).

	* LE.cpp (LEBase::add_imobjectdesc): When pol is NULL,
	we regard it as an empty object descriptors, thus return
	immediately.

	* IMUserMgr.cpp: Include unistd.h instead of non-standard header
	file crypt.h

2002-09-27  MIYASHITA Hisashi  <himi@li18nux.org>

	* LE.cpp (LEBase::loadif): When iml_if->lename is NULL,
	immediately return false.

	* IMInputContext.cpp (IMInputContext::destroy): Return true.

	* IIIMP_ICState.cpp (IIIMP_ICState::destroy): New overriding function.
	(IIIMP_ICState_REQUESTED::destroyic): When successfully destroying
	ichandler, call	invalidate_ichandler().
	(IIIMP_ICState_REQUESTED::toggle_client_convmode): output debug message.

	* IIIMP_ICState.hh (class IIIMP_ICState): Add void destroy().

	* ICState.hh (class ICState): Add invalidate_ichandler().

	* ICHandler.hh (class ICHandler): Add void destroy().

2002-09-25  MIYASHITA Hisashi  <himi@m17n.org>

	* IIIMP_IMState.cpp (send_trigger_keys):
	Correct the value of ctrl_space.

2002-09-17  MIYASHITA Hisashi  <himi@m17n.org>

	* LE.cpp (initialize): Before calling set_values, bind_imlexec() to
	NULL.

2002-09-09  MIYASHITA Hisashi  <himi@m17n.org>

	* basictype.hh: In this header file, at least, you have to
	put std:: prefix to refer any symbols in std namespace.
	(UTFCHAR_char_traits): Now we independently prepare char_traits
	for u16string, and add `set' method for string_char_traits(note
	that it is not a C++ standard class!).
	(class u16string): explicitly specify UTFCHAR_char_traits as
	char_traits.

2002-09-08  MIYASHITA Hisashi  <himi@m17n.org>

	* LE.hh (class IMDesktop): Declared.
	(LEBase::open_iml_desktop, LEBase::close_iml_desktop): New
	member functions.
	(LEContext::set_IMArg): Removed.
	(LEContext::get_lebase): New member function.

	* LE.cpp (LEBase::open_iml_desktop): New function.
	(LEBase::close_iml_desktop): Likewise.
	(LEBase::LEBase): When the passed option is invalid, raise
	ERROR_INTERNAL().  And don't forget to call loadif().
	(LEContext::set_IMArg): Removed.  This role is moved to IMDesktop.
	(LEContext::initialize): Call get_iml_desktop_args to obtain desktop
	IMArgs.  And call request_iml_desktop to obtain iml_desktop.
	And lock leif_sync_object only when calling iml_construct_session().
	(LEContext::LEContext): When initialize() fails, set error to true.
	(LEContext::~LEContext): Call if_DestroySC_WithoutDesktopDestruction()
	instead of if_DestroySC, and call release_iml_desktop().

	* IMUser.cpp: Include IMLog.hh.
	(IMUser::request_desktop): Remove one that has no argument.
	And it emit debug log message when successfully find an appropriate
	existing desktop.
	(IMUser::IMUser): Remove the part on pdefault_desktop.

	* IMUser.hh (IMUser::pdefault_desktop): Removed.
	(IMUser::request_desktop): Now it must take IMDesktop::IMDesktopAttr.

	* IMDesktop.cpp: Include IMLog.hh.
	(IMDesktop::initialize): Properly initialize desktop_display_name.
	(IMDesktop::request_iml_desktop): Keep associations between
	LEBase and iml_desktop in iml_desktop_map.
	(IMDesktop::release_iml_desktop): When iml_desktop has no session,
	delete it.
	(IMDesktop::get_iml_desktop_args): Now IMDesktop takes charge of what
	LEContext::set_IMArg did.
	(IMDesktop::~IMDesktop): Close and delete all iml_desktops that
	`this' has.

	* IMDesktop.hh (class LEBase): declared.
	(IMDesktop::IMDESKTOP_ATTRS): Add a new item, CLIENT_HOST.
	(IMDesktop::iml_desktop): New member.
	(IMDesktop::desktop_display_name): New member.
	(IMDesktop::IMLDesktopMap): New typedef.
	(IMDesktop::iml_desktop_map): New member.
	(IMDesktop::create_iml_desktop): Make it a private member.
	(IMDesktop::request_iml_desktop): New member function.
	(IMDesktop::get_desktop_display_name): New member function.
	(IMDesktop::get_iml_desktop_args): New member function.
	(IMDesktop::get_lecontext_args): Now it does not take lec as an
	argument.

	* IMConnection.cpp (IMConnection::get_desktop): Set
	IMDesktop::CLIENT_HOST of IMDesktopAttr when calling
	request_desktop().
	(IMConnection::set_client_info): Likewise.

	* LE.cpp (LEBase::loadif): Now IMLock takes IMSyncObject&.
	(LEBase::openif): Likewise.
	(LEBase::closeif): Likewise.
	(LEContext::set_values): Likewise.
	(LEContext::realize): Likewise.
	(LEContext::send_event): Likewise.
	(LEContext::reset): Likewise.
	(LEContext::toggle_focus): Likewise.
	(LEContext::initialize): Likewise.
	(LEContext::~LEContext): Likewise.

	* LE.hh (LEBase::leif_sync): Now it is a IMSyncObject.
	(LEBase::get_leif_sync_object): Return IMSyncObject&.
	(LEContext::get_leif_sync_object): Likewise.

	* basictype.hh (u16string::u16string): New constructor.  Now
	it can take const string&.

	* IMLock.hh (class IMSyncObject): New class.
	(class IMLock): Now IMLock takes IMSyncObject instead of bare
	THREAD_SYNC_OBJECT.
	(IMLock::lock, IMLock::unlock): Removed.  IMSyncObject has these
	lock/unlock interfaces.

	* IMBasicObject.cpp (IMObjectMgr::IMObjectMgr): Don't init.
	sync_object because IMSyncObject automatically init. by itself.
	(IMObjectMgr::add): IMLock takes IMObjectMgr&.
	(IMObjectMgr::get_object_from_attribid): Likewise.

	* IMBasicObject.hh: Include IMLock.hh instead of threaddef.h.
	(class IMObjectMgr): Use IMSyncObject instead of bare
	THREAD_SYNC_OBJECT.

	* ICState.hh (class IMLExec_ICState): Use IMSyncObject instead of
	bare THREAD_SYNC_OBJECT.

2002-09-07  MIYASHITA Hisashi  <himi@m17n.org>

	* IIIMP_ICState.cpp (IIIMP_ICState_REQUESTED::aux_setvalues):
	Correct the type of pauxval.
	(IIIMP_ICState_REQUESTED::aux_setvalues): When constructing
	preply, we have to construct input method name also, because
	it will be deleted with preply.

	* LE.cpp (LEContext::send_event): Modify the style.

2002-09-06  MIYASHITA Hisashi  <himi@m17n.org>

	* IMLock.hh (IMLock::locked): New member.
	(IMLock::IMLock): properly initialize locked.
	(IMLock::~IMLock): Unlock only if locked is true.

	* LE.cpp (LEContext::toggle_focus): Call bind_imlexec() at the head
	because realize() may require imlexec.

2002-09-05  MIYASHITA Hisashi  <himi@m17n.org>

	* IIIMP_ICState.cpp(IIIMP_ICState_REQUESTED::forward_keyevent):
	Bug fix.  Correct the expression of `pcon'.
	(IIIMP_ICState_REQUESTED::finish): Remove the inappropriate comment.

	* IMSvrArg.cpp (IMSvrArg::initialize): Comment out the part on SYSLOG.
	(IMSvrArg::configure): Set up IMLog by the values of LOG_FACILITY and
	LOG_LEVEL.

	* IMSvrCfg.cpp (IMSvrCfg::initialize): Init. LOG_FACILITY and LOG_LEVEL.
	Remove the part on SYSLOG.

	* IMSvrCfg.hh (IMSvrCfg::IMSvrCfgOpt): Add LOG_FACILITY and LOG_LEVEL.
	And remove SYSLOG.

	* IMLog.cpp (IMLog::IMLog): Exclude directory part from the progname.

	* IMLog.hh (IMLog::LOG_LEVEL): new enum. item, INVALID.

2002-09-02  MIYASHITA Hisashi  <himi@m17n.org>

	* IIIMP_IMState.cpp (message_proc<IM_SETVALUES_REPLY>): Ignore it.

	* IMState.cpp (cleanup_ic): Bug fix.  Advance only the iterator it.
	Don't advance it2.

	* IIIMPUtil.hh (CONV_IIIMP_STR): Check if the length of IIIMP_string
	is grater than 0.

2002-08-31  MIYASHITA Hisashi  <himi@m17n.org>

	* .cvsignore: New file.

	* IMScheduler_MTPC.cpp (IMScheduler_MTPC_thread_entry): 
	Renamed from IMScheduler_thread_entry.

	* IIIMProtocol.cpp (IIIMProtocol::restart): New member function.
	(IIIMProtocol::accept): When pimtl->listen() fails, restart it,
	then retry listen().
	(IIIMProtocol::set_server_listen_address): Use restart() to reinit
	pimtl.

	* IIIMProtocol.hh (IIIMProtocol::restart): New member function.

	* IIIMPTrans.hh (IIIMPTransListen::errorp): New member function.

	* IIIMPTrans.cpp: When status is not `CLOSED', close listen_socket.
	(accept): Properly set fromlen.

