commit:     3a19c07b162cb1de41d98cf9d3b523a6397180d5
Author:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed Jun 22 02:34:24 2022 +0000
Commit:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
CommitDate: Sun Jun 26 02:29:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3a19c07b

app-i18n/canna: new package, add 3.7_p3-r4

Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>

 app-i18n/canna/Manifest                            |   2 +
 app-i18n/canna/canna-3.7_p3-r4.ebuild              | 207 +++++++++++++++++++++
 .../canna/files/Canna-3.6-dont-grab-ctrl-o.patch   |  11 ++
 app-i18n/canna/files/Canna-3.6-fix-warnings.patch  |  10 +
 app-i18n/canna/files/Canna-3.6-wconv.patch         |  18 ++
 .../files/Canna-3.7p1-fix-duplicated-strings.patch |  93 +++++++++
 app-i18n/canna/files/Canna-3.7p1-notimeout.patch   |  12 ++
 .../canna/files/Canna-3.7p3-fix-gcc4-warning.patch | 136 ++++++++++++++
 app-i18n/canna/files/Canna-3.7p3-redecl.patch      |  11 ++
 app-i18n/canna/files/Canna-3.7p3-yenbs.patch       |  11 ++
 app-i18n/canna/files/Canna-oldsock.patch           |  29 +++
 .../canna/files/canna-05_fix_spelling_error.patch  |  63 +++++++
 .../canna/files/canna-06_fix_manpages_error.patch  |  37 ++++
 .../files/canna-07_fix_ftbfs_on_hurd-i386.patch    |  16 ++
 .../canna/files/canna-10_fix_configure.ac.patch    |  19 ++
 .../canna-11_fix_spelling_error_in_binary.patch    |  91 +++++++++
 ..._make_the_output_of_mkbindic_reproducible.patch |  61 ++++++
 app-i18n/canna/files/canna-Wformat-security.patch  | 199 ++++++++++++++++++++
 app-i18n/canna/files/canna-Wformat.patch           |  11 ++
 app-i18n/canna/files/canna-canuum.patch            |  34 ++++
 app-i18n/canna/files/canna-gentoo.patch            | 146 +++++++++++++++
 app-i18n/canna/files/canna-kpdef.patch             |  18 ++
 app-i18n/canna/files/canna-overflow.patch          |  20 ++
 app-i18n/canna/files/canna-posix-sort.patch        |  11 ++
 app-i18n/canna/files/canna-respect-flags.patch     |  29 +++
 app-i18n/canna/files/canna-rundir.patch            |  15 ++
 app-i18n/canna/files/canna-tmpfiles.conf           |   2 +
 app-i18n/canna/files/canna.confd                   |   7 +
 app-i18n/canna/files/canna.hosts                   |   1 +
 app-i18n/canna/files/canna.initd                   |  31 +++
 app-i18n/canna/files/canna.service                 |  12 ++
 app-i18n/canna/files/cannaping.c                   |  46 +++++
 app-i18n/canna/files/dot-canna                     | 195 +++++++++++++++++++
 app-i18n/canna/files/update-canna-dics_dir         |  36 ++++
 app-i18n/canna/metadata.xml                        |  12 ++
 35 files changed, 1652 insertions(+)

diff --git a/app-i18n/canna/Manifest b/app-i18n/canna/Manifest
new file mode 100644
index 000000000..56de9dcb2
--- /dev/null
+++ b/app-i18n/canna/Manifest
@@ -0,0 +1,2 @@
+DIST 09_fix_manpages_error.patch 35789 BLAKE2B 
83765aef44cf459922b027d6ea5e083fc793da5cff422fd4aae68d4fd2b921553b32f0d5afb488141dd8b87ceeb3495f256b33a3bb55fcd6c959a117da5ea015
 SHA512 
6b80744743a0421fdac30d4d470f3e0cc53c5aedaa3b9ca0c7b12db587c2dd02333d166fabda428dd8618a36b5b559dfd6a64db44b98d490d8a920703c38f6b4
+DIST Canna37p3.tar.bz2 1263065 BLAKE2B 
b5fb496c0ef71dc57b2da1409eea2238ea62ece3286d498d694bc7a18cb0f5e052dca95d692b4302988acd2199d350b893ae4aedc91aab0b737c3e0675be9cba
 SHA512 
82846f2393aa2654dd2c97a93178098b8bd11e5409b584447f1b6fdf303adacc9802e2293cafd98b68af8b69622625ed00aa9712bf270feaa119adfdf4211158

diff --git a/app-i18n/canna/canna-3.7_p3-r4.ebuild 
b/app-i18n/canna/canna-3.7_p3-r4.ebuild
new file mode 100644
index 000000000..16d07b2a7
--- /dev/null
+++ b/app-i18n/canna/canna-3.7_p3-r4.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools cannadic edo systemd tmpfiles toolchain-funcs
+
+MY_P="Canna${PV//[._]/}"
+MYPV="${PV/_/}"
+
+DESCRIPTION="A client-server based Kana-Kanji conversion system"
+HOMEPAGE="http://canna.osdn.jp/";
+SRC_URI="
+       mirror://sourceforge.jp/${PN}/9565/${MY_P}.tar.bz2
+       
https://sources.debian.org/data/main/c/${PN}/${MYPV}-19/debian/patches/09_fix_manpages_error.patch
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="MIT GPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="canuum doc ipv6"
+
+RDEPEND="
+       acct-group/canna
+       acct-user/canna
+       canuum? (
+               dev-libs/libspt
+               sys-libs/ncurses:=
+       )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       x11-misc/gccmakedep
+       x11-misc/imake
+       canuum? ( virtual/pkgconfig )
+       doc? (
+               app-text/ghostscript-gpl
+               dev-texlive/texlive-langjapanese
+               dev-texlive/texlive-latexrecommended
+       )
+"
+PATCHES=(
+       "${FILESDIR}/Canna-3.6-dont-grab-ctrl-o.patch"
+       "${FILESDIR}/Canna-oldsock.patch"
+       "${FILESDIR}/Canna-3.6-fix-warnings.patch"
+       "${FILESDIR}/Canna-3.6-wconv.patch"
+       "${FILESDIR}/Canna-3.7p1-fix-duplicated-strings.patch"
+       "${FILESDIR}/Canna-3.7p1-notimeout.patch"
+       "${FILESDIR}/Canna-3.7p3-fix-gcc4-warning.patch"
+       "${FILESDIR}/Canna-3.7p3-redecl.patch"
+       "${FILESDIR}/Canna-3.7p3-yenbs.patch"
+       "${FILESDIR}/${PN}-gentoo.patch"
+       "${FILESDIR}/${PN}-05_fix_spelling_error.patch"
+       "${FILESDIR}/${PN}-06_fix_manpages_error.patch"
+       "${FILESDIR}/${PN}-07_fix_ftbfs_on_hurd-i386.patch"
+       "${FILESDIR}/${PN}-Wformat.patch"
+       "${FILESDIR}/${PN}-Wformat-security.patch"
+       "${DISTDIR}/09_fix_manpages_error.patch"
+       "${FILESDIR}/${PN}-10_fix_configure.ac.patch"
+       "${FILESDIR}/${PN}-11_fix_spelling_error_in_binary.patch"
+       "${FILESDIR}/${PN}-12_make_the_output_of_mkbindic_reproducible.patch"
+       "${FILESDIR}/${PN}-canuum.patch"
+       "${FILESDIR}/${PN}-kpdef.patch"
+       "${FILESDIR}/${PN}-overflow.patch"
+       "${FILESDIR}/${PN}-posix-sort.patch"
+       "${FILESDIR}/${PN}-respect-flags.patch"
+       "${FILESDIR}/${PN}-rundir.patch"
+)
+
+src_prepare() {
+       tc-export CC LD AR
+       export CDEBUGFLAGS="${CFLAGS}"
+       export LOCAL_LDFLAGS="${LDFLAGS}"
+       export SHLIBGLOBALSFLAGS="${LDFLAGS}"
+       export LOCAL_LDFLAGS="${LDFLAGS}"
+       export CCOPTIONS="${CFLAGS} ${CPPFLAGS}"
+
+       default
+
+       sed \
+               -e "/DefLibCannaDir/s:/lib$:/$(get_libdir):" \
+               -e "/UseInet6/s:0:$(usex ipv6 1 0):" \
+               -i ${PN^c}.conf \
+               || die
+
+       eautoreconf
+       rm -rf autom4te.cache || die
+       if use canuum; then
+               pushd canuum || die
+               mv configure.{in,ac} || die
+               eautoreconf
+               rm -rf autom4te.cache || die
+               popd || die
+       fi
+}
+
+src_configure() {
+       xmkmf -a || die
+
+       if use canuum; then
+               pushd canuum >/dev/null || die
+               xmkmf -a || die
+               # workaround for sys-libs/ncurses[tinfo]
+               sed -i "/^TERMCAP_LIB/s:=.*:=$($(tc-getPKG_CONFIG) --libs 
ncurses):" Makefile || die
+               popd >/dev/null || die
+       fi
+       if use doc; then
+               pushd doc/man/guide/tex >/dev/null || die
+               xmkmf -a || die
+               popd >/dev/null || die
+       fi
+}
+
+src_compile() {
+       # bug #279706
+       emake -j1 canna \
+               CC="${CC}" \
+               AR="${AR} -cq" \
+               CDEBUGFLAGS="${CFLAGS}" \
+               LOCAL_LDFLAGS="${LDFLAGS}" \
+               SHLIBGLOBALSFLAGS="${LDFLAGS}" \
+               CCOPTIONS="${CFLAGS} ${CPPFLAGS}"
+
+       edo ${CC} ${CFLAGS} ${LDFLAGS} -fPIE "${FILESDIR}/cannaping.c" -o 
./misc/cannaping -I./include -L./lib/canna -lcanna
+
+       if use canuum; then
+               einfo "Compiling canuum"
+               emake -C canuum -j1 canuum \
+                       CC="${CC}" \
+                       AR="${AR} -cq" \
+                       CDEBUGFLAGS="${CFLAGS}" \
+                       LOCAL_LDFLAGS="${LDFLAGS}" \
+                       SHLIBGLOBALSFLAGS="${LDFLAGS}" \
+                       CCOPTIONS="${CFLAGS} ${CPPFLAGS}"
+       fi
+
+       if use doc; then
+               # NOTE: build fails if infinality enabled in fontconfig
+               einfo "Compiling DVI, PS, and PDF documents"
+               # bug #223077
+               export JLATEXCMD="platex -kanji=euc"
+               export DVI2PSCMD="dvips"
+               export VARTEXFONTS="${T}/fonts"
+               emake -C doc/man/guide/tex -j1 canna.ps canna.pdf
+       fi
+}
+
+src_install() {
+       emake DESTDIR="${D}" install install.man
+       einstalldocs
+       dodoc *CHANGES* INSTALL* RKCCONF* WHATIS*
+
+       if use canuum; then
+               emake -C canuum DESTDIR="${D}" install install.man
+               docinto canuum
+               dodoc README.jp
+       fi
+
+       use doc && dodoc doc/man/guide/tex/canna.{dvi,ps,pdf}
+
+       # for backward compatibility
+       dosbin "${FILESDIR}/update-canna-dics_dir"
+
+       dobin ./misc/cannaping
+       exeinto /usr/libexec/canna
+       doexe dic/ideo/pubdic/pod
+
+       insinto /etc
+       newins "${FILESDIR}/canna.hosts" hosts.canna
+
+       insinto /etc/canna
+       newins "${FILESDIR}/dot-canna" "default.canna"
+       newins "${FILESDIR}/canna.hosts" "cannahosts"
+
+       insinto /etc/canna/dics.dir.d
+       newins "${ED}/var/lib/canna/dic/canna/dics.dir" 00canna.dics.dir
+       rm -r "${ED}/var/lib/canna/dic/canna/dics.dir" || die
+
+       keepdir /var/lib/canna/dic/{user,group}
+       fowners canna:canna /var/lib/canna
+       fperms 0775 /var/lib/canna/dic/{user,group}
+
+       keepdir /var/log/canna
+       fowners canna:canna /var/log/canna
+
+       newconfd "${FILESDIR}/canna.confd" canna
+       newinitd "${FILESDIR}/canna.initd" canna
+
+       systemd_dounit "${FILESDIR}/canna.service"
+       newtmpfiles "${FILESDIR}/canna-tmpfiles.conf" "canna.conf"
+
+       find "${ED}" -type f -name "*.a" -delete || die
+}
+
+pkg_postinst() {
+       tmpfiles_process canna.conf
+       update-cannadic-dir
+
+       if ! locale -a | grep -iq "ja_JP.eucjp"; then
+               elog "Some dictionary tools in this package require 
ja_JP.EUC-JP locale."
+               elog
+               elog "# echo 'ja_JP.EUC-JP EUC-JP' >> ${EROOT}/etc/locale.gen"
+               elog "# locale-gen"
+               elog
+       fi
+}

diff --git a/app-i18n/canna/files/Canna-3.6-dont-grab-ctrl-o.patch 
b/app-i18n/canna/files/Canna-3.6-dont-grab-ctrl-o.patch
new file mode 100644
index 000000000..c5fccdbd7
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.6-dont-grab-ctrl-o.patch
@@ -0,0 +1,11 @@
+--- a/lib/canna/alphamap.h
++++ b/lib/canna/alphamap.h
+@@ -65,7 +65,7 @@
+ /* C-l */       CANNA_FN_SelfInsert,
+ /* C-m */       CANNA_FN_SelfInsert,
+ /* C-n */       CANNA_FN_SelfInsert,
+-/* C-o */       CANNA_FN_JapaneseMode,
++/* C-o */       CANNA_FN_SelfInsert,
+ /* C-p */       CANNA_FN_SelfInsert,
+ /* C-q */       CANNA_FN_SelfInsert,
+ /* C-r */       CANNA_FN_SelfInsert,

diff --git a/app-i18n/canna/files/Canna-3.6-fix-warnings.patch 
b/app-i18n/canna/files/Canna-3.6-fix-warnings.patch
new file mode 100644
index 000000000..74f134eb1
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.6-fix-warnings.patch
@@ -0,0 +1,10 @@
+--- a/lib/canna/kctrl.c
++++ b/lib/canna/kctrl.c
+@@ -27,6 +27,7 @@
+ #include "canna.h"
+ 
+ #include <errno.h>
++#include <string.h>
+ #include <sys/types.h>
+ #include <canna/mfdef.h>
+ 

diff --git a/app-i18n/canna/files/Canna-3.6-wconv.patch 
b/app-i18n/canna/files/Canna-3.6-wconv.patch
new file mode 100644
index 000000000..90fa049f0
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.6-wconv.patch
@@ -0,0 +1,18 @@
+--- a/server/wconvert.c
++++ b/server/wconvert.c
+@@ -2096,12 +2096,12 @@
+   char *buf = (char *)0;
+ 
+   if (validcontext(cxnum, client, wThrough)) {
+-    buf = malloc((int)Request.type20.bufsize);
++    content_size = Request.type20.datalen - (SIZEOFINT * 2 + SIZEOFSHORT);
++    buf = malloc(content_size);
+     if (buf) {
+-      content_size = Request.type20.datalen - (SIZEOFINT * 2 + SIZEOFSHORT);
+       bcopy(Request.type20.buf, buf, content_size);
+       stat = size = RkThrough(cxnum, Request.type20.command,
+-                            buf, content_size, (int)Request.type20.bufsize);
++                            buf, content_size, content_size);
+     }
+   }
+   retval = SendType6Reply(client, wThrough, EXTPROTO, stat, buf, size);

diff --git a/app-i18n/canna/files/Canna-3.7p1-fix-duplicated-strings.patch 
b/app-i18n/canna/files/Canna-3.7p1-fix-duplicated-strings.patch
new file mode 100644
index 000000000..303f79255
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.7p1-fix-duplicated-strings.patch
@@ -0,0 +1,93 @@
+--- a/lib/canna/romaji.c
++++ b/lib/canna/romaji.c
+@@ -21,7 +21,7 @@
+  */
+ 
+ #if !defined(lint) && !defined(__CODECENTER__)
+-static char rcs_id[] = "@(#) 102.1 $Id: romaji.c,v 1.10 2003/09/17 08:50:53 
aida_s Exp $";
++static char rcs_id[] = "@(#) 102.1 $Id: romaji.c,v 1.11 2004/03/15 04:33:23 
aida_s Exp $";
+ #endif /* lint */
+ 
+ #include "canna.h"
+@@ -2626,6 +2626,7 @@
+   yc->englishtype = CANNA_ENG_KANA;
+   yc->cStartp = yc->cRStartp = 0;
+   yc->jishu_kEndp = 0;
++  yc->n_susp_chars = 0;
+ }
+ 
+ static int
+@@ -2782,8 +2783,13 @@
+   }
+   yc->last_rule = 0;
+   howManyDelete = howFarToGoBackward(yc);
+-  if (howManyDelete > 0 && (yc->generalFlags & CANNA_YOMI_BREAK_ROMAN)) {
+-    yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
++  if (howManyDelete > 0 && (yc->generalFlags & CANNA_YOMI_BREAK_ROMAN)
++      && (yc->kAttr[yc->kCurs] & SENTOU)) {
++    /*
++     * ���޻�1ʸ����б�벾̾��ä�����ϥ��޻�̾�Ȥ�
++     * SENTOU�ե饰��1�ĸ��롣
++     * �����Ǥʤ��Ȥ���SENTOU�ե饰�θĿ���Ѥ��ʤ�
++     */
+     yc->rStartp = yc->rCurs - 1;
+     while ( yc->rStartp > 0 && !(yc->rAttr[yc->rStartp] & SENTOU) ) {
+       yc->rStartp--;
+@@ -2792,16 +2798,23 @@
+     yc->kRStartp = yc->kCurs - 1;
+     while ( yc->kRStartp > 0 && !(yc->kAttr[yc->kRStartp] & SENTOU) )
+       yc->kRStartp--;
++    /* ����ɬ�����Ǥ�? */
+     prevflag = (yc->kAttr[yc->kRStartp] & SENTOU);
+     kanaReplace(yc->kRStartp - yc->kCurs, 
+               yc->romaji_buffer + yc->rStartp,
+               yc->rCurs - yc->rStartp,
+               0);
++    /* ���޻�1ʸ����б�벾̾��ä����Ȥ��Ϻǽ餫��SENTOU�Ǥ��� */
+     yc->kAttr[yc->kRStartp] |= prevflag;
+     yc->n_susp_chars = 0; /* �Ȥꤢ�������ꥢ���Ƥ��� */
+     makePhonoOnBuffer(d, yc, (unsigned char)0, 0, 0);
++    /* �����Ͼ�˥ե饰�򲼤��Ƥ�������̤�Ѵ����޻�ĤäƤ���Ȥ���
++     * �ե饰�򲼤��ʤ����Ȥˤ��� */
++    if (yc->kRStartp == yc->kCurs)
++      yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
+   }
+   else {
++    yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
+     if ( yc->kAttr[yc->kCurs - howManyDelete] & HENKANSUMI ) {
+       if (yc->kAttr[yc->kCurs - howManyDelete] & SENTOU) { 
+       /* ���޻���Ѵ�����Ƭ���ä��� */
+@@ -2821,6 +2834,12 @@
+         yc->rEndp -= n;
+       }
+       else {
++        /* ��̾�Υ���������֤���Ƭ�ˤʤ�Τǥ��޻�Υ��������ư����*/
++        while ( yc->rCurs > 0 && !(yc->rAttr[--yc->rCurs] & SENTOU) )
++          ;
++        if (yc->rCurs < yc->rStartp) {
++          yc->rStartp = yc->rCurs;
++        }
+         yc->kAttr[yc->kCurs] |= SENTOU;
+       }
+       }
+@@ -2829,6 +2848,12 @@
+       romajiReplace(-howManyDelete, (wchar_t *)NULL, 0, 0);
+     }
+     kanaReplace(-howManyDelete, (wchar_t *)NULL, 0, 0);
++    if ((yc->rAttr[yc->rCurs] & SENTOU) && yc->kRStartp == yc->kCurs) {
++      /* ̤�Ѵ��Υ��޻��ä��Ƥ��ޤä��Τǡ��������Ϥ������޻��
++       * SENTOU�ˤʤ���������
++       */
++      yc->rStartp = yc->rCurs;
++    }
+   }
+   debug_yomi(yc);
+   return(0);
+@@ -2944,6 +2969,7 @@
+     currentModeInfo(d);
+   }
+   makeYomiReturnStruct(d);
++  debug_yomi(yc);
+   return 0;
+ }
+ 

diff --git a/app-i18n/canna/files/Canna-3.7p1-notimeout.patch 
b/app-i18n/canna/files/Canna-3.7p1-notimeout.patch
new file mode 100644
index 000000000..3f27a32cc
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.7p1-notimeout.patch
@@ -0,0 +1,12 @@
+バイナリー・ファイルCanna37p1.orig/lib/RKC/.wconvert.c.swpとCanna37p1/lib/RKC/.wconvert.c.swpは違います
+--- a/lib/RKC/conf.c
++++ b/lib/RKC/conf.c
+@@ -1496,7 +1496,7 @@
+ };
+ 
+ const NumberDefaultRec host_num_defaults[] = {
+-  { CONF_SERVER_TIMEOUT, 1500u },
++  { CONF_SERVER_TIMEOUT, 0u },
+ };
+ 
+ const char *

diff --git a/app-i18n/canna/files/Canna-3.7p3-fix-gcc4-warning.patch 
b/app-i18n/canna/files/Canna-3.7p3-fix-gcc4-warning.patch
new file mode 100644
index 000000000..42e9ee3a8
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.7p3-fix-gcc4-warning.patch
@@ -0,0 +1,136 @@
+--- a/cmd/crxgram/crxgram.c
++++ b/cmd/crxgram/crxgram.c
+@@ -485,7 +485,7 @@
+           int j;
+ 
+           nextS = scanToken(nextS, namevec, sizeof(namevec));
+-          name = strtok(namevec, SEP);
++          name = strtok((char *)namevec, SEP);
+           for (j = 0; name && j < 255;) {
+               if (r = probeIdent(Row, name))
+                   rdata[i][j++] = r->rownum;
+--- a/cmd/cshost/cshost.c
++++ b/cmd/cshost/cshost.c
+@@ -152,12 +152,12 @@
+           goto protoerr;
+       assert(wp + 2 <= endp);
+       printf("HOST NAME:%s\n", wp ) ;
+-      wp += strlen( wp ) + 1 ;
++      wp += strlen((char *) wp ) + 1 ;
+       if( *wp ) {
+           printf("USER NAME:" ) ;
+           while( *wp ) {
+               printf("%s ", wp ) ;
+-              wp += strlen( wp ) + 1 ;
++              wp += strlen((char *) wp ) + 1 ;
+           }
+       } else
+           printf("ALL USER" ) ;
+--- a/cmd/wtoc/wtoc.c
++++ b/cmd/wtoc/wtoc.c
+@@ -144,8 +144,8 @@
+      int      hindo;
+ {
+   if( !strcmp((char *)hinshi,"#kxuru") || !strcmp((char *)hinshi,"#sxuru")){
+-    strcat(yomi,"��");
+-    strcat(kouho,"��");
++    strcat((char *)yomi,"��");
++    strcat((char *)kouho,"��");
+   }
+   if( hindo == 0 )
+     fprintf( fp, "%s %s %s \n", yomi, hinshi, kouho );
+--- a/lib/canna/ebind.c
++++ b/lib/canna/ebind.c
+@@ -364,7 +364,7 @@
+     /* list_cb��KC_setListCallback��d->elistcb�˰�ñۤ� */
+     list_cb.client_data = (char *)arg;
+     list_cb.callback_func = &EUCListCallback;
+-    ret = XwcKanjiControl2(display, window, request, (char *)&list_cb);
++    ret = XwcKanjiControl2(display, window, request, (BYTE *)&list_cb);
+     goto return_ret;
+     /* FALLTHROUGH */
+   default: /* �磻�ɤǤ�EUC�Ǥ��Ѥ��ʤ���� */
+--- a/lib/canna/obind.c
++++ b/lib/canna/obind.c
+@@ -500,7 +500,7 @@
+     /* list_cb��KC_setListCallback��d->elistcb�˰�ñۤ� */
+     list_cb.client_data = (char *)arg;
+     list_cb.callback_func = &owcListCallback;
+-    ret = XwcKanjiControl2(display, window, request, (char *)&list_cb);
++    ret = XwcKanjiControl2(display, window, request, (BYTE *)&list_cb);
+     goto return_ret;
+   default: /* ���磻�ɤ��Ѥ��ʤ���� */
+     ret = XwcKanjiControl2(display, window, request, arg);
+--- a/server/convert.c
++++ b/server/convert.c
+@@ -1506,7 +1506,7 @@
+ const char *username;
+ const char *hostname;
+ {
+-    int (*ReqCallFunc) pro((char *, int)) ;
++    int (*ReqCallFunc) pro((BYTE *, int)) ;
+     register Req0 *req0 = &Request.Request0 ;
+     const char *username0 = username ? username : "";
+     const char *hostname0 = hostname ? hostname : "";
+--- a/server/wconvert.c
++++ b/server/wconvert.c
+@@ -189,7 +189,7 @@
+ size_t size;
+ {
+     ir_debug( Dmsg(10, "WriteClient:") );
+-    ir_debug( DebugDump( 10, buf, size ) );
++    ir_debug( DebugDump( 10, (const char *)buf, size ) );
+     return ClientBuf_store_reply(client->client_buf, buf, size);
+ }
+ #else
+@@ -1372,8 +1372,8 @@
+       /* �ʲ����ѡ��ߥå����Υ����å� */
+       stat = ACCES;
+       if (checkPermissionToRead(client, dirname, (char *)0) >= 0) {
+-        stat = RkwListDic(cxnum, (unsigned char *)dirname,
+-                          (unsigned char *)dicnames, requestsize);
++        stat = RkwListDic(cxnum, (char *)dirname,
++                          (char *)dicnames, requestsize);
+       }
+ 
+       listdicdone:
+@@ -1403,7 +1403,7 @@
+       ir_debug( Dmsg(5, "dicname = %s\n",
+                      (req->dicname)?req->dicname:null) );
+ 
+-      stat = (char)RkwCreateDic(cxnum, (unsigned char *)req->dicname,
++      stat = (char)RkwCreateDic(cxnum, (char *)req->dicname,
+                                 req->mode);
+     }
+ 
+@@ -1438,7 +1438,7 @@
+       ir_debug( Dmsg(5, "dicname = %s\n",
+                      (req->dicname)?req->dicname:null) );
+ 
+-      stat = (char)RkwRemoveDic(cxnum, (unsigned char *)req->dicname,
++      stat = (char)RkwRemoveDic(cxnum, (char *)req->dicname,
+                                 req->mode);
+     }
+ 
+@@ -1456,8 +1456,8 @@
+ 
+     if (validcontext(cxnum, client, wRenameDictionary)) {
+       diclen = strlen(req->dicname) + 1 ;
+-      stat = RkwRenameDic(cxnum, (unsigned char *)req->dicname,
+-                          (unsigned char *)&(req->dicname)[diclen],
++      stat = RkwRenameDic(cxnum, (char *)req->dicname,
++                          (char *)&(req->dicname)[diclen],
+                           req->mode);
+     }
+     return SendType2Reply(client, wRenameDictionary, EXTPROTO, stat);
+@@ -1950,8 +1950,8 @@
+       ir_debug( Dmsg(5, "dicname = %s\n", Request.type15.dicname) );
+       ir_debug( Dmsg(5, "username = %s\n", username) );
+       
+-      stat = (RkwQueryDic(cxnum, (unsigned char *)username,
+-                        (unsigned char *)Request.type15.dicname,
++      stat = (RkwQueryDic(cxnum, (char *)username,
++                        (char *)Request.type15.dicname,
+                         dicinfo) < 0) ? -1 : 0;
+       
+       if (stat < 0) {

diff --git a/app-i18n/canna/files/Canna-3.7p3-redecl.patch 
b/app-i18n/canna/files/Canna-3.7p3-redecl.patch
new file mode 100644
index 000000000..816b73887
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.7p3-redecl.patch
@@ -0,0 +1,11 @@
+--- a/lib/canna/lisp.c
++++ b/lib/canna/lisp.c
+@@ -1355,8 +1355,6 @@
+ static int
+ tyi()
+ {
+-  char *gets(), *fgets();
+-
+   if (untyibuf) {
+     int ret = untyibuf[--untyip];
+     if (untyip == 0) {

diff --git a/app-i18n/canna/files/Canna-3.7p3-yenbs.patch 
b/app-i18n/canna/files/Canna-3.7p3-yenbs.patch
new file mode 100644
index 000000000..837fecdca
--- /dev/null
+++ b/app-i18n/canna/files/Canna-3.7p3-yenbs.patch
@@ -0,0 +1,11 @@
+--- a/lib/RK/RkGetDic.man
++++ b/lib/RK/RkGetDic.man
+@@ -41,7 +41,7 @@
+ Dictionary names are got in the area \f2dics\f1 in the following format:
+ .P
+ .RS 0.2c
+-dictionary-name-1 ��0 dictionary-name-2 ��0 ... dictionary-name-n ��0 ��0
++dictionary-name-1 \\0 dictionary-name-2 \\0 ... dictionary-name-n \\0 \\0
+ .RE
+ .P
+ The size of the area \f2dics\f1 is given in bytes by \f2maxdics\f1.  The 
dictionary list is truncated in character strings when it exceeds this size.

diff --git a/app-i18n/canna/files/Canna-oldsock.patch 
b/app-i18n/canna/files/Canna-oldsock.patch
new file mode 100644
index 000000000..f62ee6c97
--- /dev/null
+++ b/app-i18n/canna/files/Canna-oldsock.patch
@@ -0,0 +1,29 @@
+--- a/lib/RKC/wconvert.c
++++ b/lib/RKC/wconvert.c
+@@ -150,8 +150,25 @@
+     if ((ServerFD = socket((int) addr->sa_family, SOCK_STREAM, 0)) >= 0){
+       if( try_connect( ServerFD, addr, sizeof unaddr ) < 0 ) {
+           close( ServerFD ) ;
+-          return( -1 ) ;
++          ServerFD = -1;
++      }
++    }
++    if (ServerFD < 0) {
++      /* for the backward compatibility */
++#define OLD_IR_UNIX_PATH      "/tmp/.iroha_unix/IROHA"
++
++      if (number)
++          sprintf (unaddr.sun_path, "%s:%d", OLD_IR_UNIX_PATH, number);
++      else
++          strcpy (unaddr.sun_path, OLD_IR_UNIX_PATH);
++
++      if ((ServerFD = socket ((int) addr->sa_family, SOCK_STREAM, 0)) >= 0) {
++          if (try_connect (ServerFD, addr, sizeof (unaddr)) < 0) {
++              close (ServerFD);
++              return -1;
++          }
+       }
++#undef OLD_IR_UNIX_PATH
+     }
+     return( ServerFD ) ;
+ }    

diff --git a/app-i18n/canna/files/canna-05_fix_spelling_error.patch 
b/app-i18n/canna/files/canna-05_fix_spelling_error.patch
new file mode 100644
index 000000000..372c7a627
--- /dev/null
+++ b/app-i18n/canna/files/canna-05_fix_spelling_error.patch
@@ -0,0 +1,63 @@
+## 06_fix_spelling_error by HIGUCHI Daisuke (VDR dai) <[email protected]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: eliminate lintian warning: spelling-error-in-{binary,manpages}
+
+--- a/cmd/wtoc/wtoc.c
++++ b/cmd/wtoc/wtoc.c
+@@ -195,7 +195,7 @@ main(argc,argv)
+ #endif
+   }
+   else { /* ������� */
+-    fprintf(stderr,gettxt("cannacmd:50", "Usage: wtoc [-f part-of-speach 
table] [wnndic] [cannadic]\n"));
++    fprintf(stderr,gettxt("cannacmd:50", "Usage: wtoc [-f part-of-speech 
table] [wnndic] [cannadic]\n"));
+     exit(2);
+   }
+   if( argc >= (2 + option*2) ) { /* �ף���򥪡��ץ� */
+--- a/cmd/ctow/ctow.c
++++ b/cmd/ctow/ctow.c
+@@ -256,9 +256,9 @@ char *argv[];
+       hinshis = chghinshi(h, hinshiSize, taiou, fsize);
+       if (!strcmp(hinshis,"")) {
+       fprintf(stderr,gettxt("cannacmd:13", 
+-            "reading:%s nomination:%s a part of speach:%s\n"),y,k,h);
++            "reading:%s nomination:%s a part of speech:%s\n"),y,k,h);
+       fprintf(stderr,gettxt("cannacmd:14", 
+-            "This part of speach is undefined. Cannot convert.\n"));
++            "This part of speech is undefined. Cannot convert.\n"));
+       }
+       else {
+       for ( ; *hinshis; hinshis++, p++) {
+--- a/lib/canna/lisp.c
++++ b/lib/canna/lisp.c
+@@ -3610,7 +3610,7 @@
+         numtostr(xnum(e2), ee);
+         num = howManyCharsAre(ss, ee, &sku, &sten, &cs);
+         if (num <= 0) {
+-          error("Inconsistent range of charcter code ", buf);
++          error("Inconsistent range of character code ", buf);
+           /* NOTREACHED */
+         }
+         kigolen = kigolen + (cswidth[cs] + 1) * num;
+--- a/lib/canna/uilib.man
++++ b/lib/canna/uilib.man
+@@ -809,7 +809,7 @@ data input:
+           int length;                 /* length of echo string */
+           int revPos;                 /* reverse position  */
+           int revLen;                 /* reverse length    */
+-          unsigned long info;         /* other informations */
++          unsigned long info;         /* other information */
+           unsigned char *mode;        /* mode information */
+           struct {
+               unsigned char *line;    /* a grance of Kanji characters */
+--- a/lib/canna/uilib.jmn
++++ b/lib/canna/uilib.jmn
+@@ -749,7 +749,7 @@ XCompose��¤�ΤؤΥݥ��󥿤���ꤷ�ޤ���
+           int revPos;                 /* reverse position  */
+           int revLen;                 /* reverse length    */
+ .mc \(br
+-          unsigned long info;         /* other informations */
++          unsigned long info;         /* other information */
+           unsigned char *mode;        /* mode information */
+           struct {
+               unsigned char *line;    /* a grance of Kanji characters */

diff --git a/app-i18n/canna/files/canna-06_fix_manpages_error.patch 
b/app-i18n/canna/files/canna-06_fix_manpages_error.patch
new file mode 100644
index 000000000..7b1cd0328
--- /dev/null
+++ b/app-i18n/canna/files/canna-06_fix_manpages_error.patch
@@ -0,0 +1,37 @@
+## 07_fix_manpage_error by HIGUCHI Daisuke (VDR dai) <[email protected]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: eliminate lintian warning: manpage-has-errors-from-man
+
+--- a/cmd/dpromdic/dpromdic.man
++++ b/cmd/dpromdic/dpromdic.man
+@@ -1,7 +1,7 @@
+ .TH DPROMDIC 1 
+-.S HNAME
++.SH NAME
+ dpromdic \- Convert the binary-form Romaji-to-Kana conversion table into the 
text-form table
+-.SHSYNOPSYS
++.SH SYNOPSYS
+ .B dpromdic
+ [
+ .I file
+--- a/cmd/dicar/dicar.man
++++ b/cmd/dicar/dicar.man
+@@ -28,7 +28,7 @@ dicar \- Archive Binary Dictionary
+ archives binary dictionary
+ .I bindic1.
+ The hyphen of each option may be omitted.
+-.OPTIONS
++.SH OPTIONS
+ .TP
+ .B \-t
+ Displays the dictionaries contained in binary dictionary file
+--- a/cmd/cshost/cshost.man
++++ b/cmd/cshost/cshost.man
+@@ -1,5 +1,5 @@
+ .TH CSHOST 1
+-.SH "NAMES"
++.SH "NAME"
+ cshost \- Server access control program for canna
+ .SH "SYNOPSIS"
+ .B "cshost [{\-cs|\-cannaserver} \fIcannaserver\fP]"

diff --git a/app-i18n/canna/files/canna-07_fix_ftbfs_on_hurd-i386.patch 
b/app-i18n/canna/files/canna-07_fix_ftbfs_on_hurd-i386.patch
new file mode 100644
index 000000000..2b3bc3c07
--- /dev/null
+++ b/app-i18n/canna/files/canna-07_fix_ftbfs_on_hurd-i386.patch
@@ -0,0 +1,16 @@
+## 08_fix_ftbfs_on_hurd-i386 by HIGUCHI Daisuke (VDR dai) <[email protected]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: fix FTBFS on hurd-i386. use O_RDONLY instead of bare 0.
+
+--- a/cmd/crxdic/crxdic.c
++++ b/cmd/crxdic/crxdic.c
+@@ -1228,7 +1228,7 @@ main (argc, argv)
+     if (!(dic->gramdata = RkiReadWholeFile(fp, &dic->gramsz)))
+       goto gram_err;
+     fclose(fp);
+-    if ((fd = open(gfile, 0)) < 0 || !(gram = RkReadGram(fd, dic->gramsz)))
++    if ((fd = open(gfile, O_RDONLY)) < 0 || !(gram = RkReadGram(fd, 
dic->gramsz)))
+       goto gram_err;
+     close(fd);
+     goto gram_ok;

diff --git a/app-i18n/canna/files/canna-10_fix_configure.ac.patch 
b/app-i18n/canna/files/canna-10_fix_configure.ac.patch
new file mode 100644
index 000000000..d53f3f233
--- /dev/null
+++ b/app-i18n/canna/files/canna-10_fix_configure.ac.patch
@@ -0,0 +1,19 @@
+Description: fix FTBFS caused after the DH level has bumped.
+Author: Francisco Vilmar Cardoso Ruviaro <[email protected]>
+Last-Update: 2020-06-20
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,9 +3,9 @@ AC_INIT([canna], [3.7p3], [canna-dev@lis
+ AC_CONFIG_SRCDIR([WHATIS.jp])
+ AC_CONFIG_HEADER([accanna.h])
+ 
+-if test "x$IN_MAKE" != xyes; then
+-  AC_MSG_ERROR([You cannot invloke configure directly.])
+-fi
++#if test "x$IN_MAKE" != xyes; then
++#  AC_MSG_ERROR([You cannot invloke configure directly.])
++#fi
+ 
+ # Checks for programs.
+ AC_PROG_CC

diff --git a/app-i18n/canna/files/canna-11_fix_spelling_error_in_binary.patch 
b/app-i18n/canna/files/canna-11_fix_spelling_error_in_binary.patch
new file mode 100644
index 000000000..77ff26b27
--- /dev/null
+++ b/app-i18n/canna/files/canna-11_fix_spelling_error_in_binary.patch
@@ -0,0 +1,91 @@
+Description: Fix spelling error in binaries.
+Author: Francisco Vilmar Cardoso Ruviaro <[email protected]>
+Last-Update: 2020-07-16
+
+--- a/cmd/catdic/can.c
++++ b/cmd/catdic/can.c
+@@ -281,7 +281,7 @@ int sig;
+      */
+     (void) RkFinalize();
+     fprintf(stderr,"\n");
+-    Message(gettxt("cannacmd:232", "Process was intrrupted."));
++    Message(gettxt("cannacmd:232", "Process was interrupted."));
+     exit(ERR_VALUE);
+ }
+ 
+@@ -323,7 +323,7 @@ int sig;
+       (void) RkFinalize();
+     }
+     
+-    Message(gettxt("cannacmd:232", "Process was intrrupted."));
++    Message(gettxt("cannacmd:232", "Process was interrupted."));
+     exit(ERR_VALUE);
+ }
+ 
+@@ -1475,7 +1475,7 @@ int force;
+     }
+     else {
+       fprintf(stderr, gettxt("cannacmd:174",
+-           "Specified dictionary \"%s\" does not overwite.\n"),dicname2);
++           "Specified dictionary \"%s\" does not overwrite.\n"),dicname2);
+       ret = 1;
+     }
+     break;
+--- a/cmd/crfreq/crfreq.c
++++ b/cmd/crfreq/crfreq.c
+@@ -199,7 +199,7 @@ main(argc, argv)
+ 
+   if ((fr = create(freqfile, 0666)) == -1) {
+     (void)close(fd);
+-    (void)fprintf(stderr, "%s: cannot create freqency file %s\n", program, 
freqfile);
++    (void)fprintf(stderr, "%s: cannot create frequency file %s\n", program, 
freqfile);
+     exit(1);
+   }
+ #ifdef __CYGWIN32__
+--- a/server/convert.c
++++ b/server/convert.c
+@@ -887,7 +887,7 @@ ClientPtr *clientp ;
+       if ((ret = RkwStoreYomi( cxnum, (Ushort *)cbuf, ret )) >= 0) {
+           size = getFirstKouho(cxnum, bunsetu, ret, &stat, &lbufp);
+       } else {
+-          PrintMsg("%s RkwStoreYomi faild\n", irerrhdr(client));
++          PrintMsg("%s RkwStoreYomi failed\n", irerrhdr(client));
+       }
+     } else {
+       print_context_error(client);
+--- a/server/misc.c
++++ b/server/misc.c
+@@ -316,7 +316,7 @@ BecomeDaemon ()
+ 
+ #ifndef __EMX__
+     if ((parent = fork()) == -1) {
+-      PrintMsg( "Fork faild\n" );
++      PrintMsg( "Fork failed\n" );
+       exit( 1 ) ;
+     }
+     if ( parent ) {
+@@ -989,11 +989,11 @@ DetachTTY()
+       sprintf(errfile,"%s/%s%d%s", ERRDIR, ERRFILE, PortNumberPlus, ERRFILE2);
+     
+       if((errfd = open(errfile, O_CREAT | O_RDWR | O_TRUNC, 0644)) < 0) {
+-      (void)fprintf(stderr, "Warning: %s: %s open faild\n", Name, errfile);
++      (void)fprintf(stderr, "Warning: %s: %s open failed\n", Name, errfile);
+       (void)perror("");
+       } else {
+       if(dup2( errfd, fileno(stderr)) < 0) {
+-        (void)fprintf(stderr, "Warning: %s: %s dup2 faild\n", Name, errfile);
++        (void)fprintf(stderr, "Warning: %s: %s dup2 failed\n", Name, errfile);
+         (void)perror("");
+         close(fileno(stderr));
+       }
+--- a/server/wconvert.c
++++ b/server/wconvert.c
+@@ -1153,7 +1153,7 @@ ClientPtr *clientp ;
+                                sizeof(local_buffer) / sizeof(Ushort), &bufp);
+         RkwGoTo(cxnum, bunsetu);
+       } else {
+-          PrintMsg("%s RkwStoreYomi faild\n",
++          PrintMsg("%s RkwStoreYomi failed\n",
+                   irwerrhdr(client, wStoreYomi));
+           stat = -1 ;
+       }

diff --git 
a/app-i18n/canna/files/canna-12_make_the_output_of_mkbindic_reproducible.patch 
b/app-i18n/canna/files/canna-12_make_the_output_of_mkbindic_reproducible.patch
new file mode 100644
index 000000000..5019ec0ee
--- /dev/null
+++ 
b/app-i18n/canna/files/canna-12_make_the_output_of_mkbindic_reproducible.patch
@@ -0,0 +1,61 @@
+Description: make the output of mkbindic reproducible.
+Author: Chris Lamb <[email protected]>
+Bug-Debian: https://bugs.debian.org/861955
+Forwarded: no
+Reviewed-By: Francisco Vilmar Cardoso Ruviaro <[email protected]>
+Last-Update: 2020-08-17
+
+--- a/cmd/crxdic/crxdic.c
++++ b/cmd/crxdic/crxdic.c
+@@ -31,6 +31,7 @@ static char rcsid[]="@(#) 102.1 $Id: crx
+ #include <time.h>
+ #include <ctype.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <assert.h>
+ #include "ccompat.h"
+ #include "RKindep/file.h"
+@@ -932,6 +933,9 @@ makeHeader(dic)
+   unsigned            i;
+   RkiCksumCalc                calc;
+   unsigned            off;
++  char *source_date_epoch;
++  unsigned long long epoch;
++  char *endptr;
+     
+   if (RkiCksumCRCInit(&calc)
+       || RkiCksumAdd(&calc, dic->Dir->buf, dic->Dir->dirsiz)) {
+@@ -963,7 +967,32 @@ makeHeader(dic)
+     hd.data[HD_CMPV].var = 0x300702L;
+     hd.flag[HD_CMPV] = -1;
+   }
+-  hd.data[HD_TIME].var = tloc = time(0);
++  source_date_epoch = getenv("SOURCE_DATE_EPOCH");
++  if (source_date_epoch) {
++    errno = 0;
++    epoch = strtoull(source_date_epoch, &endptr, 10);
++    if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
++                    || (errno != 0 && epoch == 0)) {
++            fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: 
strtoull: %s\n", strerror(errno));
++            exit(EXIT_FAILURE);
++    }
++    if (endptr == source_date_epoch) {
++            fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No 
digits were found: %s\n", endptr);
++            exit(EXIT_FAILURE);
++    }
++    if (*endptr != '\0') {
++            fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: 
Trailing garbage: %s\n", endptr);
++            exit(EXIT_FAILURE);
++    }
++    if (epoch > ULONG_MAX) {
++            fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value 
must be smaller than or equal to %lu but was found to be: %llu \n", ULONG_MAX, 
epoch);
++            exit(EXIT_FAILURE);
++    }
++    tloc = epoch;
++  } else {
++    tloc = time(0);
++  }
++  hd.data[HD_TIME].var = tloc;
+   hd.flag[HD_TIME] = -1;
+   hd.data[HD_DMNM].ptr = (unsigned char *)STrdup(dic->name);
+   hd.flag[HD_DMNM] = strlen(dic->name);

diff --git a/app-i18n/canna/files/canna-Wformat-security.patch 
b/app-i18n/canna/files/canna-Wformat-security.patch
new file mode 100644
index 000000000..c83552b5c
--- /dev/null
+++ b/app-i18n/canna/files/canna-Wformat-security.patch
@@ -0,0 +1,199 @@
+--- a/cmd/catdic/can.c
++++ b/cmd/catdic/can.c
+@@ -1236,7 +1236,7 @@
+       break;
+       default:
+       if (init[0] == '/') {
+-          (void)fprintf(stderr,msg_abnl);
++          (void)fprintf(stderr,"%s",msg_abnl);
+       } else {
+           (void)fprintf(stderr,msg_abnls,init);
+       }
+@@ -1297,11 +1297,11 @@
+ 
+     if ( opt_fq ) {
+       if ( opt_s ) {
+-        (void) fprintf(stderr,msg_sfq);
++        (void) fprintf(stderr,"%s",msg_sfq);
+         exit(ERR_VALUE) ;
+       }  
+       if ( opt_l || opt_std ) {
+-        (void) fprintf(stderr,msg_l);
++        (void) fprintf(stderr,"%s",msg_l);
+         exit(ERR_VALUE) ;
+       }
+       mode = mode | PL_DIC ;
+@@ -1491,7 +1491,7 @@
+     break;
+   default:
+     if(init[0] == '/') {
+-      fprintf(stderr,msg_abnl );
++      fprintf(stderr,"%s",msg_abnl );
+     }
+     else {
+       fprintf(stderr,msg_abnls,init);
+--- a/cmd/catdic/rutil.c
++++ b/cmd/catdic/rutil.c
+@@ -271,7 +271,7 @@
+        "Dictionary \"%s\" does not exist.\n"), dicname);
+     break;
+   case NOTALC :
+-    (void)fprintf(stderr, msg_mem);
++    (void)fprintf(stderr, "%s", msg_mem);
+     break;
+   case BADF :
+     (void)fprintf(stderr, gettxt("cannacmd:196",
+@@ -297,7 +297,7 @@
+       (void)fprintf(stderr,msg_abnls,init);
+     }
+     else {
+-      (void)fprintf(stderr,msg_abnl);
++      (void)fprintf(stderr,"%s",msg_abnl);
+     }
+     break;
+   }
+@@ -321,7 +321,7 @@
+       (void)fprintf(stderr, msg_abnls, init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     ret = -1;
+     return ret;
+@@ -332,13 +332,13 @@
+         (void)fprintf(stderr, msg_mnts, init);
+       }
+       else {
+-        (void)fprintf(stderr, msg_mnt);
++        (void)fprintf(stderr, "%s", msg_mnt);
+       }
+       ret = -1;
+       return ret;
+     }
+     if ((mode & PL_DIC) == PL_DIC ) {
+-      (void)fprintf(stderr,msg_fq);
++      (void)fprintf(stderr,"%s",msg_fq);
+       ret = -1 ;
+       return ret ;
+     }
+@@ -359,7 +359,7 @@
+     ret = 0;
+     break;
+   case NOTALC :
+-    (void)fprintf(stderr, msg_mem);
++    (void)fprintf(stderr, "%s", msg_mem);
+     ret = -1;
+     break;
+   case BADF :
+@@ -421,7 +421,7 @@
+     ret = -1;
+     break;
+   case BADCONT :
+-    (void)fprintf(stderr,msg_cnt);
++    (void)fprintf(stderr,"%s",msg_cnt);
+     ret = -1;
+     break;
+   default:
+@@ -429,7 +429,7 @@
+       (void)fprintf(stderr, msg_abnls, init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     exit(ERR_VALUE);
+     break;
+@@ -448,7 +448,7 @@
+     ret = 0;
+     break;
+   case NOTALC :
+-    (void)fprintf(stderr, msg_mem);
++    (void)fprintf(stderr, "%s", msg_mem);
+     ret = -1;
+     break;
+   case BADF :
+@@ -509,11 +509,11 @@
+     ret = -1;
+     break;
+   case BADARG :
+-    (void)fprintf(stderr,msg_fq);
++    (void)fprintf(stderr,"%s",msg_fq);
+     ret = -1;
+     break;
+   case BADCONT :
+-    (void)fprintf(stderr,msg_cnt);
++    (void)fprintf(stderr,"%s",msg_cnt);
+     ret = -1;
+     break;
+   case NOENT  :   /* 91.12.03 */
+@@ -526,7 +526,7 @@
+       (void)fprintf(stderr, msg_abnls, init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     exit(ERR_VALUE);
+     break;
+@@ -556,7 +556,7 @@
+       (void)fprintf(stderr, msg_abnls,init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     ret = -1;
+     return ret;
+@@ -567,13 +567,13 @@
+       (void)fprintf(stderr, msg_mnts, init);
+       }
+       else {
+-        (void)fprintf(stderr, msg_mnt);
++        (void)fprintf(stderr, "%s", msg_mnt);
+       }
+       ret = -1;
+       return ret;
+     }
+     if ((mode & PL_DIC) == PL_DIC ) {
+-      (void)fprintf(stderr, msg_fq);
++      (void)fprintf(stderr, "%s", msg_fq);
+       ret = -1 ;
+       return ret ;
+     }
+@@ -608,7 +608,7 @@
+     ret = -2;   /* 93.03.03 */
+     break;
+   case BADCONT :
+-    (void)fprintf(stderr, msg_cnt);
++    (void)fprintf(stderr, "%s", msg_cnt);
+     ret = -1;
+     break;
+   default:
+@@ -616,7 +616,7 @@
+       (void)fprintf(stderr, msg_abnls, init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     ret = -1;
+     break;
+@@ -651,7 +651,7 @@
+     ret = -2;   /* 93.03.03 */
+     break;
+   case BADCONT :
+-    (void)fprintf(stderr, msg_cnt);
++    (void)fprintf(stderr, "%s", msg_cnt);
+     ret = -1;
+     break;
+   default:
+@@ -659,7 +659,7 @@
+       (void)fprintf(stderr, msg_abnls, init);
+     }
+     else {
+-      (void)fprintf(stderr, msg_abnl);
++      (void)fprintf(stderr, "%s", msg_abnl);
+     }
+     ret = -1;
+     break;

diff --git a/app-i18n/canna/files/canna-Wformat.patch 
b/app-i18n/canna/files/canna-Wformat.patch
new file mode 100644
index 000000000..a8f5aa371
--- /dev/null
+++ b/app-i18n/canna/files/canna-Wformat.patch
@@ -0,0 +1,11 @@
+--- a/doc/man/guide/tex/cannaindex.c
++++ b/doc/man/guide/tex/cannaindex.c
+@@ -198,7 +198,7 @@
+   }
+   inf = fopen(argv[1], "r");
+   if (!inf) {
+-    fprintf(stderr, "%s: Can not open file \"%s\".\n", argv[1]);
++    fprintf(stderr, "%s: Can not open file \"%s\".\n", program, argv[1]);
+     exit(1);
+   }
+   pages = readindex(inf, entries);

diff --git a/app-i18n/canna/files/canna-canuum.patch 
b/app-i18n/canna/files/canna-canuum.patch
new file mode 100644
index 000000000..293ffbb54
--- /dev/null
+++ b/app-i18n/canna/files/canna-canuum.patch
@@ -0,0 +1,34 @@
+--- a/canuum/configure.in
++++ b/canuum/configure.in
+@@ -401,7 +401,7 @@
+ dnl
+ olibs="$LIBS"
+ AC_MSG_CHECKING(--with-term-libs argument)
+-AC_ARG_WITH(tlib,
++AC_ARG_WITH(term-libs,
+ [  --with-term-libs=-lLIB    terminal library to be used ],)
+ if test -n "$with_term_libs"; then
+   AC_MSG_RESULT($with_term_libs)
+--- a/canuum/wnn_config.h
++++ b/canuum/wnn_config.h
+@@ -149,8 +149,8 @@
+ #define TTY_KCODE J_EUJIS
+ #define PTY_KCODE J_EUJIS
+ # else /* !DGUX */
+-#define TTY_KCODE J_JIS
+-#define PTY_KCODE J_JIS
++#define TTY_KCODE J_EUJIS
++#define PTY_KCODE J_EUJIS
+ # endif
+ #endif
+ 
+--- a/canuum/wnn_os.h
++++ b/canuum/wnn_os.h
+@@ -41,6 +41,7 @@
+ #include <signal.h>
+ #if STDC_HEADERS
+ #  include <stdlib.h>
++#  include <string.h>
+ #  include <limits.h>
+ #endif /* STDC_HEADERS */
+ 

diff --git a/app-i18n/canna/files/canna-gentoo.patch 
b/app-i18n/canna/files/canna-gentoo.patch
new file mode 100644
index 000000000..7ff274c2c
--- /dev/null
+++ b/app-i18n/canna/files/canna-gentoo.patch
@@ -0,0 +1,146 @@
+--- a/Canna.conf
++++ b/Canna.conf
+@@ -109,12 +109,12 @@
+ # define DefErrDir $(cannaPrefix)/log
+ # define DefLibCannaDir $(cannaExecPrefix)/lib
+ #else 
+-# define DefCannaPrefix /usr/local/canna
++# define DefCannaPrefix $(EPREFIX)/usr
+ # ifdef ObsoleteInstallDir
+ #  define DefErrDir /usr/spool/canna
+ #  define DefLibCannaDir /usr/lib
+ # else
+-#  define DefErrDir /var/log
++#  define DefErrDir $(EPREFIX)/var/log/$(PN)
+ #  define DefLibCannaDir $(cannaExecPrefix)/lib
+ # endif
+ #endif
+@@ -123,7 +123,7 @@
+ # define DefCannaLibDir $(cannaPrefix)/lib
+ #else
+ # define DefCannaSrvDir $(cannaExecPrefix)/sbin
+-# define DefCannaLibDir $(cannaPrefix)/share/canna
++# define DefCannaLibDir /etc/canna
+ #endif
+ 
+ #if defined(LinuxArchitecture) || defined(FreeBSDArchitecture) \
+@@ -147,9 +147,11 @@
+ XCOMM cannaLibDir = /var/lib/canna
+ XCOMM cannaLibDir = /var/db/canna
+ cannaLibDir = DefCannaLibDir
+-XCOMM cannaManDir = $(cannaPrefix)/share/man
+-cannaManDir = $(cannaPrefix)/man
+-cannaIncDir = $(cannaPrefix)/include/canna
++cannaManDir = $(cannaPrefix)/share/man
++XCOMM cannaManDir = $(cannaPrefix)/man
++cannaIncDir = $(cannaPrefix)/include/$(PN)
++cannaShareDir = $(cannaPrefix)/share/$(PN)
++cannaDocDir = $(cannaPrefix)/share/doc/$(PF)
+ 
+ libCannaDir = DefLibCannaDir
+ ErrDir  = DefErrDir
+@@ -237,7 +239,7 @@
+ /* #define UseInstalledLibCanna YES */
+ #define UseInstalledLibCanna NO
+ 
+-DicDir   = $(cannaLibDir)/dic
++DicDir   = $(EPREFIX)/var/lib/$(PN)/dic
+ 
+ /* �������鲼���ѹ����פǤ� */
+ 
+--- a/Imakefile
++++ b/Imakefile
+@@ -87,6 +87,7 @@
+        echo "#define CANNAHOSTFILE \"$(cannaLibDir)/cannahost\"";\
+        echo "/* for lib/canna */";\
+        echo "#define CANNALIBDIR \"$(cannaLibDir)\""; \
++       echo "#define CANNASHAREDIR \"$(cannaShareDir)\""; \
+        echo "#define SUPPORT_OLD_WCHAR $(supportOldWchar)"; \
+        echo "/* for scripts */";\
+        echo "#define CANNABINDIR $(cannaBinDir)"; \
+--- a/dic/phono/Imakefile
++++ b/dic/phono/Imakefile
+@@ -27,9 +27,10 @@
+ 
+        ROMAJI_DIC_DEF = -DSHIFT
+ 
+-               DICDIR = $(cannaLibDir)/dic
+-            SAMPLEDIR = $(cannaLibDir)/sample
+-         SAMPLESRCDIR = $(cannaLibDir)/sample/src
++               DICDIR = $(DicDir)
++        CANNASHAREDIR = $(cannaShareDir)
++            SAMPLEDIR = $(cannaDocDir)/sample
++         SAMPLESRCDIR = $(cannaDocDir)/sample/src
+ 
+     KPDEF = default.kpdef jdaemon.kpdef just.kpdef kaisoku.kpdef kana.kpdef \
+             lan5.kpdef matsu.kpdef newjis.kpdef romaji.kpdef sokuon.kpdef \
+@@ -69,7 +70,7 @@
+ MakeDirectories(install,$(DICDIR))
+ MakeDirectories(install,$(SAMPLESRCDIR))
+ 
+-InstallMultiple($(ROMKANA_TABLES),$(DICDIR))
++InstallMultiple($(ROMKANA_TABLES),$(CANNASHAREDIR))
+ 
+ #ifdef USE_OBSOLETE_STYLE_FILENAME
+ InstallNonExec(default.kpdef,$(SAMPLESRCDIR))
+--- a/lib/canna/romaji.c
++++ b/lib/canna/romaji.c
+@@ -427,7 +427,6 @@
+       }
+       }
+       
+-#if 0 /* currently CANNASHAREDDIR is not defined */
+       if (retval == (struct RkRxDic *)NULL) { /* added for Debian by ISHIKAWA 
Mutsumi <[email protected]> */
+         extern jrUserInfoStruct *uinfo;
+       
+@@ -450,7 +449,6 @@
+         }
+       }
+       }
+-#endif
+       
+       if (retval == (struct RkRxDic *)NULL) { /* ������ץ�Ǥ��ʤ� */
+       sprintf(rdic, 
+--- a/misc/Imakefile
++++ b/misc/Imakefile
+@@ -48,7 +48,7 @@
+ MakeLintLibSubdirs($(SUBDIRS))
+ MakeLintSubdirs($(SUBDIRS),install.ln,install.ln)
+ 
+-MakeDirectories(install,$(cannaLibDir)/sample/src)
++MakeDirectories(install,$(cannaDocDir)/sample/src)
+ 
+ #ifdef USE_OBSOLETE_STYLE_FILENAME
+ default.canna: default.ca
+@@ -58,8 +58,8 @@
+       $(CP) default.ca default.canna
+ #endif
+ 
+ InstallNonExec(default.canna,$(cannaLibDir))
+-InstallNonExec(is.c,$(cannaLibDir)/sample/src)
++InstallNonExec(is.c,$(cannaDocDir)/sample/src)
+ 
+ clean::
+       $(RM) $(PROGRAMS)
+--- a/misc/initfiles/Imakefile
++++ b/misc/initfiles/Imakefile
+@@ -6,7 +6,7 @@
+ #endif
+ 
+             CANNAROOT = ../..
+-            SAMPLEDIR = $(cannaLibDir)/sample
++            SAMPLEDIR = $(cannaDocDir)/sample
+ 
+ all::
+ 
+--- a/server/Imakefile
++++ b/server/Imakefile
+@@ -6,7 +6,7 @@
+ #ifdef __EMX__
+          INSTFLAGS = $(INSTUGIDFLAGS)
+ #else
+-         INSTFLAGS = -s $(INSTUGIDFLAGS)
++         INSTFLAGS = $(INSTUGIDFLAGS)
+ #endif
+            DEFINES = $(CANNASERVER_DEFINES) $(SIGNAL_DEFINES) ConnectionFlags
+           INCLUDES = -I$(CANNAROOT)/include

diff --git a/app-i18n/canna/files/canna-kpdef.patch 
b/app-i18n/canna/files/canna-kpdef.patch
new file mode 100644
index 000000000..b0b71b444
--- /dev/null
+++ b/app-i18n/canna/files/canna-kpdef.patch
@@ -0,0 +1,18 @@
+--- a/dic/phono/default.kpdef
++++ b/dic/phono/default.kpdef
+@@ -350,3 +350,15 @@
+ _     ��
+ /     ��
+ \\    ��
++
++# some useful romkan symbols
++z,    ��
++z-    ��
++z.    ��
++z/    ��
++z[    ��
++z]    ��
++zh    ��
++zj    ��
++zk    ��
++zl    ��

diff --git a/app-i18n/canna/files/canna-overflow.patch 
b/app-i18n/canna/files/canna-overflow.patch
new file mode 100644
index 000000000..ef3b6ad1b
--- /dev/null
+++ b/app-i18n/canna/files/canna-overflow.patch
@@ -0,0 +1,20 @@
+--- a/cmd/catdic/rutil.c
++++ b/cmd/catdic/rutil.c
+@@ -384,7 +384,7 @@
+       (void)fprintf(stderr,gettxt("cannacmd:205", 
+     "Specified dictionary \"%s\" already exists. Do you overwrite it ? 
(y/n)"),
+                     dicname);
+-      fgets(ans,80,stdin);
++      fgets(ans,sizeof(ans),stdin);
+     } else {
+       (void)fprintf(stderr,gettxt("cannacmd:206", 
+           "Specified dictionary \"%s\" already exists."),dicname);
+@@ -474,7 +474,7 @@
+     if (isatty(fileno(stdin)) != 0) {
+       (void)fprintf(stderr,gettxt("cannacmd:216", 
+ "Personal learning file of dictionary \"%s\" exists. Do you overwrite it ? 
(y/n)"),dicname);
+-      fgets(ans,80,stdin);
++      fgets(ans,sizeof(ans),stdin);
+     } else {
+       (void)fprintf(stderr,gettxt("cannacmd:217", 
+     "Personal learning file of system dictionary \"%s\" already exists."),

diff --git a/app-i18n/canna/files/canna-posix-sort.patch 
b/app-i18n/canna/files/canna-posix-sort.patch
new file mode 100644
index 000000000..1f98aaf5e
--- /dev/null
+++ b/app-i18n/canna/files/canna-posix-sort.patch
@@ -0,0 +1,11 @@
+--- a/cmd/mkbindic/mkbindic.cpp
++++ b/cmd/mkbindic/mkbindic.cpp
+@@ -40,7 +40,7 @@
+ bck_text=;
+ flag=;
+ compat_flag=;
+-sortcmd="sort -d -s +0 -1"
++sortcmd="sort -d -s -k 1,1"
+ usage="usage: mkbindic [-m|-s] [-name dicname] [-c version] textfile 
[cpp-args ...]";
+ : ${TMPDIR:=/tmp}
+ 

diff --git a/app-i18n/canna/files/canna-respect-flags.patch 
b/app-i18n/canna/files/canna-respect-flags.patch
new file mode 100644
index 000000000..13fb1ed9c
--- /dev/null
+++ b/app-i18n/canna/files/canna-respect-flags.patch
@@ -0,0 +1,29 @@
+--- /var/tmp/portage/app-i18n/canna-3.7_p3-r4/work/Canna37p3/canuum/Imakefile
++++ Canna37p3/canuum/Imakefile
+@@ -51,6 +51,8 @@
+       $(CONFIGURE_CMD)
+ XCOMM Invoked from confwrapper
+ cwenv.sh:
+-      $(CANNAROOT)/confwrapper mkenv CPPFLAGS $(ALLDEFINES) > $@
+-      $(CANNAROOT)/confwrapper mkenv CC env $(CC) >> $@
++      $(CANNAROOT)/confwrapper mkenv CPPFLAGS $(ALLDEFINES) $(CPPFLAGS) > $@
++      $(CANNAROOT)/confwrapper mkenv CC $(CC) >> $@
++      $(CANNAROOT)/confwrapper mkenv AR $(AR) >> $@
+       $(CANNAROOT)/confwrapper mkenv CFLAGS $(PURE_CFLAGS) >> $@
++      $(CANNAROOT)/confwrapper mkenv LDFLAGS $(LDFLAGS) >> $@
+--- /var/tmp/portage/app-i18n/canna-3.7_p3-r4/work/Canna37p3/Imakefile
++++ Canna37p3/Imakefile
+@@ -117,9 +117,11 @@
+       $(CONFIGURE_CMD)
+ XCOMM Invoked from confwrapper
+ cwenv.sh:
+-      $(CANNAROOT)/confwrapper mkenv CPPFLAGS $(ALLDEFINES) > $@
+-      $(CANNAROOT)/confwrapper mkenv CC env $(CC) >> $@
++      $(CANNAROOT)/confwrapper mkenv CPPFLAGS $(ALLDEFINES) $(CPPFLAGS) > $@
++      $(CANNAROOT)/confwrapper mkenv CC $(CC) >> $@
++      $(CANNAROOT)/confwrapper mkenv AR $(AR) >> $@
+       $(CANNAROOT)/confwrapper mkenv CFLAGS $(PURE_CFLAGS) >> $@
++      $(CANNAROOT)/confwrapper mkenv LDFLAGS $(LDFLAGS) >> $@
+ 
+ CANNAROOT = .
+ SERVERDIR = server dic/phono dic/ideo

diff --git a/app-i18n/canna/files/canna-rundir.patch 
b/app-i18n/canna/files/canna-rundir.patch
new file mode 100644
index 000000000..d8c58be49
--- /dev/null
+++ b/app-i18n/canna/files/canna-rundir.patch
@@ -0,0 +1,15 @@
+--- a/Canna.conf
++++ b/Canna.conf
+@@ -341,10 +341,10 @@
+ #endif
+ 
+ #ifdef InstallAsUser
+-UnixSockDir = $(cannaPrefix)/tmp/.iroha_unix
++UnixSockDir = $(cannaPrefix)/run/.iroha_unix
+ AccessFile = $(cannaPrefix)/etc/hosts.canna
+ #else
+-UnixSockDir = /tmp/.iroha_unix
++UnixSockDir = /run/.iroha_unix
+ AccessFile = /etc/hosts.canna
+ #endif
+ UnixSockName = IROHA

diff --git a/app-i18n/canna/files/canna-tmpfiles.conf 
b/app-i18n/canna/files/canna-tmpfiles.conf
new file mode 100644
index 000000000..8b70ef1a1
--- /dev/null
+++ b/app-i18n/canna/files/canna-tmpfiles.conf
@@ -0,0 +1,2 @@
+d /run/.iroha_unix 0755 canna canna -
+

diff --git a/app-i18n/canna/files/canna.confd b/app-i18n/canna/files/canna.confd
new file mode 100644
index 000000000..d3fdce542
--- /dev/null
+++ b/app-i18n/canna/files/canna.confd
@@ -0,0 +1,7 @@
+CANNASERVER_ENABLE_SYSLOG="yes"
+
+# Specify user to run as
+CANNASERVER_OWNER="bin"
+
+# Options for cannaserver
+CANNASERVER_OPTS=""

diff --git a/app-i18n/canna/files/canna.hosts b/app-i18n/canna/files/canna.hosts
new file mode 100644
index 000000000..509143d86
--- /dev/null
+++ b/app-i18n/canna/files/canna.hosts
@@ -0,0 +1 @@
+unix

diff --git a/app-i18n/canna/files/canna.initd b/app-i18n/canna/files/canna.initd
new file mode 100644
index 000000000..fdfc3fc20
--- /dev/null
+++ b/app-i18n/canna/files/canna.initd
@@ -0,0 +1,31 @@
+#!/sbin/openrc-run
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/sbin/${RC_SVCNAME}server"
+command_args="${CANNASERVER_OPTS}"
+
+# CANNASERVER_OPTS and CANNASERVER_OWNER is defined in /etc/conf.d/canna
+CANNASERVER_LOGFILE="/var/log/${RC_SVCNAME}/CANNA0msgs"
+
+depend() {
+       use logger
+       need net
+}
+
+start_pre() {
+       if [ "${CANNASERVER_ENABLE_SYSLOG}" = "yes" ]; then
+               command_args="${command_args} -syslog"
+       elif [ -z "${CANNASERVER_OWNER}" ]; then
+               checkpath "${CANNASERVER_LOGFILE}"
+       else
+               checkpath -o "${CANNASERVER_OWNER}" "${CANNASERVER_LOGFILE}"
+               command_args="${command_args} -u ${CANNASERVER_OWNER}"
+       fi
+}
+
+stop() {
+       ebegin "Stopping ${name:-${RC_SVCNAME}}"
+       /usr/sbin/${RC_SVCNAME}kill
+       eend ${?}
+}

diff --git a/app-i18n/canna/files/canna.service 
b/app-i18n/canna/files/canna.service
new file mode 100644
index 000000000..1bd0498fb
--- /dev/null
+++ b/app-i18n/canna/files/canna.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Canna Japanese Conversion Engine
+After=syslog.target
+
+[Service]
+User=canna
+Type=forking
+ExecStart=/usr/sbin/cannaserver -syslog
+ExecStop=/usr/sbin/cannakill
+
+[Install]
+WantedBy=multi-user.target

diff --git a/app-i18n/canna/files/cannaping.c b/app-i18n/canna/files/cannaping.c
new file mode 100644
index 000000000..67f49808b
--- /dev/null
+++ b/app-i18n/canna/files/cannaping.c
@@ -0,0 +1,46 @@
+/*
+ * cannaping - the minimal cannaserver check program
+ *
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Bugs & suggestions about this program are welcome:
+ * http://bugzilla.redhat.com/
+ *
+ * 2003/02/04
+ * Yukihiro Nakai <[email protected]>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <canna/jrkanji.h>
+
+int main() {
+  char** warning = NULL;
+  int res = jrKanjiControl(0, KC_INITIALIZE, (char*)&warning);
+
+  if( res != 0 ) {
+    exit(-1);
+  } else if( warning ) {
+    exit(-1);
+  }
+
+  jrKanjiControl(0, KC_FINALIZE, 0);
+  return 0;
+}

diff --git a/app-i18n/canna/files/dot-canna b/app-i18n/canna/files/dot-canna
new file mode 100644
index 000000000..37fdc2f27
--- /dev/null
+++ b/app-i18n/canna/files/dot-canna
@@ -0,0 +1,195 @@
+;; Copyright 1992 NEC Corporation, Tokyo, Japan.
+;;
+;; Permission to use, copy, modify, distribute and sell this software
+;; and its documentation for any purpose is hereby granted without
+;; fee, provided that the above copyright notice appear in all copies
+;; and that both that copyright notice and this permission notice
+;; appear in supporting documentation, and that the name of NEC
+;; Corporation not be used in advertising or publicity pertaining to
+;; distribution of the software without specific, written prior
+;; permission.  NEC Corporation makes no representations about the
+;; suitability of this software for any purpose.  It is provided "as
+;; is" without express or implied warranty.
+;;
+;; NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+;; INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN 
+;; NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 
+;; USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 
+;; OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
+;; PERFORMANCE OF THIS SOFTWARE. 
+
+;;  $Id: dot-canna,v 1.1 2005/09/26 09:29:14 tagoh Exp $
+
+;; �����֤������Ѵ������Ѥ��뤫��
+
+(setq use-symbolic-definition t)
+
+;;; ���޻���Ѵ�������
+;
+; ���޻���Ѵ��ơ��֥����ꤷ�ޤ������޻���Ѵ��ơ��֥��
+; (1) �����ȥǥ��쥯�ȥ�
+; (2) �ۡ���ǥ��쥯�ȥ�
+; (3) /usr/lib/canna/dic
+; �ν�˥���������ޤ���
+;
+
+;(setq romkana-table "unix.cbp")
+(setq romkana-table "default.cbp")
+
+;; ������Ѵ�
+;(setq english-table "canna/english.cbp")
+
+
+;;; ���Ѥ��뼭��
+;
+; ����ñ�˽��¤٤Ƥ���Τ�ñ����Ͽ��Ԥ�ʤ�����ǥ����ƥ༭��ʤɤ�
+; ��������ޤ���
+;
+; ��󼭽�˴ؤ��Ƥ� :bushu ����Ԥ����Ƶ��Ҥ��ޤ���
+;
+; ñ����Ͽ�򤷤�������˴ؤ��Ƥ� :user ����Ԥ����Ƶ��Ҥ��ޤ���ñ����
+; Ͽ�򤹤뼭��ϥƥ����ȷ�������Ǥʤ���Фʤ�ޤ���ñ����Ͽ��������
+; ����� mkdic user ���ͤʥ��ޥ�ɤ��ǤĤ��ȤǤǴ�ñ�˺������뤳�Ȥ���
+; ���ޤ���
+;
+(use-dictionary
+ "gcanna"
+ "gcannaf"
+ "chimei"
+; "iroha"
+ "fuzokugo"
+ "hojomwd"
+ "hojoswd"
+ "software"
+ "keishiki"
+ "zipcode"
+ "geo"
+; "zip99"
+ "basho"
+ "keisan"
+ "pub"
+ "scien"
+ "sup"
+ "bonobo"
+ :bushu "bushu"
+ :user  "user"
+ )
+
+;;; ���ޤ��ޤʥѥ�᥿������
+;
+; �����ͤ����ꤹ���ΤˤĤ��ƤϿ��ˤĤ��Ƥ� t �����ˤĤ��Ƥ� nil ����
+; �ꤷ�ޤ���
+
+; ���ֱ��DZ��˹Ԥ����Ȥ���Ⱥ�ü�ˤ����褦�ˤ��뤫
+(setq cursor-wrap          t)  ; default t
+
+; ����ɽ���ǿ����Ǥä��Ȥ��˥��������ư��α���(nil)������ޤǤ���
+; ���ޤ���(t)
+(setq select-direct        t)  ; default t
+
+; ����ɽ���ǿ������򤹤뤫(t)��nil�λ�Ͽ��ɽ������ޤ���
+(setq numerical-key-select t)  ; default t
+
+; ����ɽ�����ʸ��ζ��ڤ�˶���򤤤�뤫
+(setq bunsetsu-kugiri nil)      ; default nil
+
+; ʸ��١����ΰ�ư�򤹤뤫(t)�� nil�λ�ϥ��޻���Ѵ���ñ�̤ǥ���
+; �����ư���Ԥ��ޤ���
+(setq character-based-move t)  ; default t
+
+; ��������ɤ����Τ��С������뤫
+(setq reverse-widely       nil)        ; default nil
+
+; ���ٳؽ��򤹤뤫
+(setq gakushu              t)  ; default t
+
+; ����κǸ�ޤǤ��ä����ö����ɽ������뤫
+(setq quit-if-end-of-ichiran nil); default nil
+
+; ʸ��α�ü�DZ���ư�򤹤�����Τ����ꤷ�Ƥ��ޤ���
+(setq kakutei-if-end-of-bunsetsu nil) ; default nil
+
+; ���������Ʊ��ʸ��ˤȤɤޤ뤫(t)��nil�λ�ϰ��������Ԥ��ȤҤȤ���
+; ��ʸ��˰�ư���ޤ���
+(setq stay-after-validate  t)  ; default t
+
+; �ɤߤ�������˥Хå����ڡ������ǤĤȥ��޻�ޤǥХ�Х�ˤ��뤫
+(setq break-into-roman     t)  ; default nil
+
+; ������Ѵ������ǰ���ɽ����Ԥ���������������Ѵ����������Ǥ�
+; ����ɽ���ˤϰܤ�ޤ��󡣤��ξ��ˤ� C-w �����Ϥ��ư���ɽ������
+; ��������
+(setq n-henkan-for-ichiran 2)  ; default 2
+
+; ñ����Ͽ���ʸˡ��Ϣ�μ���򤹤뤫(t)��nil�λ��Ŭ����ʻ���դ��Ƥ�
+; �ޤ��ޤ���
+(setq gramatical-question  t)  ; default t
+
+; ���䤬���Τβ����ܤ���ɽ�����뤫
+(setq kouho-count t)            ; default t
+
+; �༡�Ѵ��򤹤뤫
+(setq auto nil)                 ; default nil
+
+; �༡�Ѵ��򤹤��˲��Ĥ�ʸ��ޤǤ�̤������ݻ�뤫
+(setq n-kouho-bunsetsu 16)      ; default 16
+
+; ���޻���Ѵ��ǥ��꡼����ʥ��޻��ΤƤ뤫
+(setq abandon-illegal-phonogram nil)              ; default nil
+
+; ����λ�⼡�����Ϥ�ǧ��뤫
+(setq allow-next-input                  t)     ; default t
+
+; ��ʸ���٥�Υ��޻���Ѵ������ơ��֥�
+(if use-symbolic-definition
+    (progn
+      (defsymbol ?-  "��" "-" "��" "��")
+      (defsymbol ?/  "/"  "��"  "��")
+      (defsymbol ?\\ "\\" "��"  "��")
+      (defsymbol
+       ?( "(" "��" "��"
+       ?) ")" "��" "��" )
+      (defsymbol 
+       ?[ "��" "��" "��" "��" "["
+       ?] "��" "��" "��" "��" "]")
+      (defsymbol 
+       ?. "��" "��" "."
+       ?, "��" "��" "," )
+      (defsymbol
+       ?0 "0" "��" "��" "��"
+       ?1 "1" "��" "��" "��"
+       ?2 "2" "��" "��" "��"
+       ?3 "3" "��" "��" "��"
+       ?4 "4" "��" "��" "��"
+       ?5 "5" "��" "��" "��"
+       ?6 "6" "��" "ϻ" "ϻ"
+       ?7 "7" "��" "��" "��"
+       ?8 "8" "��" "Ȭ" "Ȭ"
+       ?9 "9" "��" "��" "��" )
+      (defsymbol
+       ?? "?" "��"
+       ?! "!" "��")
+      (defsymbol ?# "#" "��")
+      (defsymbol ?$ "$" "��")
+      (defsymbol ?% "%" "��")
+      (defsymbol ?& "&" "��")
+      (defsymbol ?+ "+" "��")
+      (defsymbol ?* "*" "��" "��")
+      (defsymbol ?_ "_" "��")
+      (defsymbol ?' "'" "��")
+      (defsymbol ?` "`" "��")
+      (defsymbol ?\" "\"" "��")
+      ))
+
+;; delete ������Хå����ڡ�����Ʊ������򤵤���
+(global-set-key "\Delete" 'delete-previous) ; necessary in using Emacs
+
+;; Help ���ʤ��ͤ⤤��Τ� F1 �Ǥ�Ʊ��ư��򤵤��롣
+(global-set-key "\F1" 'extend-mode)
+
+;; Escape key should escape from the mode.
+(global-set-key "\Escape" 'quit)
+
+;; Ctrl-o ������
+(global-unbind-key-function 'japanese-mode)

diff --git a/app-i18n/canna/files/update-canna-dics_dir 
b/app-i18n/canna/files/update-canna-dics_dir
new file mode 100644
index 000000000..b4061c885
--- /dev/null
+++ b/app-i18n/canna/files/update-canna-dics_dir
@@ -0,0 +1,36 @@
+#!/bin/sh
+# update-canna-dics_dir
+# compiles dics.dir files for Canna Server
+# Copyright 2001 ISHIKAWA Mutsumi
+# Licensed under the GNU General Public License, version 2.  See the file
+# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
+
+SRC=/etc/canna/dics.dir.d
+DEST=/var/lib/canna/dic/canna
+
+for DIR in $SRC $DEST; do
+    VALID=yes
+    if [ ! -d $DIR ]; then
+       echo "$0: $DIR does not exist or is not a directory." >&2
+       VALID=
+    fi
+done
+
+if [ -n "$VALID" ]; then
+    # write new dics.dir file in case we are interrupted
+    echo '# dics.dir -- automatically generated file.  DO NOT EDIT.' > 
$DEST/dics.dir.update-new
+#    echo '# To modify, see update-canna-dics_dir(8). >> 
$DEST/dics.dir.update-new
+    # are there any files to process?
+    if [ "$(echo $SRC/*.dics.dir)" != "$SRC/*.dics.dir" ]; then
+       for file in $SRC/*.dics.dir; do
+           echo "# $file" >> $DEST/dics.dir.update-new
+           cat $file >> $DEST/dics.dir.update-new
+       done
+       mv $DEST/dics.dir.update-new $DEST/dics.dir
+    else
+      # no files to process, remove the one
+       rm -f $DEST/dics.dir
+    fi
+fi
+
+exit

diff --git a/app-i18n/canna/metadata.xml b/app-i18n/canna/metadata.xml
new file mode 100644
index 000000000..88181e8f0
--- /dev/null
+++ b/app-i18n/canna/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <description>co-maintainers welcome</description>
+    <name>Alessandro Barbieri</name>
+    <email>[email protected]</email>
+  </maintainer>
+  <use>
+    <flag name="canuum">Build canuum</flag>
+  </use>
+</pkgmetadata>

Reply via email to