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;