From: "Alessandro Barbieri" <lssndrbarbieri@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/proj/guru:dev commit in: app-i18n/canna/, app-i18n/canna/files/
Date: Sun, 26 Jun 2022 02:36:36 +0000 (UTC) [thread overview]
Message-ID: <1656210584.3a19c07b162cb1de41d98cf9d3b523a6397180d5.Alessandro-Barbieri@gentoo> (raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 61175 bytes --]
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) <dai@debian.org>
+##
+## 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) <dai@debian.org>
+##
+## 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) <dai@debian.org>
+##
+## 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 <francisco.ruviaro@riseup.net>
+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 <francisco.ruviaro@riseup.net>
+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 <lamby@debian.org>
+Bug-Debian: https://bugs.debian.org/861955
+Forwarded: no
+Reviewed-By: Francisco Vilmar Cardoso Ruviaro <francisco.ruviaro@riseup.net>
+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 <ishikawa@linux.or.jp> */
+ 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 <ynakai@redhat.com>
+ */
+
+#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 ¤òÀß
+; Äꤷ¤Þ¤¹¡£
+
+; °ìÈÖ±¦¤Ç±¦¤Ë¹Ô¤³¤¦¤È¤¹¤ë¤Èº¸Ã¼¤Ë¤¤¤¯¤è¤¦¤Ë¤¹¤ë¤«
+(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
+
+; ʸÀá¤Î±¦Ã¼¤Ç±¦°ÜÆ°¤ò¤¹¤ë¤ÈÁ´ÂΤ¬³ÎÄꤷ¤Æ¤·¤Þ¤¦¤«
+(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>lssndrbarbieri@gmail.com</email>
+ </maintainer>
+ <use>
+ <flag name="canuum">Build canuum</flag>
+ </use>
+</pkgmetadata>
next reply other threads:[~2022-06-26 2:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-26 2:36 Alessandro Barbieri [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-04-01 11:18 [gentoo-commits] repo/proj/guru:dev commit in: app-i18n/canna/, app-i18n/canna/files/ Julien Roy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1656210584.3a19c07b162cb1de41d98cf9d3b523a6397180d5.Alessandro-Barbieri@gentoo \
--to=lssndrbarbieri@gmail.com \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox