2006-12-01  Naoyuki Ishimura  <naoyuki.ishimura@sun.com>
	* IIIMPUtil.cpp
	* IMInputContext.cpp
	* ICHandler.hh
	added kbd layout info as IC attribute

2006-05-26  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.cpp (IIIMP_IMState::send_hotkeys):
	(switch_hotkey_profile):
	(switch_le_profile):
	* IIIMP_ICState.cpp (IIIMP_ICState::message_proc):
	* IIIMP_hotkey.cpp (IIIMP_hotkey_state::switch_language):
	* IIIMP_hotkey_profile.hh (class IIIMP_hotkey_profile):
	* IIIMP_hotkey_profile.cpp (IIIMP_hotkey_profile::retrive_hotkeys): 

	sync with libiiimp.so hotkey implementation refactoring

2006-05-22  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_hotkey.hh (class IIIMP_hotkey_state): class name change
	IIIMP_hotkey -> IIIMP_hotkey_state to avoid conflict with
	libiiimp.so
	* IIIMP_hotkey.cpp: class name change IIIMP_hotkey ->
	IIIMP_hotkey_state to avoid conflict with libiiimp.so
	* IIIMP_hotkey_profile.hh (class IIIMP_hotkey_profile): structure
	name change HOTKEY_LIST -> IIIMP_hotkey_list to sync with
	libiiimp.so fix
	* IIIMP_hotkey_profile.cpp
	(IIIMP_hotkey_profile::retrive_hotkeys): structure name change
	HOTKEY to IIIMP_hotkey and HOTKEY_LIST to IIIMP_hotkey_list to
	structure member name change sync with libiiimp.so fix
	* IIIMP_IMState.cpp (IIIMP_IMState::send_hotkeys): structure name
	change HOTKEY_LIST to IIIMP_hotkey_list to sync with libiiimp.so
	fix
	* IIIMP_ICState.hh (class IIIMP_ICState): class name change
	IIIMP_hotkey -> IIIMP_hotkey_state to avoid conflict with
	libiiimp.so
	* IIIMP_ICState.cpp (IIIMP_ICState::IIIMP_ICState): class name
	change IIIMP_hotkey -> IIIMP_hotkey_state to avoid conflict with
	libiiimp.so

2006-03-08  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IMDesktop.cpp (IMDesktop::release_iml_desktop): change not to
	stop when iiimx is alive.

2006-01-19  Federic Zhang <federic.zhang@sun.com>

	* IIIMP_hotkey.cpp (IIIMP_hotkey::process_hotkey): send the missing
	hotkey state notify event to client if the conversion mode is ON.
	
2006-01-19  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* LE.cpp (LEContext::send_event): return false if the event is a
	key release event and the LE does not support key release event.
	Caller of this function knows whether the key release event must
	be handled by iiimd or not.

	* IIIMP_ICState.cpp (IIIMP_ICState_REQUESTED::forward_event): if
	send_event() fails, the event is sent back to the client.

2006-01-12  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.cpp (set_data_to_client): when environment
	variable IIIMD_KEY_RELEASE_DISABLE is defined, disable forwarding
	key_release event.  hopefully a short term workaround until
	forwarding key_release event is completely implemented.

2005-12-29  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* Makefile.am (libiiimutils_la_LIBADD): remove CXX_LDFLAGS.
	(libiiimutils_la_LDFLAGS): change -Wc,-norunpath option to
	SHLIBCXXFLAGS.  -norunpath is specific to Sun Studio C++ compiler.

2005-12-22  Yong Sun <yong.sun@sun.com>

	* IIIMP_IMState.cpp (IIIMP_IMState::send_hotkeys):
	Add Hangul key as hotkey when client is in ko locale.
	And separated the Kanji keys to ja branch.

2005-11-30  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* Makefile.am (libiiimutils_la_LIBADD): add CXX_LDFLAGS.
	(iiimd_LDADD): add CXX_LDFLAGS.
	(iiimf_le_tools_LDADD): add CXX_LDFLAGS.
	(iiimutildir): directory in which libiiimutil.so will be placed.

2005-11-25  Federic Zhang <federic.zhang@sun.com>

	* IMSvrCfg.cpp (initialize): revert previous change made by kasha
	which adds Kanji,<Alt>Kanji keys to default Conversion ON keys.
	
	The two keys are already registered as super hotkeys in IIIMP_IMState::send_hotkeys,
	the previous change makes duplicate hotkeys.
	
2005-11-15  Yong Sun <Yong.Sun@Sun.COM>
	
	* IIIMP_Hotkey.cpp (IIIMP_hotkey::process_hotkey): Seems that the
	hotkey implementation in IIIMF is incompleted, the normal hotkeys
	(not the default ones, such as trigger, le_switching etc) can not
	send a hotkey_state_notify event to client so far, because the
	hotkey_state_notify event handling in iiimcf is incorrect.
	
	Therefore the compose hotkey in unitle does not work when unitle is 
	in active mode.

2005-11-03    <kasha@sun.co.jp>

	* IIIMPTrans.cpp (IIIMPTrans_read): fix typo - (errno = EINTR)
	should be (errno == EINTR).  this typo causes infinite loop if
	recv() fails.
	(IIIMPTrans_write): fix typo - (errno = EINTR) should be (errno ==
	EINTR).  this typo causes infinite loop if send() fails.
	return values IIIMF_STATUS_STREAM_RECEIVE should be
	IIIMF_STATUS_STREAM_SEND.

2005-10-24  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* lexmlconf.cpp (iiim_le_xmlconf_load_file): suppress annoying
	warning message.  iiim_le_xmlconf_load_file() now checks the
	existence of le.xml.conf before it calls XML library.
	I/O warning : failed to load external entity "/etc/iiim/le.xml.conf"

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

	* IIIMP_IMState.cpp: disable obsolete ns code with
	#if defined(USE_OBSOLETE_NS_CODE).

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

	* IMDesktop.cpp (IMDesktop::match): when iiimd_option_desktop is
	true, return true as there is only one desktop.
	(IMDesktop::get_iml_desktop_args): add CLIENT_GROUP.

2005-09-30  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.cpp (IIIMP_IMState::parse_user_name): when
	iiimd_option_desktop is true, normalize username and hostname with
	desktop_user_name and desktop_node_name respectively.
	(IIIMP_IMState_Identified::message_proc): add support for
	IIIMP_IMATTRIBUTE_CLIENT_GROUP.
	(IIIMP_IMState::get_imstate_from_desktop): when
	iiimd_option_desktop is true, return it->second without comparing
	names.
	* IMConnection.cpp (IMConnection::set_client_info): add client_group
	* IMDesktop.cpp (IMDesktop::create_iml_desktop): add client_group.
	* IMDesktop.hh (class IMDesktop): add CLIENT_GROUP.
	* IMHandler.hh (class IMHandler): add CLIENT_GROUP
	* IMSvrArg.cpp (IMSvrArg::set_argopt): initialize
	desktop_user_name and desktop_node_name, that are used when iiimd
	is running for only one user/desktop.
	* main.cpp (desktop_user_name): declare desktop_user_name.
	(desktop_node_name): declare desktop_node_name.

2005-09-28  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* main.cpp (iiimd_option_desktop): new gloval variable
	(parent_watchdog): new function
	(parent_watchdog_start): new function

	* IMDesktop.cpp (IMDesktop::release_iml_desktop): stop using
	environment variable IIIMD_OPTION_DESKTOP.  Instead, global
	variable iiimd_option_desktop is used.  ugly...

	* IMSvr.cpp (IMSvr::start): call parent_watchdog_start()

	* IMSvrArg.cpp (IMSvrArg::set_argopt): initialize iiimd_option_desktop

2005-09-20  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IMConnection.cpp (get_triggerkeys): do not set offkeys.
	Commit on behalf of <naoyuki.ishimura@sun.com>.

	* IMSvrCfg.cpp (initialize): add Kanji,<Alt>Kanji keys to default
	Conversion ON keys.
	Commit on behalf of <naoyuki.ishimura@sun.com>.

2005-09-12  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.hh (class IIIMP_IMState): add send_trigger_keys(IMHandler *)
	* IIIMP_IMState.cpp (send_trigger_keys): new function
	IIIMP specification requires IM_REGISTER_TRIGGER_KEYS just after
	IM_CONNECT.  The change ensures this behavior.
	Commit on behalf of <naoyuki.ishimura@sun.com>.
	
2005-08-15  Federic Zhang <federic.zhang@sun.com>

	* LE.cpp (LEContext::toggle_conversion):
	  enable the input method engine switching and reset
	  the value of inputengine to ensure the switch only
	  happens when user selects one input method engine in
	  gimlet language submenu list.
	  
2005-08-08  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_IMState.cpp (set_data_to_client): use
	iiimp_card32_list_bit_set() to handle capability.

2005-07-27  Makoto Fujiyoshi <makoto_fujiyoshi@justsystem.co.jp>

	* IIIMP_IMState.cpp (IIIMP_IMState::destroy): bug fix. avoid crash at re-login.

2005-07-22  Federic Zhang <federic.zhang@sun.com>

	* IIIMP_hotkey.cpp (IIIM_hotkey::process_lang_selection_window): Fix Bug 99
	  Double key events in hot selection menu.
	  - ignore the key release event when process language selection window

2005-07-13  Makoto Fujiyoshi <makoto_fujiyoshi@justsystem.co.jp>

	* IIIMP_IMState.cpp (iIIIMP_IMState_Identified::set_data_to_client): fix memory leak.
	* IMState.cpp (IMState::~IMState): avoid crash when pshared->pimh point to NULL.

2005-07-13  Makoto Fujiyoshi <makoto_fujiyoshi@justsystem.co.jp>

	* IIIMP_hotkey.cpp (IIIMP_hotkey::draw_lang_selection_window): fix memory leak.

2005-07-08  AShiZaWa KaZuNoRi  <kasha@sun.co.jp>

	* IIIMP_hotkey_profile.cpp (get_super_hotkeys):  remove keytype for key release
	* IIIMP_IMState.cpp (send_trigger_keys):  remove keytype for key release
	(set_data_to_client): add capability
	* IIIMP_hotkey.cpp:  IIIMP_hotkey::forward_hotkey_to_LE()
	remove keytype for key release
	* IMKeyUtils.hh (class IMKeySpec): remove keytype for key release
	* IMKeyUtils.cpp (IMKeySpec): remove keytype for key release
	* IIIMP_ICState.cpp: remove keytype for key release
	* LE.cpp: LEContext::send_event()
	pkey = ((IMKeyListEvent *)pimevent)->keylist;
	if ((pkey && pkey->keyType == IM_KEY_PRESS) || pbase->iml_if->need_keyrelease)
	The code processes only key events, and ignores other events such
	as aux events.  Breaks AUX.
	add pbase->iml_if->need_keyrelease.

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

	* IIIMP_IMState.cpp (create_input_method_descriptors): call
	iiimp_inputmethod_descriptor2_new() instead of
	iiimp_inputmethod_descriptor_new().

2005-06-30  Federic Zhang <federic.zhang@sun.com>

	Enable Input Method Engine (IME) switching and display IME list in the language submenu of GIMLET.

	* LE.cpp (LEContext::toggle_conversion): tell LE to switch IME with the new SC_CLIENT_INPUT_METHOD_ENGINE 
	  attribute by giving current IME name if it isn't NULL.
	* IIIMPUtil.cpp (convert_iiimp_icattr): when handling IIIMP_ICATTRIBUTE_INPUT_METHOD_NAME, check whether
	  any IME name is included, which is separated by the delimiter from orginal lename, set it to inputengine
	  if yes. 
	* ICHandler.hh: New inputengine member in class ICAttribute, the new get_inputengine method to access it,
	  the inputengine contains the name of IME that has been selected from gimlet list and sent from client.

2005-06-21  Federic Zhang <federic.zhang@sun.com>

	Export the information of input method engine to client.

	* LE.cpp (LEBase::get_imeinfolist), (LEBase::reload), (LEBase::loadif), (LEBase::update_imdesclist),
	  (LEContext::send_event):
	- Clear imeinfolist in reload ().
	- Convert the info from IMEInfo to IMImeinfo and put into imdesclist in loadif ().
	- New get_imeinfolist ().
	- update_imdesclist not used yet.
	- Check whether pkey is NULL in send_event ().
	* IMBasicObject.cpp:
	- Update its constructor accordingly.
	* IIIMP_IMState.cpp (IIIMP_IMState_Identified::create_imeinfo_list),
	  (IIIMP_IMState_Identified::create_input_method_descriptors):
	- New create_imeinfo_list which converts from IMIMeInfo to IIIMP_imeinfo.
	- Invoke create_imeinfo_list in create_input_method_descriptors.
	* LEMgr.cpp (LEMgr::update_imdesclist):
	- Not used yet.
	* IIIMP_IMState.hh: 
	- New method, create_imeinfo_list, in IIIMP_IMState_Identified class.
	* IMBasciOBject.hh: 
	- New class, IMImeInfo, which hold the information of IME.
	- New list, IMImeInfoList.
	- New member, imeinfos, in the IMDescriptor class.
	* LEMgr.hh:
	- New member, imeinfos, in the LEMgr class.
	* LE.hh:
	- likewise

2005-06-17  Federic Zhang <federic.zhang@sun.com>

        Add support for Key Release Support

        * LE.cpp (LEContext::send_event): Send the release event only if the target LE has interest in it.
        * IMKeyUtils.cpp (IMKeySpec): New constructor with the new keytype parameter.
        * IMKeyUtils.hh: New keytype member in IMKeySpec class and new inline method: get_keytype.
        * IIIMP_ICState.cpp (forward_event),(forward_keyevent): keytype assigned
        * IIIMP_hotkey.cpp (forward_hotkey_to_LE): ditto
        * IIIMP_IMState.cpp (send_trigger_keys): ditto
        * IIIMP_hotkey_profile.cpp (get_super_hotkeys), (retrive_hotkeys):: ditto

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.

