File mlconfig_fixdups.diff of Package mlterm
--- mlterm/tool/mlconfig/mc_im.c 2004-12-13 18:31:54 +0900
+++ mlterm_mlconfig/tool/mlconfig/mc_im.c 2005-01-08 14:22:23 +0900
@@ -89,6 +89,18 @@
return 0;
}
+static int is_registered(char *plugin_name){
+ int index;
+
+ for( index = 0; index < num_of_info; index++){
+ if( strcmp( im_info_table[index]->name , plugin_name) == 0){
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
static int
get_im_info(char *locale, char *encoding)
{
@@ -123,12 +135,22 @@
info = (*func)(locale, encoding);
- if(info) {
+ kik_dl_close(handle);
+
+ /* skip an already-registered plugin */
+ /* NOTE: use the name from "info", not its filename */
+ if( is_registered( info->name)) continue;
+
+ if( info){
im_info_table[num_of_info] = info ;
num_of_info++;
}
-
- kik_dl_close(handle);
+
+ if( num_of_info >= MAX_IM_INFO){
+ /* shouldn't happen */
+ /* i.e. MAX_IM_INFO should be large enough */
+ break;
+ }
}
return 0;