OSDN Git Service

* improve guess quality
authorNARUSE, Yui <naruse@users.sourceforge.jp>
Sat, 5 Mar 2005 04:20:25 +0000 (04:20 +0000)
committerNARUSE, Yui <naruse@users.sourceforge.jp>
Sat, 5 Mar 2005 04:20:25 +0000 (04:20 +0000)
nkf.c

diff --git a/nkf.c b/nkf.c
index 852a3ab..d501fc7 100644 (file)
--- a/nkf.c
+++ b/nkf.c
@@ -39,9 +39,9 @@
 **        E-Mail: furukawa@tcp-ip.or.jp
 **    \e$B$^$G8fO"Mm$r$*4j$$$7$^$9!#\e(B
 ***********************************************************************/
-/* $Id: nkf.c,v 1.63 2005/03/03 22:03:17 naruse Exp $ */
+/* $Id: nkf.c,v 1.64 2005/03/04 19:20:25 naruse Exp $ */
 #define NKF_VERSION "2.0.4"
-#define NKF_RELEASE_DATE "2005-03-04"
+#define NKF_RELEASE_DATE "2005-03-05"
 #include "config.h"
 
 static char *CopyRight =
@@ -743,6 +743,9 @@ main(argc, argv)
     } else {
       int nfiles = argc;
       while (argc--) {
+           is_inputcode_mixed = FALSE;
+           is_inputcode_set   = FALSE;
+           input_codename = "";
           if ((fin = fopen((origfname = *argv++), "r")) == NULL) {
               perror(*--argv);
               return(-1);
@@ -1884,6 +1887,7 @@ kanji_convert(f)
 {
     int    c1,
                     c2, c3;
+    int is_8bit = FALSE;
 
     module_connection();
     c2 = 0;
@@ -1948,6 +1952,7 @@ kanji_convert(f)
                 /* 8 bit code */
                 if (!estab_f && !iso8859_f) {
                     /* not established yet */
+                   if (!is_8bit) is_8bit = TRUE;
                     c2 = c1;
                     NEXT;
                 } else { /* estab_f==TRUE */
@@ -2198,12 +2203,18 @@ kanji_convert(f)
     /* epilogue */
     (*iconv)(EOF, 0, 0);
     if (!is_inputcode_set)
-       set_input_codename(
-           iconv == e_iconv ? "EUC-JP" :
-           iconv == s_iconv ? "Shift_JIS" :
-           iconv == w_iconv ? "UTF-8" :
-           iconv == w_iconv16 ? "UTF-16" :
-           "ASCII");
+    {
+       if (is_8bit) {
+           struct input_code *p = input_code_list;
+           struct input_code *result = p;
+           while (p->name){
+               if (p->score < result->score) result = p;
+               ++p;
+           }
+           set_input_codename(result->name);
+       } else
+           set_input_codename("ASCII");
+    }
     return 1;
 }