home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / comm / ykh121.zip / YKHSRC.ZIP / ROMKAN.C < prev    next >
C/C++ Source or Header  |  1992-10-04  |  14KB  |  435 lines

  1. #include <stdlib.h>
  2.  
  3. #define KANA_00000  0
  4. #define KANA_A      2
  5. #define KANA_I      4
  6. #define KANA_U      6
  7. #define KANA_E      8
  8. #define KANA_O      10
  9. #define KANA_KA     11
  10. #define KANA_KI     13
  11. #define KANA_KU     15
  12. #define KANA_KE     17
  13. #define KANA_KO     19
  14. #define KANA_SA     21
  15. #define KANA_SHI    23
  16. #define KANA_SU     25
  17. #define KANA_SE     27
  18. #define KANA_SO     29
  19. #define KANA_TA     31
  20. #define KANA_CHI    33
  21. #define KANA_TSU    36
  22. #define KANA_TE     38
  23. #define KANA_TO     40
  24. #define KANA_NA     42
  25. #define KANA_NI     43
  26. #define KANA_NU     44
  27. #define KANA_NE     45
  28. #define KANA_NO     46
  29. #define KANA_HA     47
  30. #define KANA_HI     50
  31. #define KANA_HU     53
  32. #define KANA_HE     56
  33. #define KANA_HO     59
  34. #define KANA_MA     62
  35. #define KANA_MI     63
  36. #define KANA_MU     64
  37. #define KANA_ME     65
  38. #define KANA_MO     66
  39. #define KANA_YA     68
  40. #define KANA_YU     70
  41. #define KANA_YO     72
  42. #define KANA_RA     73
  43. #define KANA_RI     74
  44. #define KANA_RU     75
  45. #define KANA_RE     76
  46. #define KANA_RO     77
  47. #define KANA_WA     79
  48. #define KANA_WO     82
  49. #define KANA_N      83
  50.  
  51. #define KANA_TTSU   35
  52. #define KANA_YYA    67
  53. #define KANA_YYU    69
  54. #define KANA_YYO    71
  55.  
  56. #define KANA_YI    80
  57. #define KANA_YE    81
  58. #define KANA_HYPE  87
  59.  
  60. #define KANA_VU     84
  61.  
  62. #define KANA_ATOM1   9
  63. #define KANA_ATOM2  71
  64. #define KANA_ATOM3  52
  65. #define KANA_ATOM4  17
  66.  
  67. #define KATA_ATOM2  16
  68. #define KATA_ATOM3   6
  69.  
  70. #define KANA_ATOMS KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4+KATA_ATOM2+KATA_ATOM3
  71.  
  72. #define HIRAGANA 1
  73. #define KATAKANA 2
  74.  
  75. typedef struct {
  76.   unsigned char rom[4];
  77.   unsigned char kan[3];
  78. } rtok;
  79.  
  80. rtok rk[KANA_ATOMS] = {
  81.   {'a',000,000,000,KANA_A    ,KANA_00000,KANA_00000},
  82.   {'i',000,000,000,KANA_I    ,KANA_00000,KANA_00000},
  83.   {'u',000,000,000,KANA_U    ,KANA_00000,KANA_00000},
  84.   {'e',000,000,000,KANA_E    ,KANA_00000,KANA_00000},
  85.   {'o',000,000,000,KANA_O    ,KANA_00000,KANA_00000},
  86.   {'n',000,000,000,KANA_N    ,KANA_00000,KANA_00000},
  87.   {'m',000,000,000,KANA_N    ,KANA_00000,KANA_00000},
  88.   {'-',000,000,000,KANA_HYPE ,KANA_00000,KANA_00000},
  89.   {'\'',000,000,00,KANA_00000,KANA_00000,KANA_00000},
  90.  
  91.   {'k','a',000,000,KANA_KA   ,KANA_00000,KANA_00000},
  92.   {'k','i',000,000,KANA_KI   ,KANA_00000,KANA_00000},
  93.   {'k','u',000,000,KANA_KU   ,KANA_00000,KANA_00000},
  94.   {'k','e',000,000,KANA_KE   ,KANA_00000,KANA_00000},
  95.   {'k','o',000,000,KANA_KO   ,KANA_00000,KANA_00000},
  96.   {'g','a',000,000,KANA_KA+1 ,KANA_00000,KANA_00000},
  97.   {'g','i',000,000,KANA_KI+1 ,KANA_00000,KANA_00000},
  98.   {'g','u',000,000,KANA_KU+1 ,KANA_00000,KANA_00000},
  99.   {'g','e',000,000,KANA_KE+1 ,KANA_00000,KANA_00000},
  100.   {'g','o',000,000,KANA_KO+1 ,KANA_00000,KANA_00000},
  101.   {'s','a',000,000,KANA_SA   ,KANA_00000,KANA_00000},
  102.   {'s','u',000,000,KANA_SU   ,KANA_00000,KANA_00000},
  103.   {'s','e',000,000,KANA_SE   ,KANA_00000,KANA_00000},
  104.   {'s','o',000,000,KANA_SO   ,KANA_00000,KANA_00000},
  105.   {'z','a',000,000,KANA_SA+1 ,KANA_00000,KANA_00000},
  106.   {'j','i',000,000,KANA_SHI+1,KANA_00000,KANA_00000},
  107.   {'z','u',000,000,KANA_SU+1 ,KANA_00000,KANA_00000},
  108.   {'z','e',000,000,KANA_SE+1 ,KANA_00000,KANA_00000},
  109.   {'z','o',000,000,KANA_SO+1 ,KANA_00000,KANA_00000},
  110.   {'t','a',000,000,KANA_TA   ,KANA_00000,KANA_00000},
  111.   {'t','e',000,000,KANA_TE   ,KANA_00000,KANA_00000},
  112.   {'t','o',000,000,KANA_TO   ,KANA_00000,KANA_00000},
  113.   {'d','a',000,000,KANA_TA+1 ,KANA_00000,KANA_00000},
  114.   {'d','e',000,000,KANA_TE+1 ,KANA_00000,KANA_00000},
  115.   {'d','o',000,000,KANA_TO+1 ,KANA_00000,KANA_00000},
  116.   {'n','a',000,000,KANA_NA   ,KANA_00000,KANA_00000},
  117.   {'n','i',000,000,KANA_NI   ,KANA_00000,KANA_00000},
  118.   {'n','u',000,000,KANA_NU   ,KANA_00000,KANA_00000},
  119.   {'n','e',000,000,KANA_NE   ,KANA_00000,KANA_00000},
  120.   {'n','o',000,000,KANA_NO   ,KANA_00000,KANA_00000},
  121.   {'h','a',000,000,KANA_HA   ,KANA_00000,KANA_00000},
  122.   {'h','i',000,000,KANA_HI   ,KANA_00000,KANA_00000},
  123.   {'f','u',000,000,KANA_HU   ,KANA_00000,KANA_00000},
  124.   {'h','u',000,000,KANA_HU   ,KANA_00000,KANA_00000},
  125.   {'h','e',000,000,KANA_HE   ,KANA_00000,KANA_00000},
  126.   {'h','o',000,000,KANA_HO   ,KANA_00000,KANA_00000},
  127.   {'b','a',000,000,KANA_HA+1 ,KANA_00000,KANA_00000},
  128.   {'b','i',000,000,KANA_HI+1 ,KANA_00000,KANA_00000},
  129.   {'b','u',000,000,KANA_HU+1 ,KANA_00000,KANA_00000},
  130.   {'b','e',000,000,KANA_HE+1 ,KANA_00000,KANA_00000},
  131.   {'b','o',000,000,KANA_HO+1 ,KANA_00000,KANA_00000},
  132.   {'p','a',000,000,KANA_HA+2 ,KANA_00000,KANA_00000},
  133.   {'p','i',000,000,KANA_HI+2 ,KANA_00000,KANA_00000},
  134.   {'p','u',000,000,KANA_HU+2 ,KANA_00000,KANA_00000},
  135.   {'p','e',000,000,KANA_HE+2 ,KANA_00000,KANA_00000},
  136.   {'p','o',000,000,KANA_HO+2 ,KANA_00000,KANA_00000},
  137.   {'m','a',000,000,KANA_MA   ,KANA_00000,KANA_00000},
  138.   {'m','i',000,000,KANA_MI   ,KANA_00000,KANA_00000},
  139.   {'m','u',000,000,KANA_MU   ,KANA_00000,KANA_00000},
  140.   {'m','e',000,000,KANA_ME   ,KANA_00000,KANA_00000},
  141.   {'m','o',000,000,KANA_MO   ,KANA_00000,KANA_00000},
  142.   {'y','a',000,000,KANA_YA   ,KANA_00000,KANA_00000},
  143.   {'y','i',000,000,KANA_YI   ,KANA_00000,KANA_00000},
  144.   {'y','u',000,000,KANA_YU   ,KANA_00000,KANA_00000},
  145.   {'y','e',000,000,KANA_YE   ,KANA_00000,KANA_00000},
  146.   {'y','o',000,000,KANA_YO   ,KANA_00000,KANA_00000},
  147.   {'r','a',000,000,KANA_RA   ,KANA_00000,KANA_00000},
  148.   {'r','i',000,000,KANA_RI   ,KANA_00000,KANA_00000},
  149.   {'r','u',000,000,KANA_RU   ,KANA_00000,KANA_00000},
  150.   {'r','e',000,000,KANA_RE   ,KANA_00000,KANA_00000},
  151.   {'r','o',000,000,KANA_RO   ,KANA_00000,KANA_00000},
  152.   {'w','a',000,000,KANA_WA   ,KANA_00000,KANA_00000},
  153.   {'w','o',000,000,KANA_WO   ,KANA_00000,KANA_00000},
  154.   {'j','a',000,000,KANA_SHI+1,KANA_YYA  ,KANA_00000},
  155.   {'j','u',000,000,KANA_SHI+1,KANA_YYU  ,KANA_00000},
  156.   {'j','o',000,000,KANA_SHI+1,KANA_YYO  ,KANA_00000},
  157.   {'a','\'',000,000,KANA_A-1 ,KANA_00000,KANA_00000},
  158.   {'i','\'',000,000,KANA_I-1 ,KANA_00000,KANA_00000},
  159.   {'u','\'',000,000,KANA_U-1 ,KANA_00000,KANA_00000},
  160.   {'e','\'',000,000,KANA_E-1 ,KANA_00000,KANA_00000},
  161.   {'o','\'',000,000,KANA_O-1 ,KANA_00000,KANA_00000},
  162.  
  163.   {'s','h','i',000,KANA_SHI  ,KANA_00000,KANA_00000},
  164.   {'c','h','i',000,KANA_CHI  ,KANA_00000,KANA_00000},
  165.   {'t','s','u',000,KANA_TSU  ,KANA_00000,KANA_00000},
  166.   {'k','k','a',000,KANA_TTSU ,KANA_KA   ,KANA_00000},
  167.   {'k','k','i',000,KANA_TTSU ,KANA_KI   ,KANA_00000},
  168.   {'k','k','u',000,KANA_TTSU ,KANA_KU   ,KANA_00000},
  169.   {'k','k','e',000,KANA_TTSU ,KANA_KE   ,KANA_00000},
  170.   {'k','k','o',000,KANA_TTSU ,KANA_KO   ,KANA_00000},
  171.   {'s','s','a',000,KANA_TTSU ,KANA_SA   ,KANA_00000},
  172.   {'s','s','u',000,KANA_TTSU ,KANA_SU   ,KANA_00000},
  173.   {'s','s','e',000,KANA_TTSU ,KANA_SE   ,KANA_00000},
  174.   {'s','s','o',000,KANA_TTSU ,KANA_SO   ,KANA_00000},
  175.   {'t','t','a',000,KANA_TTSU ,KANA_TA   ,KANA_00000},
  176.   {'t','t','e',000,KANA_TTSU ,KANA_TE   ,KANA_00000},
  177.   {'t','t','o',000,KANA_TTSU ,KANA_TO   ,KANA_00000},
  178.   {'p','p','a',000,KANA_TTSU ,KANA_HA+2 ,KANA_00000},
  179.   {'p','p','i',000,KANA_TTSU ,KANA_HI+2 ,KANA_00000},
  180.   {'p','p','u',000,KANA_TTSU ,KANA_HU+2 ,KANA_00000},
  181.   {'p','p','e',000,KANA_TTSU ,KANA_HE+2 ,KANA_00000},
  182.   {'p','p','o',000,KANA_TTSU ,KANA_HO+2 ,KANA_00000},
  183.   {'k','y','a',000,KANA_KI   ,KANA_YYA  ,KANA_00000},
  184.   {'k','y','u',000,KANA_KI   ,KANA_YYU  ,KANA_00000},
  185.   {'k','y','o',000,KANA_KI   ,KANA_YYO  ,KANA_00000},
  186.   {'g','y','a',000,KANA_KI+1 ,KANA_YYA  ,KANA_00000},
  187.   {'g','y','u',000,KANA_KI+1 ,KANA_YYU  ,KANA_00000},
  188.   {'g','y','o',000,KANA_KI+1 ,KANA_YYO  ,KANA_00000},
  189.   {'c','h','a',000,KANA_CHI  ,KANA_YYA  ,KANA_00000},
  190.   {'c','h','u',000,KANA_CHI  ,KANA_YYU  ,KANA_00000},
  191.   {'c','h','o',000,KANA_CHI  ,KANA_YYO  ,KANA_00000},
  192.   {'s','h','a',000,KANA_SHI  ,KANA_YYA  ,KANA_00000},
  193.   {'s','h','u',000,KANA_SHI  ,KANA_YYU  ,KANA_00000},
  194.   {'s','h','o',000,KANA_SHI  ,KANA_YYO  ,KANA_00000},
  195.   {'t','s','a',000,KANA_TSU  ,KANA_YYA  ,KANA_00000},
  196.   {'t','s','o',000,KANA_TSU  ,KANA_YYO  ,KANA_00000},
  197.   {'n','y','a',000,KANA_NI   ,KANA_YYA  ,KANA_00000},
  198.   {'n','y','u',000,KANA_NI   ,KANA_YYU  ,KANA_00000},
  199.   {'n','y','o',000,KANA_NI   ,KANA_YYO  ,KANA_00000},
  200.   {'h','y','a',000,KANA_HI   ,KANA_YYA  ,KANA_00000},
  201.   {'h','y','u',000,KANA_HI   ,KANA_YYU  ,KANA_00000},
  202.   {'h','y','o',000,KANA_HI   ,KANA_YYO  ,KANA_00000},
  203.   {'b','y','a',000,KANA_HI+1 ,KANA_YYA  ,KANA_00000},
  204.   {'b','y','u',000,KANA_HI+1 ,KANA_YYU  ,KANA_00000},
  205.   {'b','y','o',000,KANA_HI+1 ,KANA_YYO  ,KANA_00000},
  206.   {'p','y','a',000,KANA_HI+2 ,KANA_YYA  ,KANA_00000},
  207.   {'p','y','u',000,KANA_HI+2 ,KANA_YYU  ,KANA_00000},
  208.   {'p','y','o',000,KANA_HI+2 ,KANA_YYO  ,KANA_00000},
  209.   {'m','y','a',000,KANA_MI   ,KANA_YYA  ,KANA_00000},
  210.   {'m','y','u',000,KANA_MI   ,KANA_YYU  ,KANA_00000},
  211.   {'m','y','o',000,KANA_MI   ,KANA_YYO  ,KANA_00000},
  212.   {'r','y','a',000,KANA_RI   ,KANA_YYA  ,KANA_00000},
  213.   {'r','y','u',000,KANA_RI   ,KANA_YYU  ,KANA_00000},
  214.   {'r','y','o',000,KANA_RI   ,KANA_YYO  ,KANA_00000},
  215.  
  216.   {'k','k','y','a',KANA_TTSU ,KANA_KI   ,KANA_YYA  },
  217.   {'k','k','y','u',KANA_TTSU ,KANA_KI   ,KANA_YYU  },
  218.   {'k','k','y','o',KANA_TTSU ,KANA_KI   ,KANA_YYO  },
  219.   {'s','s','h','a',KANA_TTSU ,KANA_SHI  ,KANA_YYA  },
  220.   {'s','s','h','i',KANA_TTSU ,KANA_SHI  ,KANA_00000},
  221.   {'s','s','h','u',KANA_TTSU ,KANA_SHI  ,KANA_YYU  },
  222.   {'s','s','h','o',KANA_TTSU ,KANA_SHI  ,KANA_YYO  },
  223.   {'t','c','h','a',KANA_TTSU ,KANA_CHI  ,KANA_YYA  },
  224.   {'t','c','h','i',KANA_TTSU ,KANA_CHI  ,KANA_00000},
  225.   {'t','c','h','u',KANA_TTSU ,KANA_CHI  ,KANA_YYU  },
  226.   {'t','c','h','o',KANA_TTSU ,KANA_CHI  ,KANA_YYO  },
  227.   {'t','t','s','a',KANA_TTSU ,KANA_TSU  ,KANA_YYA  },
  228.   {'t','t','s','u',KANA_TTSU ,KANA_TSU  ,KANA_00000},
  229.   {'t','t','s','o',KANA_TTSU ,KANA_TSU  ,KANA_YYO  },
  230.   {'p','p','y','a',KANA_TTSU ,KANA_HI+2 ,KANA_YYA  },
  231.   {'p','p','y','u',KANA_TTSU ,KANA_HI+2 ,KANA_YYU  },
  232.   {'p','p','y','o',KANA_TTSU ,KANA_HI+2 ,KANA_YYO  },
  233.  
  234.   /* the following 16 + 6 are only written with katakana */
  235.  
  236.   {'j','e',000,000,KANA_SHI+1,KANA_E-1  ,KANA_00000},
  237.   {'w','i',000,000,KANA_U    ,KANA_I-1  ,KANA_00000},
  238.   {'w','e',000,000,KANA_U    ,KANA_E-1  ,KANA_00000},
  239.   {'w','o',000,000,KANA_U    ,KANA_O-1  ,KANA_00000},
  240.   {'t','i',000,000,KANA_TE   ,KANA_I-1  ,KANA_00000},
  241.   {'f','a',000,000,KANA_HU   ,KANA_A-1  ,KANA_00000},
  242.   {'f','i',000,000,KANA_HU   ,KANA_I-1  ,KANA_00000},
  243.   {'f','e',000,000,KANA_HU   ,KANA_E-1  ,KANA_00000},
  244.   {'f','o',000,000,KANA_HU   ,KANA_O-1  ,KANA_00000},
  245.   {'d','i',000,000,KANA_TE+1 ,KANA_I-1  ,KANA_00000},
  246.   {'d','u',000,000,KANA_TE+1 ,KANA_YYU  ,KANA_00000},
  247.   {'v','a',000,000,KANA_VU   ,KANA_A-1  ,KANA_00000},
  248.   {'v','i',000,000,KANA_VU   ,KANA_I-1  ,KANA_00000},
  249.   {'v','u',000,000,KANA_VU   ,KANA_U-1  ,KANA_00000},
  250.   {'v','e',000,000,KANA_VU   ,KANA_E-1  ,KANA_00000},
  251.   {'v','o',000,000,KANA_VU   ,KANA_O-1  ,KANA_00000},
  252.  
  253.   {'s','h','e',000,KANA_SHI  ,KANA_E-1  ,KANA_00000},
  254.   {'c','h','e',000,KANA_CHI  ,KANA_E-1  ,KANA_00000},
  255.   {'k','w','a',000,KANA_KU   ,KANA_A-1  ,KANA_00000},
  256.   {'t','s','a',000,KANA_TSU  ,KANA_A-1  ,KANA_00000},
  257.   {'t','s','e',000,KANA_TSU  ,KANA_E-1  ,KANA_00000},
  258.   {'t','s','o',000,KANA_TSU  ,KANA_O-1  ,KANA_00000}
  259. };
  260.  
  261.  
  262. char* romajitokana(unsigned char* dest, unsigned char* src, int type)
  263. {
  264. int i,j;
  265. int best;
  266. int romnum;
  267.  
  268. *dest=0;
  269.  
  270. for (;;)
  271.   {
  272.   best=-1;
  273.   romnum=-1;
  274.  
  275.   if (strlen(src)>3)
  276.     {
  277.     for (j=KANA_ATOM1+KANA_ATOM2+KANA_ATOM3; j<KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4; j++)
  278.       if ( (rk[j].rom[0]==*(src  )) &&
  279.            (rk[j].rom[1]==*(src+1)) &&
  280.            (rk[j].rom[2]==*(src+2)) &&
  281.            (rk[j].rom[3]==*(src+3)) )
  282.         {
  283.         best=j;
  284.         romnum=4;
  285.         }
  286.     }
  287.  
  288.   if ( (type==KATAKANA) && (best==-1) && (strlen(src)>2) )
  289.     {
  290.     for (j=KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4+KATA_ATOM2; j<KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4+KATA_ATOM2+KATA_ATOM3; j++)
  291.       if ( (rk[j].rom[0]==*(src  )) &&
  292.            (rk[j].rom[1]==*(src+1)) &&
  293.            (rk[j].rom[2]==*(src+2)) )
  294.         {
  295.         best=j;
  296.         romnum=3;
  297.         }
  298.     }
  299.  
  300.   if ( (best==-1) && (strlen(src)>2) )
  301.     {
  302.     for (j=KANA_ATOM1+KANA_ATOM2; j<KANA_ATOM1+KANA_ATOM2+KANA_ATOM3; j++)
  303.       if ( (rk[j].rom[0]==*(src  )) &&
  304.            (rk[j].rom[1]==*(src+1)) &&
  305.            (rk[j].rom[2]==*(src+2)) )
  306.         {
  307.         best=j;
  308.         romnum=3;
  309.         }
  310.     }
  311.  
  312.   if ( (type==KATAKANA) && (best==-1) && (strlen(src)>1) )
  313.     {
  314.     for (j=KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4; j<KANA_ATOM1+KANA_ATOM2+KANA_ATOM3+KANA_ATOM4+KATA_ATOM2; j++)
  315.       if ( (rk[j].rom[0]==*(src  )) &&
  316.            (rk[j].rom[1]==*(src+1)) )
  317.         {
  318.         best=j;
  319.         romnum=2;
  320.         }
  321.     }
  322.  
  323.   if ( (best==-1) && (strlen(src)>1) )
  324.     {
  325.     for (j=KANA_ATOM1; j<KANA_ATOM1+KANA_ATOM2; j++)
  326.       if ( (rk[j].rom[0]==*(src  )) &&
  327.            (rk[j].rom[1]==*(src+1)) )
  328.         {
  329.         best=j;
  330.         romnum=2;
  331.         }
  332.     }
  333.  
  334.   if ( (best==-1) && (*src) )
  335.     {
  336.     for (j=0; j<KANA_ATOM1; j++)
  337.       if (rk[j].rom[0]==*src)
  338.         {
  339.         best=j;
  340.         romnum=1;
  341.         }
  342.     }
  343.  
  344.   if (!*src)
  345.     return dest;
  346.  
  347.   switch (best)
  348.     {
  349.     case -1:
  350.       *dest++=*src++;
  351.       *dest=0;
  352.       break;
  353.     default:
  354.       src+=romnum;
  355.       for (i=0; i<3; i++)
  356.         if (rk[best].kan[i])
  357.           {
  358.           if (type==HIRAGANA)
  359.             *dest++='$'|0x80;
  360.             else
  361.             *dest++='%'|0x80;
  362.           *dest++=(rk[best].kan[i]+'!'-1)|0x80;
  363.           *dest=0;
  364.           }
  365.       break;
  366.     }
  367.   }
  368. }
  369.  
  370.  
  371. char* romajitohiragana(unsigned char* dest, unsigned char* src)
  372. {
  373. char *local;
  374. char *temp;
  375.  
  376. if ((local=malloc(strlen(src)+1))==NULL)
  377.   return 0;
  378.  
  379. strcpy(local,src);
  380.  
  381. temp=local;
  382. while (*temp)
  383.   {
  384.   if (*temp=='l')
  385.     *temp='r';
  386.   temp++;
  387.   }
  388.  
  389. temp=romajitokana(dest,local,HIRAGANA);
  390. free(local);
  391. return temp;
  392. }
  393.  
  394. char* romajitokatakana(unsigned char* dest, unsigned char* src)
  395. {
  396. int i;
  397. char *local;
  398. char *temp;
  399.  
  400. if ((local=malloc(strlen(src)+1))==NULL)
  401.   return 0;
  402.  
  403. strcpy(local,src);
  404.  
  405. temp=local;
  406. while (*temp)
  407.   {
  408.   if (*temp=='l')
  409.     *temp='r';
  410.   temp++;
  411.   }
  412.  
  413. if (strlen(local)>1)
  414.   for (i=0; i<strlen(local)-1; i++)
  415.     switch (local[i])
  416.       {
  417.       case 'a':
  418.       case 'i':
  419.       case 'u':
  420.       case 'e':
  421.       case 'o':
  422.         if (local[i+1]==local[i])
  423.           {
  424.           temp=local+i+1;
  425.           while (*temp==local[i])
  426.             *temp++='-';
  427.           }
  428.       }
  429.  
  430. temp=romajitokana(dest,local,KATAKANA);
  431. free(local);
  432. return temp;
  433. }
  434.  
  435.