(Fsave_charset_mapping_table): Fixed.
authortomo <tomo>
Tue, 12 Feb 2002 15:38:20 +0000 (15:38 +0000)
committertomo <tomo>
Tue, 12 Feb 2002 15:38:20 +0000 (15:38 +0000)
(load_char_decoding_entry_maybe): New function.

src/mule-charset.c

index 0abf730..c072f4a 100644 (file)
@@ -2140,6 +2140,7 @@ Save mapping-table of CHARSET.
              }
          }
       }
+      break;
     default:
       {
        Lisp_Object table_g = XCHARSET_DECODING_TABLE (charset);
@@ -2188,6 +2189,39 @@ Save mapping-table of CHARSET.
   return Qnil;
 #endif
 }
+
+Emchar
+load_char_decoding_entry_maybe (Lisp_Object ccs, int code_point)
+{
+  Lisp_Object db;
+  Lisp_Object db_dir = Vexec_directory;
+  Lisp_Object db_file;
+
+  if (NILP (db_dir))
+    db_dir = build_string ("../lib-src");
+  db_dir = Fexpand_file_name (build_string ("char-db"), db_dir);
+  db_dir = Fexpand_file_name (Fsymbol_name (XCHARSET_NAME (ccs)), db_dir);
+  db_file = Fexpand_file_name (build_string ("system-char-id"), db_dir);
+  db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+  if (!NILP (db))
+    {
+      Lisp_Object ret
+       = Fget_database (Fprin1_to_string (make_int (code_point), Qnil),
+                        db, Qnil);
+      if (!NILP (ret))
+       {
+         ret = Fread (ret);
+         if (CHARP (ret))
+           {
+             decoding_table_put_char (ccs, code_point, ret);
+             Fclose_database (db);
+             return XCHAR (ret);
+           }
+       }
+      Fclose_database (db);
+    }
+  return -1;
+}
 #endif
 
 \f