*** empty log message ***
authorhanda <handa>
Fri, 24 Aug 2007 14:09:24 +0000 (14:09 +0000)
committerhanda <handa>
Fri, 24 Aug 2007 14:09:24 +0000 (14:09 +0000)
.cvsignore [new file with mode: 0644]
.gdbinit [new file with mode: 0644]
check-fs.c [new file with mode: 0644]
mim-list.c [new file with mode: 0644]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..0eba2be
--- /dev/null
@@ -0,0 +1,28 @@
+.deps
+COPYING
+INSTALL
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+check-fs
+compile
+config.log
+config.status
+configure
+depcomp
+fifotest1
+fifotest2
+flt-gui
+flt-otf
+flt-hb
+imtest
+install-h
+linebreak
+m17n-imconf
+mim-list
+missing
+mkinstalldirs
+replace
+stamp-h.in
+temp*
diff --git a/.gdbinit b/.gdbinit
new file mode 100644 (file)
index 0000000..9fafb7c
--- /dev/null
+++ b/.gdbinit
@@ -0,0 +1,57 @@
+define xchartab
+set mdebug_dump_chartab ($, 0)
+echo \n
+end
+
+define xsymbol
+set mdebug_dump_symbol ($, 0)
+echo \n
+end
+
+define xmtext
+set mdebug_dump_mtext ($, 1, 0)
+echo \n
+end
+
+define xplist
+set mdebug_dump_plist ($, 0)
+echo \n
+end
+
+define xinterval
+set dump_interval ($arg0, 0)
+echo \n
+end
+
+define xfont
+set mdebug_dump_font ($)
+echo \n
+end
+
+define xfontset
+set mdebug_dump_fontset ($, 0)
+echo \n
+end
+
+define xface
+set mdebug_dump_face ($, 0)
+echo \n
+end
+
+define xgstring
+set dump_gstring (gstring, 0)
+echo \n
+end
+
+define xim
+set mdebug_dump_im ($, 0)
+echo \n
+end
+
+define xflush
+call XFlush (display)
+end
+
+define xsynch
+call XSynchronize (display, 1)
+end
diff --git a/check-fs.c b/check-fs.c
new file mode 100644 (file)
index 0000000..206ac70
--- /dev/null
@@ -0,0 +1,86 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <m17n-gui.h>
+
+void
+print_font (MFont *font)
+{
+  MSymbol family, language, script, otf;
+
+  family = mfont_get_prop (font, Mfamily);
+  language = mfont_get_prop (font, Mlanguage);
+  script = mfont_get_prop (font, Mscript);
+  otf = mfont_get_prop (font, Motf);
+
+  if (family)
+    printf ("%s", msymbol_name (family));
+  if (script)
+    printf (":script=%s", msymbol_name (script));
+  if (language)
+    printf (":lang=%s", msymbol_name (language));
+  if (otf)
+    printf (":otf=%s", msymbol_name (otf));
+}
+
+int
+main (int argc, char **argv)
+{
+  MFrame *frame;
+  MFontset *fontset;
+  MPlist *plist, *pl, *p, *p0;
+
+  if (argc < 2
+      || strcmp ("-h", argv[1]) == 0 || strcmp ("--help", argv[1]) == 0)
+    {
+      printf ("Usage: check-fs FONTSET-NAME\n");
+      exit (1);
+    }
+
+  M17N_INIT ();
+  plist = mplist ();
+  mplist_add (plist, Mdevice, NULL);
+  frame = mframe (plist);
+  m17n_object_unref (plist);
+
+  fontset = mfontset (argv[1]);
+  for (plist = mfontset_lookup (fontset, Mt, Mnil, Mnil);
+       plist &&  mplist_key (plist) != Mnil; plist = mplist_next (plist))
+    {
+      MSymbol script = mplist_key (plist);
+
+      printf ("\n(%s", msymbol_name (script));
+      for (pl = mfontset_lookup (fontset, script, Mt, Mnil);
+          pl && mplist_key (pl) != Mnil; pl = mplist_next (pl))
+       {
+         MSymbol language = mplist_key (pl);
+
+         if (language == Mt)
+           language = Mnil;
+         printf ("\n  (%s", msymbol_name (language));
+         for (p = mfontset_lookup (fontset, script, language, Mnil);
+              p && mplist_key (p) != Mnil; p = mplist_next (p))
+           {
+             MSymbol flt = mplist_key (p);
+             MFont *font = mplist_value (p);
+
+             printf ("\n    (");
+             print_font (font);
+             if (flt != Mt)
+               printf (" (with flt %s)", msymbol_name (flt));
+             for (p0 = mfont_list (frame, font, Mnil, 0);
+                  p0 && mplist_key (p0) != Mnil; p0 = mplist_next (p0))
+               if (! mplist_find_by_key (mplist_next (p0), mplist_key (p0)))
+                 printf ("\n      %s", msymbol_name (mplist_key (p0)));
+             printf (")");
+           }
+         printf (")");
+       }
+      printf (")");
+    }
+  printf ("\n");
+
+  m17n_object_unref (frame);
+  M17N_FINI ();
+  exit (0);
+}
diff --git a/mim-list.c b/mim-list.c
new file mode 100644 (file)
index 0000000..a49dba9
--- /dev/null
@@ -0,0 +1,315 @@
+/* mim-list.c -- List all m17n-lib input methods.  */
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include <m17n.h>
+#include <m17n-misc.h>
+
+/* Frequently used symbols.  */
+MSymbol Mutf_8;
+MSymbol Mspace;
+
+/* Print arguments and exit with 1.  */
+void
+fatal (char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  vprintf (fmt, ap);
+  va_end (ap);
+  exit (1);
+}
+
+/* If the key of PLIST is not TYPE, print error and exit.  */
+void
+check_type (MPlist *plist, MSymbol type)
+{
+  if (mplist_key (plist) != type)
+    fatal ("Type \"%s\" must be \"%s\".\n",
+          msymbol_name (mplist_key (plist)), msymbol_name (type));
+}
+  
+
+/* Dump the first line of documentation text MT.   */
+void
+dump_doc (MText *mt)
+{
+  int pos = mtext_chr (mt, '\n');
+
+  if (pos < 0)
+    mconv_encode_stream (Mutf_8, mt, stdout);
+  else
+    {
+      mt = mtext_duplicate (mt, 0, pos);
+      mconv_encode_stream (Mutf_8, mt, stdout);
+      printf (" ...");
+      m17n_object_unref (mt);
+    }
+}
+
+/* Dump the title and icon filename stored in the plist TITLE_ICON.  */
+void
+dump_title_icon (MPlist *title_icon)
+{
+  check_type (title_icon, Mtext);
+  mconv_encode_stream (Mutf_8, (MText *) mplist_value (title_icon), stdout);
+  title_icon = mplist_next (title_icon);
+  if (mplist_key (title_icon) == Mtext)
+    {
+      printf ("\n  ICON file: ");
+      mconv_encode_stream (Mutf_8, (MText *) mplist_value (title_icon), stdout);
+    }
+}
+
+
+/* Dump the value of plist VAL.  If TYPE is not Mnil, check if it
+   doesn't conflict with VAL.  */
+void
+dump_val (MPlist *val, MSymbol type)
+{
+  MSymbol valtype = mplist_key (val);
+
+  if (type != Mnil)
+    {
+      /* Check if VALTYPE is valid or not.  */
+      if (valtype != type
+         && ! (valtype == Mplist && type == Minteger))
+       fatal ("Value type %s not much with %s\n",
+              msymbol_name (valtype), msymbol_name (type));
+    }
+  if (valtype == Minteger)
+    printf ("%d", (int) mplist_value (val));
+  else if (valtype == Msymbol)
+    printf ("%s", msymbol_name ((MSymbol) mplist_value (val)));
+  else if (valtype == Mtext)
+    mconv_encode_stream (Mutf_8, (MText *) mplist_value (val), stdout);
+  else if (valtype == Mplist)
+    {
+      int from, to;
+
+      val = mplist_value (val);
+      check_type (val, Minteger);
+      from = (int) mplist_value (val);
+      val = mplist_next (val);
+      check_type (val, Minteger);
+      to = (int) mplist_value (val);
+      printf ("%d..%d", from, to);
+    }
+  else
+    fatal ("Invalid type: %s", msymbol_name ((MSymbol) mplist_value (val)));
+}
+
+/* Dump the information about the first variable stored in VARIABLES.
+   VARIABLES is a plist of this form:
+     (VARNAME (DOC-MTEXT [ DEFAULT-VALUE [ VALUE ... ] ] ) ...)
+   Returns `cddr' of VARIABLES.
+ */
+
+MPlist *
+dump_var (MPlist *variables)
+{
+  MSymbol name, type;
+  MPlist *plist;
+  MText *mt;
+
+  check_type (variables, Msymbol);
+  name = mplist_value (variables);
+  printf ("\n    %s: ", msymbol_name (name));
+  variables = mplist_next (variables);
+  check_type (variables, Mplist);
+  plist = mplist_value (variables);
+  variables = mplist_next (variables);
+  if (mplist_key (variables) == Mnil)
+    variables = NULL;
+  /* PLIST ::= (DOC-MTEXT [ DEFAULT-VALUE [ VALUE ... ] ] ) */
+  if (mplist_key (plist) == Mnil)
+    {
+      printf ("No docstring.");
+      return variables;
+    }
+  if (mplist_key (plist) == Msymbol
+      && (MSymbol) mplist_value (plist) == Mnil)
+    printf ("No docstring.");
+  else
+    {
+      check_type (plist, Mtext);
+      mt = mplist_value (plist);
+      if (mtext_len (mt) > 0)
+       dump_doc (mt);
+    }
+  plist = mplist_next (plist);
+  if (mplist_key (plist) == Mnil)
+    {
+      printf ("\n      No default value, no restriction.");
+      return variables;
+    }
+  type = mplist_key (plist);
+  printf ("\n      Default value (%s): ", msymbol_name (type));
+  dump_val (plist, Mnil);
+  plist = mplist_next (plist);
+  if (mplist_key (plist) == Mnil)
+    {
+      printf ("\n      No restriction");
+      return variables;
+    }
+  
+  while (mplist_key (plist) != Mnil)
+    {
+      printf ("\n      Valid value: ");
+      dump_val (plist, type);
+      plist = mplist_next (plist);
+    }
+  return variables;
+}
+
+/* Dump the information about the first command stored in COMMANDS.
+   COMMANDS is a plist of this form:
+     (CMDNAME (DOC-MTEXT [ KEYSEQ ... ] ) ...)
+   Returns `cddr' of COMMANDS.
+ */
+
+MPlist *
+dump_cmd (MPlist *commands)
+{
+  MSymbol name;
+  MPlist *plist;
+  MText *mt;
+
+  check_type (commands, Msymbol);
+  name = mplist_value (commands);
+  printf ("\n    %s: ", msymbol_name (name));
+  commands = mplist_next (commands);
+  check_type (commands, Mplist);
+  plist = mplist_value (commands);
+  commands = mplist_next (commands);
+  if (mplist_key (commands) == Mnil)
+    commands = NULL;
+  /* PLIST ::= (DOC-MTEXT [ KEYSEQ ... ] ) */
+  if (mplist_key (plist) == Mnil)
+    {
+      printf ("No docstring.");
+      return commands;
+    }
+  check_type (plist, Mtext);
+  mt = mplist_value (plist);
+  if (mtext_len (mt) > 0)
+    dump_doc (mt);
+  plist = mplist_next (plist);
+  if (mplist_key (plist) == Mnil)
+    {
+      printf ("\n      No binding.");
+      return commands;
+    }
+  while (mplist_key (plist) != Mnil)
+    {
+      MPlist *keyseq;
+
+      check_type (plist, Mplist);
+      keyseq = mplist_value (plist);
+      printf ("\n      binding:");
+      while (mplist_key (keyseq) != Mnil)
+       {
+         check_type (keyseq, Msymbol);
+         if ((MSymbol) mplist_value (keyseq) == Mspace)
+           printf (" SPC");
+         else
+           printf (" %s", msymbol_name ((MSymbol) mplist_value (keyseq)));
+         keyseq = mplist_next (keyseq);
+       }
+      plist = mplist_next (plist);
+    }
+  return commands;
+}
+
+/* Dump information about all input methods.  It accepts optional one
+   command-line argument LANG.  If LANG is specified, list only input
+   methods for LANG.  */
+
+int
+main (int argc, char **argv)
+{
+  MSymbol lang;
+  MPlist *plist, *pl;
+  int num;
+
+  M17N_INIT ();
+  Mutf_8 = msymbol ("utf-8");
+  Mspace = msymbol (" ");
+
+  if (argc > 1)
+    lang = msymbol (argv[1]);
+  else
+    lang = Mnil;
+
+  plist = mdatabase_list (msymbol ("input-method"), lang, Mnil, Mnil);
+  for (num = 0, pl = plist; pl && mplist_key (pl) != Mnil;
+       num++, pl = mplist_next (pl))
+    {
+      MSymbol *tags = mdatabase_tag (mplist_value (pl));
+      char *lang = tags[1] == Mt ? "generic" : msymbol_name (tags[1]);
+      MPlist *title_icon, *variables, *commands;
+      MText *mt;
+
+      if (tags[2] == Mnil)
+       printf ("\nLanguage:%s Name:%s (for inclusion)",
+               lang, msymbol_name (tags[3]));
+      else
+       printf ("\nLanguage:%s Name:%s",
+               lang, msymbol_name (tags[2]));
+      mt = minput_get_description (tags[1], tags[2]);
+      if (mt)
+       {
+         printf ("\n  Description: ");
+         dump_doc (mt);
+         m17n_object_unref (mt);
+       }
+      else
+       printf ("\n  No description");
+
+      title_icon = minput_get_title_icon (tags[1], tags[2]);
+      if (title_icon)
+       {
+         printf ("\n  Title: ");
+         dump_title_icon (title_icon);
+         m17n_object_unref (title_icon);
+       }
+      else
+       printf ("\n  No title nor icon");
+
+      variables = minput_get_variables (tags[1], tags[2]);
+      if (variables)
+       {
+         printf ("\n  Variables:");
+         while ((variables = dump_var (variables)) != NULL);
+       }
+
+      commands = minput_get_commands (tags[1], tags[2]);
+      if (commands)
+       {
+         printf ("\n  Commands:");
+         while ((commands = dump_cmd (commands)) != NULL);
+       }
+
+      if (tags[2] != Mnil)
+       {
+         /* Check if the input method is surely available.   */
+         MInputMethod *im = minput_open_im (tags[1], tags[2], NULL);
+         MInputContext *ic;
+
+         if (! im)
+           fatal ("Can not open\n");
+         ic = minput_create_ic (im, NULL);
+         if (! ic)
+           fatal ("Can not create context\n");
+         minput_destroy_ic (ic);
+         minput_close_im (im);
+       }
+    }
+  printf ("\n#input-methods = %d\n", num);
+  if (plist)
+    m17n_object_unref (plist);
+  M17N_FINI ();
+  exit (0);
+}