Compare commits
6 commits
main
...
codex/hepb
| Author | SHA1 | Date | |
|---|---|---|---|
| 787febbd07 | |||
| 7935e5e7ea | |||
| d0be6165c0 | |||
| b6df536fe9 | |||
| 2248f9e3aa | |||
| 27224cdd4c |
177 changed files with 30354 additions and 34662 deletions
24
.clang-format
Normal file
24
.clang-format
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
UseTab: Always
|
||||
TabWidth: 8
|
||||
AlignConsecutiveAssignments:
|
||||
Enabled: true
|
||||
AlignConsecutiveDeclarations:
|
||||
Enabled: true
|
||||
AccessModifierOffset: -4
|
||||
NamespaceIndentation: All
|
||||
IndentWidth: 8
|
||||
PointerAlignment: Left
|
||||
ColumnLimit: 0
|
||||
AllowShortIfStatementsOnASingleLine: Always
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: true
|
||||
SpaceBeforeParens: Never
|
||||
AlignEscapedNewlines: DontAlign
|
||||
SortIncludes: false
|
||||
AllowShortEnumsOnASingleLine: false
|
||||
#IndentPPDirectives: AfterHash
|
||||
45
CMakeLists.txt
Normal file
45
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(sj3 VERSION 2.0.99 LANGUAGES C)
|
||||
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
if(NOT DEFINED CMAKE_C_STANDARD)
|
||||
set(CMAKE_C_STANDARD 90)
|
||||
endif()
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
|
||||
set(SJ3CONFDIR "/etc/sj3" CACHE PATH "SJ3 configuration directory")
|
||||
set(SJ3DICTDIR "${CMAKE_INSTALL_PREFIX}/share/sj3/dict" CACHE PATH
|
||||
"SJ3 dictionary directory")
|
||||
|
||||
check_c_source_compiles("
|
||||
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
|
||||
# error C99 required
|
||||
#endif
|
||||
#include <stdint.h>
|
||||
int main(void) {
|
||||
uint8_t u8 = 0;
|
||||
uint16_t u16 = 0;
|
||||
uint32_t u32 = 0;
|
||||
uint64_t u64 = 0;
|
||||
return (int)(u8 + u16 + u32 + u64);
|
||||
}
|
||||
" HAVE_C99_STDINT)
|
||||
|
||||
configure_file(config.h.cmake config.h @ONLY)
|
||||
configure_file(Paths.h.in Paths.h @ONLY)
|
||||
|
||||
add_library(sj3types INTERFACE)
|
||||
target_include_directories(sj3types INTERFACE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_library(sj3_core_types OBJECT
|
||||
wc16_str.c
|
||||
string.c
|
||||
string2.c
|
||||
)
|
||||
target_link_libraries(sj3_core_types PRIVATE sj3types)
|
||||
|
|
@ -1,138 +0,0 @@
|
|||
<!--
|
||||
-- SPDX-License-Identifier: CC-BY-4.0
|
||||
-- Copyright 2014 Coraline Ada Ehmke
|
||||
-->
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official email address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
<mogino@acm.org>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||
[https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
60
Dict.h
60
Dict.h
|
|
@ -31,45 +31,45 @@
|
|||
#ifndef SJ3_DICT_H_
|
||||
#define SJ3_DICT_H_
|
||||
|
||||
#define VersionPos 0
|
||||
#define VersionPos 0
|
||||
|
||||
#define PasswdPos 16
|
||||
#define PasswdLen 16
|
||||
#define PasswdPos 16
|
||||
#define PasswdLen 16
|
||||
|
||||
#define StdyNormPos 32
|
||||
#define StdyNormLen 36
|
||||
#define StdyNormNum 40
|
||||
#define StdyNormCnt 44
|
||||
#define StdyNormPos 32
|
||||
#define StdyNormLen 36
|
||||
#define StdyNormNum 40
|
||||
#define StdyNormCnt 44
|
||||
|
||||
#define StdyClIdxPos 48
|
||||
#define StdyClIdxLen 52
|
||||
#define StdyClIdxStep 56
|
||||
#define StdyClIdxPos 48
|
||||
#define StdyClIdxLen 52
|
||||
#define StdyClIdxStep 56
|
||||
|
||||
#define StdyClSegPos 64
|
||||
#define StdyClSegLen 68
|
||||
#define StdyClSegPos 64
|
||||
#define StdyClSegLen 68
|
||||
|
||||
#define DictIdxPos 32
|
||||
#define DictIdxLen 36
|
||||
#define DictIdxPos 32
|
||||
#define DictIdxLen 36
|
||||
|
||||
#define DictSegPos 48
|
||||
#define DictSegLen 52
|
||||
#define DictSegNum 56
|
||||
#define DictSegMax 60
|
||||
#define DictSegPos 48
|
||||
#define DictSegLen 52
|
||||
#define DictSegNum 56
|
||||
#define DictSegMax 60
|
||||
|
||||
#define DictAIdxPos 64
|
||||
#define DictAIdxLen 68
|
||||
#define DictAIdxPos 64
|
||||
#define DictAIdxLen 68
|
||||
|
||||
#define DictASegPos 80
|
||||
#define DictASegLen 84
|
||||
#define DictASegPos 80
|
||||
#define DictASegLen 84
|
||||
|
||||
#define HeaderPos 0
|
||||
#define HeaderLength 128
|
||||
#define CommentPos 128
|
||||
#define CommentLength 128
|
||||
#define HeaderPos 0
|
||||
#define HeaderLength 128
|
||||
#define CommentPos 128
|
||||
#define CommentLength 128
|
||||
|
||||
#define Byte2Long(c3,c2,c1,c0) (((c3) << (8*3)) | ((c2) << (8*2)) | \
|
||||
((c1) << (8*1)) | ((c0) << (8*0)))
|
||||
#define StdyVersion Byte2Long('S', 2, 0, 0)
|
||||
#define DictVersion Byte2Long('D', 2, 0, 0)
|
||||
#define Byte2Long(c3, c2, c1, c0) (((c3) << (8 * 3)) | ((c2) << (8 * 2)) | \
|
||||
((c1) << (8 * 1)) | ((c0) << (8 * 0)))
|
||||
#define StdyVersion Byte2Long('S', 2, 0, 0)
|
||||
#define DictVersion Byte2Long('D', 2, 0, 0)
|
||||
|
||||
#endif /* SJ3_DICT_H_ */
|
||||
|
|
|
|||
8
Makefile
8
Makefile
|
|
@ -44,10 +44,10 @@ KANAKAN_OBJS = adddic.o addelcmn.o alloc.o charsize.o chrtbl.o cl2knj.o \
|
|||
clstudy.o cmpstr.o conjunc.o connect.o cvtclknj.o cvtdict.o \
|
||||
cvtkanji.o deldic.o depend.o dict.o functbl.o fuzoku.o \
|
||||
fzkyomi.o getkanji.o getrank.o global2.o hzstrlen.o init.o \
|
||||
istrcmp.o memory2.o mk2claus.o mkbunset.o mkjiritu.o mkkouho.o \
|
||||
istrcmp.o memory2.o mk2claus.o mkbunsetsu.o mkjiritsu.o mkkouho.o \
|
||||
mknumber.o mvmemd.o mvmemi.o peepdic.o ph2knj.o ph_khtbl.o \
|
||||
priority.o prtytbl.o s2ctbl.o selclrec.o selsuuji.o setconj.o \
|
||||
setjrec.o setkouho.o setubi.o sj2code.o skiphblk.o skipkstr.o \
|
||||
setjrec.o setkouho.o setsubi.o sj2code.o skiphblk.o skipkstr.o \
|
||||
srchdict.o srchhead.o srchidx.o srchnum.o stbtbl.o stttbl.o \
|
||||
study.o suujitbl.o terminat.o termtbl.o wakachi.o
|
||||
SJ3RKCV_OBJS = rk_conv.o sj3_rkcv.o wc16_str.o
|
||||
|
|
@ -58,9 +58,9 @@ SJ3_OBJS = code.o common.o conv.o display.o douon.o edit.o etc.o \
|
|||
eucmessage.o funckey.o henkan.o kigou.o libif.o nmttyslot.o \
|
||||
romaji.o screen.o sj3.o sj3ver.o sjgetchar.o sjrc2.o \
|
||||
stat_conv.o term.o toroku.o version2.o
|
||||
SJ3DIC_OBJS = codecnv.o dictdisp.o dictmake.o hinsi.o sj3dic.o sj3err.o \
|
||||
SJ3DIC_OBJS = codecnv.o dictdisp.o dictmake.o hinshi.o sj3dic.o sj3err.o \
|
||||
sjrc.o
|
||||
SJ3MKDIC_OBJS = char.o cnvhinsi.o file.o global.o hindo.o knjcvt.o makedict.o \
|
||||
SJ3MKDIC_OBJS = char.o cnvhinshi.o file.o global.o hindo.o knjcvt.o makedict.o \
|
||||
makelist.o makeseg.o memory.o offset.o readline.o string2.o
|
||||
SJ3STAT_OBJS = sj3stat.o
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ adddic.o: adddic.c sj_euc.h sj_sysvdef.h sj_kcnv.h sj_typedef.h \
|
|||
addelcmn.o: addelcmn.c sj_euc.h sj_sysvdef.h sj_kcnv.h sj_typedef.h \
|
||||
sj_rename.h sj_var.h sj_dict.h sj_study.h sj_table.h sj_func.h \
|
||||
sj_struct.h Struct.h const.h Paths.h sj_global.h \
|
||||
sj_hinsi.h sj_yomi.h kanakan.h
|
||||
sj_hinshi.h sj_yomi.h kanakan.h
|
||||
alloc.o: alloc.c sj_rename.h sj_typedef.h const.h Paths.h sj_euc.h \
|
||||
sj_sysvdef.h sj_var.h sj_struct.h kanakan.h Struct.h sj_dict.h
|
||||
char.o: char.c sj_euc.h sj_sysvdef.h const.h Paths.h
|
||||
|
|
@ -20,7 +20,7 @@ clstudy.o: clstudy.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
|||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h kanakan.h
|
||||
cmpstr.o: cmpstr.c sj_rename.h const.h Paths.h sj_euc.h sj_sysvdef.h \
|
||||
sj_typedef.h
|
||||
cnvhinsi.o: cnvhinsi.c dicttool.h sj_struct2.h const.h Paths.h sj_euc.h \
|
||||
cnvhinshi.o: cnvhinshi.c dicttool.h sj_struct2.h const.h Paths.h sj_euc.h \
|
||||
sj_sysvdef.h GramTable
|
||||
code.o: code.c sj_sysvdef.h wchar16.h key.h kctype.h sj2.h rk.h
|
||||
codecnv.o: codecnv.c sjctype.h sj_sysvdef.h sjtool.h
|
||||
|
|
@ -79,7 +79,7 @@ functbl.o: functbl.c sj_rename.h sj_func.h sj_typedef.h sj_struct.h \
|
|||
kanakan.h
|
||||
fuzoku.o: fuzoku.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h sj_dict.h \
|
||||
sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h Paths.h \
|
||||
sj_euc.h sj_sysvdef.h sj_global.h sj_hinsi.h sj_right.h \
|
||||
sj_euc.h sj_sysvdef.h sj_global.h sj_hinshi.h sj_right.h \
|
||||
sj_yomi.h
|
||||
fzkyomi.o: fzkyomi.c const.h Paths.h sj_euc.h sj_sysvdef.h sj_rename.h \
|
||||
sj_typedef.h sj_yomi.h sj_right.h sj_left.h
|
||||
|
|
@ -96,7 +96,7 @@ henkan.o: henkan.c common.h conversion.h sj2.h wchar16.h key.h \
|
|||
sj_sysvdef.h sj3libsj3.h sj3lib.h henkan.h kctype.h
|
||||
hindo.o: hindo.c sj_struct.h sj_typedef.h dicttool.h sj_struct2.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h
|
||||
hinsi.o: hinsi.c sj_hinsi.h
|
||||
hinshi.o: hinshi.c sj_hinshi.h
|
||||
hzstrlen.o: hzstrlen.c sj_euc.h sj_sysvdef.h sj_rename.h sj_typedef.h \
|
||||
const.h Paths.h sj_dict.h kanakan.h sj_struct.h Struct.h sj_var.h
|
||||
init.o: init.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h sj_dict.h \
|
||||
|
|
@ -128,17 +128,17 @@ memory2.o: memory2.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
|||
mk2claus.o: mk2claus.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_right.h
|
||||
mkbunset.o: mkbunset.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
mkbunsetsu.o: mkbunsetsu.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_hinsi.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_hinshi.h \
|
||||
kanakan.h
|
||||
mkjiritu.o: mkjiritu.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
mkjiritsu.o: mkjiritsu.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h kanakan.h
|
||||
mkkouho.o: mkkouho.c sj_euc.h sj_sysvdef.h sj_kcnv.h sj_typedef.h \
|
||||
sj_rename.h sj_var.h sj_dict.h sj_study.h sj_table.h sj_func.h \
|
||||
sj_struct.h Struct.h const.h Paths.h sj_global.h \
|
||||
sj_hinsi.h sj_suuji.h kanakan.h
|
||||
sj_hinshi.h sj_suuji.h kanakan.h
|
||||
mknumber.o: mknumber.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_yomi.h \
|
||||
|
|
@ -160,7 +160,7 @@ ph_khtbl.o: ph_khtbl.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
|||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h kanakan.h
|
||||
priority.o: priority.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_hinsi.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_hinshi.h \
|
||||
sj_right.h sj_prty.h
|
||||
prtytbl.o: prtytbl.c sj_rename.h sj_typedef.h
|
||||
readline.o: readline.c sj_euc.h sj_sysvdef.h const.h Paths.h sj_macro.h \
|
||||
|
|
@ -179,18 +179,18 @@ selsuuji.o: selsuuji.c sj_rename.h sj_typedef.h const.h Paths.h sj_euc.h \
|
|||
setconj.o: setconj.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_right.h \
|
||||
sj_hinsi.h sj_yomi.h kanakan.h
|
||||
sj_hinshi.h sj_yomi.h kanakan.h
|
||||
setjrec.o: setjrec.c sj_euc.h sj_sysvdef.h sj_kcnv.h sj_typedef.h \
|
||||
sj_rename.h sj_var.h sj_dict.h sj_study.h sj_table.h sj_func.h \
|
||||
sj_struct.h Struct.h const.h Paths.h sj_global.h \
|
||||
sj_hinsi.h kanakan.h
|
||||
sj_hinshi.h kanakan.h
|
||||
setkouho.o: setkouho.c sj_euc.h sj_sysvdef.h sj_kcnv.h sj_typedef.h \
|
||||
sj_rename.h sj_var.h sj_dict.h sj_study.h sj_table.h sj_func.h \
|
||||
sj_struct.h Struct.h const.h Paths.h sj_global.h \
|
||||
sj_hinsi.h kanakan.h
|
||||
setubi.o: setubi.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h sj_dict.h \
|
||||
sj_hinshi.h kanakan.h
|
||||
setsubi.o: setsubi.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h sj_dict.h \
|
||||
sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h Paths.h \
|
||||
sj_euc.h sj_sysvdef.h sj_global.h sj_hinsi.h kanakan.h
|
||||
sj_euc.h sj_sysvdef.h sj_global.h sj_hinshi.h kanakan.h
|
||||
setup.o: setup.c sj_sysvdef.h sj_typedef.h sj_var.h sj_dict.h sj_struct.h \
|
||||
sj_rename.h const.h Paths.h sj_euc.h Struct.h sj_global.h kanakan.h \
|
||||
server.h
|
||||
|
|
@ -204,7 +204,7 @@ sj3_rkcv.o: sj3_rkcv.c wchar16.h key.h sj2.h sj_sysvdef.h kana.h rk.h \
|
|||
sj3dic.o: sj3dic.c sj_sysvdef.h sjtool.h sj3lib.h sj3dic.h
|
||||
sj3err.o: sj3err.c sj3err.h
|
||||
sj3lib.o: sj3lib.c config.h const.h Paths.h sj_euc.h sj_sysvdef.h \
|
||||
sj3err.h sj_hinsi.h sj3lib.h
|
||||
sj3err.h sj_hinshi.h sj3lib.h
|
||||
sj3stat.o: sj3stat.c const.h Paths.h sj_euc.h sj_sysvdef.h sj3err.h \
|
||||
sj3lib.h
|
||||
sj3ver.o: sj3ver.c sj2.h wchar16.h key.h sj_sysvdef.h
|
||||
|
|
@ -229,10 +229,10 @@ srchidx.o: srchidx.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
|||
srchnum.o: srchnum.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_yomi.h \
|
||||
sj_hinsi.h sj_suuji.h kanakan.h
|
||||
sj_hinshi.h sj_suuji.h kanakan.h
|
||||
stat_conv.o: stat_conv.c common.h conversion.h sj2.h wchar16.h key.h \
|
||||
sj_sysvdef.h sj3libsj3.h sj3lib.h henkan.h rk.h
|
||||
stbtbl.o: stbtbl.c sj_rename.h sj_typedef.h sj_yomi.h sj_hinsi.h
|
||||
stbtbl.o: stbtbl.c sj_rename.h sj_typedef.h sj_yomi.h sj_hinshi.h
|
||||
string.o: string.c config.h sj_euc.h sj_sysvdef.h sj3lib.h
|
||||
string2.o: string2.c const.h Paths.h sj_euc.h sj_sysvdef.h dicttool.h \
|
||||
sj_struct2.h
|
||||
|
|
@ -255,5 +255,5 @@ version2.o: version2.c sj2.h wchar16.h key.h sj_sysvdef.h
|
|||
wakachi.o: wakachi.c sj_kcnv.h sj_typedef.h sj_rename.h sj_var.h \
|
||||
sj_dict.h sj_study.h sj_table.h sj_func.h sj_struct.h Struct.h const.h \
|
||||
Paths.h sj_euc.h sj_sysvdef.h sj_global.h sj_right.h \
|
||||
sj_hinsi.h kanakan.h
|
||||
sj_hinshi.h kanakan.h
|
||||
wc16_str.o: wc16_str.c sj_sysvdef.h sj_euc.h wchar16.h key.h
|
||||
|
|
|
|||
10
Sjrc
10
Sjrc
|
|
@ -26,12 +26,6 @@
|
|||
## from Sony Corporation.
|
||||
##
|
||||
|
||||
##
|
||||
## $SonyRCSfile: Sjrc,v $
|
||||
## $SonyRevision: 1.1 $
|
||||
## $SonyDate: 1994/06/03 08:03:06 $
|
||||
##
|
||||
|
||||
# SJ3用セット・アップ・ファイル
|
||||
# .sjrc file sample
|
||||
# sj3 1.00, 1990 Sony Corp.
|
||||
|
|
@ -48,7 +42,7 @@
|
|||
.key.right ^F
|
||||
.key.left ^B
|
||||
.key.kakuchou ^O
|
||||
.key.syukusyou ^I
|
||||
.key.shukushou ^I
|
||||
.key.wrap ^N
|
||||
.key.wrapback ^P
|
||||
.key.saihenkan ^Y
|
||||
|
|
@ -81,7 +75,7 @@
|
|||
|
||||
# その他キーが押されたときのコマンド・キーの指定
|
||||
#.etckey.toroku hira
|
||||
#.etckey.syoukyo zkatakana
|
||||
#.etckey.shoukyo zkatakana
|
||||
#.etckey.help hkatakana
|
||||
#.etckey.sjrc zalpha
|
||||
|
||||
|
|
|
|||
5
Sjrk
5
Sjrk
|
|
@ -26,11 +26,6 @@
|
|||
## from Sony Corporation.
|
||||
##
|
||||
|
||||
##
|
||||
## $SonyRCSfile: Sjrk,v $
|
||||
## $SonyRevision: 1.1 $
|
||||
## $SonyDate: 1994/06/03 08:03:07 $
|
||||
##
|
||||
#
|
||||
# ローマ字かな変換規則定義ファイル
|
||||
# デフォルトファイル
|
||||
|
|
|
|||
186
Struct.h
186
Struct.h
|
|
@ -41,133 +41,133 @@
|
|||
#include "sj_var.h"
|
||||
|
||||
typedef struct global {
|
||||
JREC *Jmaxjptr;
|
||||
CLREC *Jmaxclptr;
|
||||
JREC *Jjrt1st;
|
||||
CLREC *Jclt1st;
|
||||
JREC *Jjrt2nd;
|
||||
CLREC *Jclt2nd;
|
||||
CLREC *Jselcl;
|
||||
JREC* Jmaxjptr;
|
||||
CLREC* Jmaxclptr;
|
||||
JREC* Jjrt1st;
|
||||
CLREC* Jclt1st;
|
||||
JREC* Jjrt2nd;
|
||||
CLREC* Jclt2nd;
|
||||
CLREC* Jselcl;
|
||||
|
||||
short Jselectid;
|
||||
short Jtrank;
|
||||
short Jnrank;
|
||||
short Jselectid;
|
||||
short Jtrank;
|
||||
short Jnrank;
|
||||
|
||||
unsigned char *Jinputyomi;
|
||||
unsigned char *Jcnvstart;
|
||||
short Jcnvlen;
|
||||
unsigned char *Jystart;
|
||||
unsigned char Jhyomi[MaxPhInputLen + 1];
|
||||
unsigned char Jorgyomi[MaxClInputLen*2 + 1];
|
||||
unsigned char* Jinputyomi;
|
||||
unsigned char* Jcnvstart;
|
||||
short Jcnvlen;
|
||||
unsigned char* Jystart;
|
||||
unsigned char Jhyomi[MaxPhInputLen + 1];
|
||||
unsigned char Jorgyomi[MaxClInputLen * 2 + 1];
|
||||
|
||||
unsigned char Jkanjibuf[MinPhOutputLen];
|
||||
unsigned char *Jkanjipos;
|
||||
unsigned char *Jkanjitmp;
|
||||
short Jkanjilen;
|
||||
unsigned char Jkanjibuf[MinPhOutputLen];
|
||||
unsigned char* Jkanjipos;
|
||||
unsigned char* Jkanjitmp;
|
||||
short Jkanjilen;
|
||||
|
||||
unsigned char Jdicinl;
|
||||
unsigned char Jdicsaml;
|
||||
TypeDicSeg Jprevseg;
|
||||
unsigned char Jdicinl;
|
||||
unsigned char Jdicsaml;
|
||||
TypeDicSeg Jprevseg;
|
||||
|
||||
unsigned char Jfzkcount;
|
||||
unsigned char Jfzk_ka_flg;
|
||||
FREC Jfzktbl[MAXFREC];
|
||||
unsigned char Jfzkcount;
|
||||
unsigned char Jfzk_ka_flg;
|
||||
FREC Jfzktbl[MAXFREC];
|
||||
|
||||
unsigned char Jheadcode;
|
||||
unsigned char Jheadlen;
|
||||
unsigned char Jheadcode;
|
||||
unsigned char Jheadlen;
|
||||
|
||||
unsigned char Jgobilen;
|
||||
unsigned char Jgobilen;
|
||||
|
||||
TypeGram Jprevclgrm;
|
||||
TypeCnct Jprevclrow;
|
||||
unsigned char Jnextcllen;
|
||||
TypeGram Jprevclgrm;
|
||||
TypeCnct Jprevclrow;
|
||||
unsigned char Jnextcllen;
|
||||
|
||||
short Jkhcount;
|
||||
short Jnkhcount;
|
||||
KHREC Jkouhotbl[MaxKouhoNumber];
|
||||
STDYIN *Jstdytop;
|
||||
short Jkhcount;
|
||||
short Jnkhcount;
|
||||
KHREC Jkouhotbl[MaxKouhoNumber];
|
||||
STDYIN* Jstdytop;
|
||||
|
||||
DICT *Jcurdict;
|
||||
DICTL *Jdictlist;
|
||||
unsigned char *Jdicbuf;
|
||||
unsigned char *Jidxbuf;
|
||||
TypeIdxOfs *Jidxofs;
|
||||
unsigned char *Jaskknj[MaxKnjAskNumber];
|
||||
unsigned char *Jaskknj_k[MaxKnjAskNumber];
|
||||
DICT* Jcurdict;
|
||||
DICTL* Jdictlist;
|
||||
unsigned char* Jdicbuf;
|
||||
unsigned char* Jidxbuf;
|
||||
TypeIdxOfs* Jidxofs;
|
||||
unsigned char* Jaskknj[MaxKnjAskNumber];
|
||||
unsigned char* Jaskknj_k[MaxKnjAskNumber];
|
||||
|
||||
STDY *Jcurstdy;
|
||||
STDY* Jcurstdy;
|
||||
|
||||
unsigned short Jsuuji_wbuf[NumWordBuf];
|
||||
unsigned char Jsuuji_ubuf[NumKetaLength];
|
||||
TypeClass Jsuuji_class;
|
||||
unsigned char Jsuuji_comma;
|
||||
unsigned char Jsuuji_keta;
|
||||
unsigned char *Jsuuji_yptr;
|
||||
unsigned char Jsuuji_len;
|
||||
unsigned char Jsuuji_exit;
|
||||
unsigned short *Jsuuji_wkeep;
|
||||
unsigned char *Jsuuji_ukeep;
|
||||
unsigned short Jsuuji_wbuf[NumWordBuf];
|
||||
unsigned char Jsuuji_ubuf[NumKetaLength];
|
||||
TypeClass Jsuuji_class;
|
||||
unsigned char Jsuuji_comma;
|
||||
unsigned char Jsuuji_keta;
|
||||
unsigned char* Jsuuji_yptr;
|
||||
unsigned char Jsuuji_len;
|
||||
unsigned char Jsuuji_exit;
|
||||
unsigned short* Jsuuji_wkeep;
|
||||
unsigned char* Jsuuji_ukeep;
|
||||
|
||||
unsigned char Jpeepyomi[MaxWdYomiLen * 2 + 1];
|
||||
unsigned char Jpeepknj[MaxWdKanjiLen + 1];
|
||||
TypeGram Jpeepgrm;
|
||||
unsigned char *Jpeepdptr;
|
||||
unsigned char *Jpeephptr;
|
||||
unsigned char *Jpeepkptr;
|
||||
TypeDicSeg Jpeepidx;
|
||||
unsigned char Jpeepyomi[MaxWdYomiLen * 2 + 1];
|
||||
unsigned char Jpeepknj[MaxWdKanjiLen + 1];
|
||||
TypeGram Jpeepgrm;
|
||||
unsigned char* Jpeepdptr;
|
||||
unsigned char* Jpeephptr;
|
||||
unsigned char* Jpeepkptr;
|
||||
TypeDicSeg Jpeepidx;
|
||||
} Global;
|
||||
|
||||
typedef struct dictfile {
|
||||
DICT dict;
|
||||
int refcnt;
|
||||
fd_set lock;
|
||||
FILE *fp;
|
||||
int fd;
|
||||
DICT dict;
|
||||
int refcnt;
|
||||
fd_set lock;
|
||||
FILE* fp;
|
||||
int fd;
|
||||
|
||||
unsigned char *buffer;
|
||||
long bufsiz;
|
||||
unsigned char* buffer;
|
||||
long bufsiz;
|
||||
|
||||
long idxstrt;
|
||||
long segstrt;
|
||||
long idxstrt;
|
||||
long segstrt;
|
||||
|
||||
TypeIdxOfs *ofsptr;
|
||||
TypeIdxOfs* ofsptr;
|
||||
|
||||
struct dictfile *link;
|
||||
struct dictfile* link;
|
||||
} DictFile;
|
||||
|
||||
typedef struct stdyfile {
|
||||
STDY stdy;
|
||||
int refcnt;
|
||||
ino_t inode;
|
||||
FILE *fp;
|
||||
int fd;
|
||||
STDY stdy;
|
||||
int refcnt;
|
||||
ino_t inode;
|
||||
FILE* fp;
|
||||
int fd;
|
||||
|
||||
unsigned char *header;
|
||||
unsigned char* header;
|
||||
|
||||
struct stdyfile *link;
|
||||
struct stdyfile* link;
|
||||
} StdyFile;
|
||||
|
||||
typedef struct workarea {
|
||||
int refcnt;
|
||||
int lock;
|
||||
int refcnt;
|
||||
int lock;
|
||||
|
||||
struct workarea *link;
|
||||
struct workarea* link;
|
||||
|
||||
Global global;
|
||||
Global global;
|
||||
} WorkArea;
|
||||
|
||||
typedef struct client {
|
||||
int fd;
|
||||
char host[HostNameLen];
|
||||
char user[UserNameLen];
|
||||
char prog[ProgNameLen];
|
||||
int fd;
|
||||
char host[HostNameLen];
|
||||
char user[UserNameLen];
|
||||
char prog[ProgNameLen];
|
||||
|
||||
WorkArea *work;
|
||||
StdyFile *stdy;
|
||||
short version;
|
||||
unsigned char def_char[2];
|
||||
uid_t uid;
|
||||
struct client *next;
|
||||
WorkArea* work;
|
||||
StdyFile* stdy;
|
||||
short version;
|
||||
unsigned char def_char[2];
|
||||
uid_t uid;
|
||||
struct client* next;
|
||||
} Client;
|
||||
|
||||
#endif /* SJ3_STRUCT_H_ */
|
||||
|
|
|
|||
|
|
@ -26,11 +26,6 @@
|
|||
## from Sony Corporation.
|
||||
##
|
||||
|
||||
##
|
||||
## $SonyRCSfile: Xterm.cvt,v $
|
||||
## $SonyRevision: 1.1 $
|
||||
## $SonyDate: 1994/06/03 08:03:08 $
|
||||
##
|
||||
# sj3 command key alias file
|
||||
# for xterm
|
||||
#
|
||||
|
|
|
|||
384
adddic.c
384
adddic.c
|
|
@ -27,134 +27,121 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: adddic.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:26 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
static unsigned int checkdict(unsigned char* kanji, TypeGram grm);
|
||||
static int cal_nextym(unsigned char* ptr);
|
||||
static int usr_freelen(void);
|
||||
static void sprt_seg(TypeDicSeg seg, TypeDicOfs ofs);
|
||||
static void apnd_uidx(TypeDicSeg seg, unsigned char* yomi, int len);
|
||||
|
||||
static int cal_nextym(unsigned char* ptr);
|
||||
static int usr_freelen(void);
|
||||
static void sprt_seg(TypeDicSeg seg, TypeDicOfs ofs);
|
||||
static void apnd_uidx(TypeDicSeg seg, unsigned char* yomi, int len);
|
||||
|
||||
unsigned int
|
||||
adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
||||
{
|
||||
unsigned int err;
|
||||
unsigned char yptr[MaxWdYomiLen+1];
|
||||
unsigned char kptr[MaxWdKanjiLen+1];
|
||||
int klen;
|
||||
TypeDicSeg segnum;
|
||||
int saml;
|
||||
TypeDicOfs dstofs;
|
||||
TypeDicOfs douofs;
|
||||
TypeDicOfs hnsofs;
|
||||
TypeDicOfs knjofs;
|
||||
TypeDicOfs nxtask;
|
||||
TypeDicOfs newsiz;
|
||||
TypeDicOfs oldsiz;
|
||||
TypeDicOfs fresiz;
|
||||
TypeIdxOfs freidx;
|
||||
unsigned char *douptr;
|
||||
unsigned char *dstptr;
|
||||
TypeDicOfs pos;
|
||||
unsigned char *p1;
|
||||
int i;
|
||||
int nlen, plen;
|
||||
int size;
|
||||
STDYIN *stdy;
|
||||
STDYOUT stdydat;
|
||||
adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinshi) {
|
||||
unsigned int err;
|
||||
unsigned char yptr[MaxWdYomiLen + 1];
|
||||
unsigned char kptr[MaxWdKanjiLen + 1];
|
||||
int klen;
|
||||
TypeDicSeg segnum;
|
||||
int saml;
|
||||
TypeDicOfs dstofs;
|
||||
TypeDicOfs douofs;
|
||||
TypeDicOfs hnsofs;
|
||||
TypeDicOfs knjofs;
|
||||
TypeDicOfs nxtask;
|
||||
TypeDicOfs newsiz;
|
||||
TypeDicOfs oldsiz;
|
||||
TypeDicOfs fresiz;
|
||||
TypeIdxOfs freidx;
|
||||
unsigned char* douptr;
|
||||
unsigned char* dstptr;
|
||||
TypeDicOfs pos;
|
||||
unsigned char* p1;
|
||||
int i;
|
||||
int nlen, plen;
|
||||
int size;
|
||||
STDYIN* stdy;
|
||||
STDYOUT stdydat;
|
||||
|
||||
if ((err = addel_arg(yomi, kanji, hinsi, yptr, sizeof(yptr))) != 0)
|
||||
if((err = addel_arg(yomi, kanji, hinshi, yptr, sizeof(yptr))) != 0)
|
||||
return err;
|
||||
|
||||
inputyomi = yomi;
|
||||
cnvstart = ystart = yptr;
|
||||
cnvlen = strlen(yptr);
|
||||
cnvlen = strlen(yptr);
|
||||
|
||||
if ((err = checkdict(kanji, hinsi)) != 0)
|
||||
if((err = checkdict(kanji, hinshi)) != 0)
|
||||
return err;
|
||||
|
||||
if (!curdict -> maxunit) return AD_NotUserDict;
|
||||
if(!curdict->maxunit) return AD_NotUserDict;
|
||||
|
||||
klen = cvtknj(yomi, kanji, kptr);
|
||||
|
||||
newsiz = DouonBlkSizeNumber + cnvlen + (klen !=0 ? klen+1 : 0) + 2;
|
||||
newsiz = DouonBlkSizeNumber + cnvlen + (klen != 0 ? klen + 1 : 0) + 2;
|
||||
|
||||
if (newsiz > MaxDouonBlk) return AD_OvflwDouBlk;
|
||||
if (newsiz > curdict->seglen) return AD_OvflwDouBlk;
|
||||
if(newsiz > MaxDouonBlk) return AD_OvflwDouBlk;
|
||||
if(newsiz > curdict->seglen) return AD_OvflwDouBlk;
|
||||
|
||||
segnum = srchidx((TypeDicSeg)DicSegBase, cnvlen);
|
||||
|
||||
for ( ; ; ) {
|
||||
for(;;) {
|
||||
(*curdict->getdic)(curdict, segnum);
|
||||
i = srchkana(&p1, &saml);
|
||||
i = srchkana(&p1, &saml);
|
||||
dstofs = douofs = p1 - dicbuf;
|
||||
hnsofs = knjofs = 0;
|
||||
if (i) {
|
||||
i = srchgram(p1, &p1, hinsi);
|
||||
if(i) {
|
||||
i = srchgram(p1, &p1, hinshi);
|
||||
dstofs = hnsofs = p1 - dicbuf;
|
||||
if (i) {
|
||||
if(i) {
|
||||
srchkanji(&p1, kptr, klen);
|
||||
if (*p1 != HinsiBlkTerm) return AD_ArExist;
|
||||
if(*p1 != HinshiBlkTerm) return AD_ArExist;
|
||||
dstofs = knjofs = p1 - dicbuf;
|
||||
}
|
||||
}
|
||||
|
||||
p1 = dicbuf + douofs;
|
||||
|
||||
if (!hnsofs) {
|
||||
if(!hnsofs) {
|
||||
oldsiz = 0;
|
||||
nlen = cnvlen - saml;
|
||||
newsiz = DouonBlkSizeNumber + nlen;
|
||||
nlen = cnvlen - saml;
|
||||
newsiz = DouonBlkSizeNumber + nlen;
|
||||
|
||||
nxtask = cal_nextym(p1);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
oldsiz = newsiz = getsize(p1);
|
||||
nxtask = 0;
|
||||
nxtask = 0;
|
||||
}
|
||||
if (!knjofs) newsiz += 2;
|
||||
if(!knjofs) newsiz += 2;
|
||||
|
||||
newsiz += (klen != 0 ? klen+1 : 0);
|
||||
newsiz += (klen != 0 ? klen + 1 : 0);
|
||||
|
||||
fresiz = usr_freelen();
|
||||
|
||||
if ((unsigned int) (newsiz - oldsiz - nxtask) <=
|
||||
(unsigned int) fresiz) break;
|
||||
if((unsigned int)(newsiz - oldsiz - nxtask) <=
|
||||
(unsigned int)fresiz) break;
|
||||
|
||||
if (segend(p1) && (segnum + 1 < curdict->segunit)) {
|
||||
if(segend(p1) && (segnum + 1 < curdict->segunit)) {
|
||||
segnum++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (curdict->segunit >= curdict->maxunit)
|
||||
if(curdict->segunit >= curdict->maxunit)
|
||||
return AD_OvflwUsrDic;
|
||||
|
||||
freidx = count_uidx();
|
||||
|
||||
if ((unsigned int) (douofs + newsiz) <= curdict->seglen) {
|
||||
if (hnsofs) p1 = getntag(p1);
|
||||
if((unsigned int)(douofs + newsiz) <= curdict->seglen) {
|
||||
if(hnsofs) p1 = getntag(p1);
|
||||
pos = p1 - dicbuf;
|
||||
|
||||
nlen = getnlen(p1);
|
||||
if ((unsigned int) freidx < getplen(p1) + nlen + 1)
|
||||
if((unsigned int)freidx < getplen(p1) + nlen + 1)
|
||||
return AD_OvflwIndex;
|
||||
|
||||
if ((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
return AD_OvflwUsrDic;
|
||||
|
||||
sprt_seg(segnum, pos);
|
||||
|
|
@ -163,10 +150,10 @@ adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
break;
|
||||
}
|
||||
|
||||
if (segend(p1)) {
|
||||
if ((unsigned int) freidx < cnvlen + 1) return AD_OvflwIndex;
|
||||
if(segend(p1)) {
|
||||
if((unsigned int)freidx < cnvlen + 1) return AD_OvflwIndex;
|
||||
|
||||
if ((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
return AD_OvflwUsrDic;
|
||||
curdict->segunit++;
|
||||
|
||||
|
|
@ -182,10 +169,10 @@ adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
|
||||
else {
|
||||
nlen = getnlen(p1);
|
||||
if ((unsigned int) freidx < getplen(p1) + nlen + 1)
|
||||
if((unsigned int)freidx < getplen(p1) + nlen + 1)
|
||||
return AD_OvflwIndex;
|
||||
|
||||
if ((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
return AD_OvflwUsrDic;
|
||||
|
||||
sprt_seg(segnum, douofs);
|
||||
|
|
@ -196,15 +183,15 @@ adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
|
||||
douptr = dicbuf + douofs;
|
||||
|
||||
if (nxtask) {
|
||||
unsigned char *tp;
|
||||
if(nxtask) {
|
||||
unsigned char* tp;
|
||||
|
||||
size = getsize(douptr) - nxtask;
|
||||
plen = getplen(douptr) + nxtask;
|
||||
nlen = getnlen(douptr) - nxtask;
|
||||
size = getsize(douptr) - nxtask;
|
||||
plen = getplen(douptr) + nxtask;
|
||||
nlen = getnlen(douptr) - nxtask;
|
||||
*douptr = (size >> 8);
|
||||
if (nlen & 0x10) *douptr |= NokoriYomiTop;
|
||||
if (plen & 0x10) *douptr |= AssyukuYomiTop;
|
||||
if(nlen & 0x10) *douptr |= NokoriYomiTop;
|
||||
if(plen & 0x10) *douptr |= AsshukuYomiTop;
|
||||
*(douptr + 1) = size;
|
||||
*(douptr + 2) = ((nlen & 0x0f) | ((plen & 0x0f) << 4));
|
||||
|
||||
|
|
@ -214,115 +201,112 @@ adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
}
|
||||
|
||||
dstptr = dicbuf + dstofs;
|
||||
size = newsiz - oldsiz;
|
||||
p1 = dicbuf + curdict->seglen;
|
||||
size = newsiz - oldsiz;
|
||||
p1 = dicbuf + curdict->seglen;
|
||||
mvmemd(p1 - size, p1, p1 - dstptr - size);
|
||||
|
||||
if (!hnsofs) {
|
||||
if (douofs == segtop() - dicbuf) {
|
||||
if(!hnsofs) {
|
||||
if(douofs == segtop() - dicbuf) {
|
||||
chg_uidx(segnum, yptr, cnvlen);
|
||||
}
|
||||
|
||||
*dstptr = 0;
|
||||
nlen = cnvlen - saml;
|
||||
if (nlen & 0x10) *dstptr |= NokoriYomiTop;
|
||||
if (saml & 0x10) *dstptr |= AssyukuYomiTop;
|
||||
*dstptr = 0;
|
||||
nlen = cnvlen - saml;
|
||||
if(nlen & 0x10) *dstptr |= NokoriYomiTop;
|
||||
if(saml & 0x10) *dstptr |= AsshukuYomiTop;
|
||||
*dstptr++ |= (size >> 8);
|
||||
*dstptr++ = size;
|
||||
*dstptr++ = ((nlen&0x0f)|((saml&0x0f)<<4));
|
||||
*dstptr++ = size;
|
||||
*dstptr++ = ((nlen & 0x0f) | ((saml & 0x0f) << 4));
|
||||
|
||||
while (saml < cnvlen) *dstptr++ = yptr[saml++];
|
||||
while(saml < cnvlen) *dstptr++ = yptr[saml++];
|
||||
}
|
||||
|
||||
else {
|
||||
plen = getplen(douptr);
|
||||
nlen = getnlen(douptr);
|
||||
plen = getplen(douptr);
|
||||
nlen = getnlen(douptr);
|
||||
*douptr = (newsiz >> 8);
|
||||
if (nlen & 0x10) *douptr |= NokoriYomiTop;
|
||||
if (plen & 0x10) *douptr |= AssyukuYomiTop;
|
||||
if(nlen & 0x10) *douptr |= NokoriYomiTop;
|
||||
if(plen & 0x10) *douptr |= AsshukuYomiTop;
|
||||
*(douptr + 1) = newsiz;
|
||||
*(douptr + 2) = ((nlen & 0x0f) | ((plen & 0x0f) << 4));
|
||||
}
|
||||
|
||||
if (!knjofs) *dstptr++ = hinsi;
|
||||
if(!knjofs) *dstptr++ = hinshi;
|
||||
|
||||
stdydat.stdy1.offset = dstptr - dicbuf;
|
||||
for (saml = 0 ; saml < klen ; ) *dstptr++ = kptr[saml++];
|
||||
if (klen > 0) *dstptr++ = KanjiStrEnd;
|
||||
for(saml = 0; saml < klen;) *dstptr++ = kptr[saml++];
|
||||
if(klen > 0) *dstptr++ = KanjiStrEnd;
|
||||
|
||||
if (!knjofs) *dstptr++ = HinsiBlkTerm;
|
||||
if(!knjofs) *dstptr++ = HinshiBlkTerm;
|
||||
|
||||
(*curdict->putdic)(curdict, segnum);
|
||||
|
||||
if (StudyExist()) {
|
||||
if(StudyExist()) {
|
||||
size -= nxtask;
|
||||
for (i = StudyCount, stdy = StudyDict ; i-- ; stdy++) {
|
||||
if (stdy -> dicid != curdict->dicid) continue;
|
||||
if (stdy -> seg != segnum) continue;
|
||||
if (stdy -> offset >= dstofs) stdy -> offset += size;
|
||||
for(i = StudyCount, stdy = StudyDict; i--; stdy++) {
|
||||
if(stdy->dicid != curdict->dicid) continue;
|
||||
if(stdy->seg != segnum) continue;
|
||||
if(stdy->offset >= dstofs) stdy->offset += size;
|
||||
}
|
||||
|
||||
for (p1 = ClStudyDict ; !iseocl(p1) ; p1 = ClNextTag(p1)) {
|
||||
for(p1 = ClStudyDict; !iseocl(p1); p1 = ClNextTag(p1)) {
|
||||
err = strncmp(yptr, (unsigned char*)ClYomiPos(p1),
|
||||
(int)ClYomiLen(p1));
|
||||
if (err == MATCH) {
|
||||
(int)ClYomiLen(p1));
|
||||
if(err == MATCH) {
|
||||
delclsub(p1);
|
||||
mkclidx();
|
||||
putcldic();
|
||||
break;
|
||||
}
|
||||
else if (err == OVER)
|
||||
} else if(err == OVER)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
stdydat.stdy1.seg = segnum;
|
||||
stdydat.stdy1.dicid = curdict->dicid;
|
||||
stdydat.stdy1.styno = 0;
|
||||
stdydat.stdy1.sttkj = 0;
|
||||
stdydat.stdy1.ka_kj = 0;
|
||||
stdydat.stdy1.nmflg = 0;
|
||||
stdydat.hinshi = hinsi;
|
||||
stdydat.len = cnvlen;
|
||||
stdydat.sttlen = 0;
|
||||
stdydat.sttfg = 0;
|
||||
stdydat.ka_fg = 0;
|
||||
stdydat.stdy1.seg = segnum;
|
||||
stdydat.stdy1.dicid = curdict->dicid;
|
||||
stdydat.stdy1.styno = 0;
|
||||
stdydat.stdy1.sttkj = 0;
|
||||
stdydat.stdy1.ka_kj = 0;
|
||||
stdydat.stdy1.nmflg = 0;
|
||||
stdydat.hinshi = hinshi;
|
||||
stdydat.len = cnvlen;
|
||||
stdydat.sttlen = 0;
|
||||
stdydat.sttfg = 0;
|
||||
stdydat.ka_fg = 0;
|
||||
(void)study(&stdydat);
|
||||
|
||||
return AD_Done;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
checksub(unsigned char* kanji, TypeGram grm)
|
||||
{
|
||||
unsigned char *tagp;
|
||||
unsigned char *ptr;
|
||||
unsigned char *endp;
|
||||
int flg, nlen;
|
||||
int dounum;
|
||||
unsigned char buf[MaxWdKanjiLen + 1];
|
||||
checksub(unsigned char* kanji, TypeGram grm) {
|
||||
unsigned char* tagp;
|
||||
unsigned char* ptr;
|
||||
unsigned char* endp;
|
||||
int flg, nlen;
|
||||
int dounum;
|
||||
unsigned char buf[MaxWdKanjiLen + 1];
|
||||
|
||||
dicinl = cnvlen;
|
||||
dicinl = cnvlen;
|
||||
dicsaml = 0;
|
||||
prevseg = (TypeDicSeg)-1;
|
||||
for (;;) {
|
||||
if (!(tagp = srchdict(tagp))) return 0;
|
||||
if (cnvlen == getnlen(tagp) + getplen(tagp))
|
||||
for(;;) {
|
||||
if(!(tagp = srchdict(tagp))) return 0;
|
||||
if(cnvlen == getnlen(tagp) + getplen(tagp))
|
||||
break;
|
||||
}
|
||||
|
||||
dounum = 0;
|
||||
nlen = getnlen(tagp);
|
||||
ptr = tagp + DouonBlkSizeNumber + nlen;
|
||||
endp = tagp + getsize(tagp);
|
||||
nlen = getnlen(tagp);
|
||||
ptr = tagp + DouonBlkSizeNumber + nlen;
|
||||
endp = tagp + getsize(tagp);
|
||||
|
||||
while (ptr < endp) {
|
||||
while(ptr < endp) {
|
||||
flg = (grm == *ptr++);
|
||||
while (*ptr != HinsiBlkTerm) {
|
||||
if (flg) {
|
||||
while(*ptr != HinshiBlkTerm) {
|
||||
if(flg) {
|
||||
buf[getkanji(inputyomi, cnvlen, ptr, buf)] = 0;
|
||||
if (cmpstr(kanji, buf)) return -1;
|
||||
if(cmpstr(kanji, buf)) return -1;
|
||||
}
|
||||
|
||||
dounum++;
|
||||
|
|
@ -335,19 +319,17 @@ checksub(unsigned char* kanji, TypeGram grm)
|
|||
return dounum;
|
||||
}
|
||||
|
||||
|
||||
static unsigned int
|
||||
checkdict(unsigned char* kanji, TypeGram grm)
|
||||
{
|
||||
DICTL *dp;
|
||||
int dounum = 0;
|
||||
int tmp;
|
||||
DICT *tmpdict;
|
||||
checkdict(unsigned char* kanji, TypeGram grm) {
|
||||
DICTL* dp;
|
||||
int dounum = 0;
|
||||
int tmp;
|
||||
DICT* tmpdict;
|
||||
|
||||
tmpdict = curdict;
|
||||
for (dp = dictlist ; dp ; dp = dp -> next) {
|
||||
curdict = dp -> dict;
|
||||
if ((tmp = checksub(kanji, grm)) < 0) {
|
||||
for(dp = dictlist; dp; dp = dp->next) {
|
||||
curdict = dp->dict;
|
||||
if((tmp = checksub(kanji, grm)) < 0) {
|
||||
curdict = tmpdict;
|
||||
return AD_ArExist;
|
||||
}
|
||||
|
|
@ -356,26 +338,24 @@ checkdict(unsigned char* kanji, TypeGram grm)
|
|||
}
|
||||
curdict = tmpdict;
|
||||
|
||||
if (MaxKouhoNumber <= dounum) return AD_OvflwDouNum;
|
||||
if(MaxKouhoNumber <= dounum) return AD_OvflwDouNum;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
cal_nextym(unsigned char* ptr)
|
||||
{
|
||||
int count = 0;
|
||||
unsigned char *src;
|
||||
int len;
|
||||
cal_nextym(unsigned char* ptr) {
|
||||
int count = 0;
|
||||
unsigned char* src;
|
||||
int len;
|
||||
|
||||
if (!segend(ptr)) {
|
||||
if(!segend(ptr)) {
|
||||
src = cnvstart + getplen(ptr);
|
||||
len = getnlen(ptr);
|
||||
ptr += DouonBlkSizeNumber;
|
||||
|
||||
while (len--) {
|
||||
if (*ptr++ == *src++)
|
||||
while(len--) {
|
||||
if(*ptr++ == *src++)
|
||||
count++;
|
||||
else
|
||||
break;
|
||||
|
|
@ -385,34 +365,30 @@ cal_nextym(unsigned char* ptr)
|
|||
return count;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
usr_freelen(void)
|
||||
{
|
||||
usr_freelen(void) {
|
||||
unsigned char* ptr;
|
||||
|
||||
ptr = segtop();
|
||||
while (!segend(ptr)) ptr += getsize(ptr);
|
||||
while(!segend(ptr)) ptr += getsize(ptr);
|
||||
|
||||
return(curdict->seglen - (ptr - dicbuf));
|
||||
return (curdict->seglen - (ptr - dicbuf));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sprt_seg(TypeDicSeg seg, TypeDicOfs ofs)
|
||||
{
|
||||
TypeDicSeg s;
|
||||
unsigned char *pos;
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
int i;
|
||||
int j;
|
||||
int ylen, nlen;
|
||||
TypeDicID dicid;
|
||||
unsigned char yomi[MaxWdYomiLen];
|
||||
STDYIN *stdy;
|
||||
sprt_seg(TypeDicSeg seg, TypeDicOfs ofs) {
|
||||
TypeDicSeg s;
|
||||
unsigned char* pos;
|
||||
unsigned char* p;
|
||||
unsigned char* q;
|
||||
int i;
|
||||
int j;
|
||||
int ylen, nlen;
|
||||
TypeDicID dicid;
|
||||
unsigned char yomi[MaxWdYomiLen];
|
||||
STDYIN* stdy;
|
||||
|
||||
for (s = curdict->segunit - 1 ; s >= seg ; s--) {
|
||||
for(s = curdict->segunit - 1; s >= seg; s--) {
|
||||
(*curdict->getdic)(curdict, s);
|
||||
(*curdict->putdic)(curdict, s + 1);
|
||||
}
|
||||
|
|
@ -423,21 +399,21 @@ sprt_seg(TypeDicSeg seg, TypeDicOfs ofs)
|
|||
|
||||
pos = dicbuf + ofs;
|
||||
|
||||
for (p = segtop() ; (p <= pos) && !segend(p) ; p = q) {
|
||||
q = getntag(p);
|
||||
i = getplen(p);
|
||||
for(p = segtop(); (p <= pos) && !segend(p); p = q) {
|
||||
q = getntag(p);
|
||||
i = getplen(p);
|
||||
nlen = getnlen(p);
|
||||
j = (nlen != 0) ? nlen+1: 0;
|
||||
j = (nlen != 0) ? nlen + 1 : 0;
|
||||
p += DouonBlkSizeNumber;
|
||||
while (j-- > 0) yomi[i++] = *p++;
|
||||
while(j-- > 0) yomi[i++] = *p++;
|
||||
}
|
||||
|
||||
nlen = getnlen(pos);
|
||||
ylen = (i = getplen(pos)) + (j = nlen);
|
||||
ylen = (i = getplen(pos)) + (j = nlen);
|
||||
|
||||
apnd_uidx(seg, yomi, ylen);
|
||||
|
||||
set_size(segtop(), getsize(pos) + i, 0, ylen);
|
||||
set_size(segtop(), getsize(pos) + i, 0, ylen);
|
||||
|
||||
mvmemi(yomi, (p = segtop() + DouonBlkSizeNumber), ylen);
|
||||
|
||||
|
|
@ -451,18 +427,18 @@ sprt_seg(TypeDicSeg seg, TypeDicOfs ofs)
|
|||
|
||||
(*curdict->putdic)(curdict, seg + 1);
|
||||
|
||||
if (StudyExist()) {
|
||||
dicid = curdict -> dicid;
|
||||
for (i = StudyCount, stdy = StudyDict ; i-- > 0 ; stdy++) {
|
||||
if (stdy -> dicid != dicid)
|
||||
if(StudyExist()) {
|
||||
dicid = curdict->dicid;
|
||||
for(i = StudyCount, stdy = StudyDict; i-- > 0; stdy++) {
|
||||
if(stdy->dicid != dicid)
|
||||
continue;
|
||||
else if (stdy -> seg < seg)
|
||||
else if(stdy->seg < seg)
|
||||
continue;
|
||||
else if (stdy -> seg > seg)
|
||||
stdy -> seg += 1;
|
||||
else if (stdy -> offset >= ofs) {
|
||||
stdy -> seg += 1;
|
||||
stdy -> offset -= j;
|
||||
else if(stdy->seg > seg)
|
||||
stdy->seg += 1;
|
||||
else if(stdy->offset >= ofs) {
|
||||
stdy->seg += 1;
|
||||
stdy->offset -= j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -472,20 +448,18 @@ sprt_seg(TypeDicSeg seg, TypeDicOfs ofs)
|
|||
(*curdict->putdic)(curdict, seg);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
apnd_uidx(TypeDicSeg seg, unsigned char* yomi, int len)
|
||||
{
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
apnd_uidx(TypeDicSeg seg, unsigned char* yomi, int len) {
|
||||
unsigned char* p;
|
||||
unsigned char* q;
|
||||
|
||||
p = get_idxptr(seg);
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
|
||||
q = idxbuf + curdict->idxlen;
|
||||
mvmemd(q - (len + 1), q, (int)(q - (len + 1) - p));
|
||||
|
||||
while (len--) *p++ = *yomi++;
|
||||
while(len--) *p++ = *yomi++;
|
||||
*p = 0;
|
||||
|
||||
(*curdict->putidx)(curdict, 0);
|
||||
|
|
|
|||
331
addelcmn.c
331
addelcmn.c
|
|
@ -27,139 +27,108 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: addelcmn.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:27 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_hinsi.h"
|
||||
#include "sj_hinshi.h"
|
||||
#include "sj_yomi.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int sj2cd_str();
|
||||
void mvmemi(), mvmemd(), mkidxtbl();
|
||||
|
||||
int sj2cd_str();
|
||||
void mvmemi(), mvmemd(), mkidxtbl();
|
||||
|
||||
|
||||
|
||||
void
|
||||
set_size (unsigned char *p, int size, int plen, int nlen)
|
||||
{
|
||||
void set_size(unsigned char* p, int size, int plen, int nlen) {
|
||||
*p = (unsigned char)(size >> 8);
|
||||
if (nlen & 0x10) *p |= NokoriYomiTop;
|
||||
if (plen & 0x10) *p |= AssyukuYomiTop;
|
||||
if(nlen & 0x10) *p |= NokoriYomiTop;
|
||||
if(plen & 0x10) *p |= AsshukuYomiTop;
|
||||
*(p + 1) = (unsigned char)size;
|
||||
*(p + 2) = (unsigned char)((nlen & 0x0f) | ((plen & 0x0f) << 4));
|
||||
}
|
||||
|
||||
static int
|
||||
isvyomi(unsigned char* yp) {
|
||||
int len;
|
||||
|
||||
if(!*yp) return FALSE;
|
||||
|
||||
static int
|
||||
isvyomi (unsigned char *yp)
|
||||
{
|
||||
int len;
|
||||
if(!(Chrtbl[*yp] & DICTOP)) return FALSE;
|
||||
|
||||
if (!*yp) return FALSE;
|
||||
|
||||
if (!(Chrtbl[*yp] & DICTOP)) return FALSE;
|
||||
|
||||
for (len = 0 ; *yp ; yp++) {
|
||||
if (!(Chrtbl[*yp]) || (*yp >= Y_KUTEN)) return FALSE;
|
||||
if (++len > MaxWdYomiLen) return FALSE;
|
||||
for(len = 0; *yp; yp++) {
|
||||
if(!(Chrtbl[*yp]) || (*yp >= Y_KUTEN)) return FALSE;
|
||||
if(++len > MaxWdYomiLen) return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
isvknj(unsigned char* kanji) {
|
||||
int len;
|
||||
|
||||
if(!*kanji) return FALSE;
|
||||
|
||||
static int
|
||||
isvknj(unsigned char *kanji)
|
||||
{
|
||||
int len;
|
||||
|
||||
if (!*kanji) return FALSE;
|
||||
|
||||
for (len = 0 ; *kanji ; ) {
|
||||
if (*kanji == SS3) {
|
||||
for(len = 0; *kanji;) {
|
||||
if(*kanji == SS3) {
|
||||
kanji += 3;
|
||||
len += 2;
|
||||
} else
|
||||
|
||||
if (isknj1(*kanji)) {
|
||||
if(isknj1(*kanji)) {
|
||||
kanji += 2;
|
||||
len += 2;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
kanji++;
|
||||
len += 2;
|
||||
}
|
||||
|
||||
if (len > MaxWdKanjiLen) return FALSE;
|
||||
if(len > MaxWdKanjiLen) return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
isgrm(TypeGram gram) {
|
||||
int grm = gram;
|
||||
|
||||
|
||||
static int
|
||||
isgrm (TypeGram gram)
|
||||
{
|
||||
int grm = gram;
|
||||
|
||||
if (MEISI_1 <= grm && grm <= D_MEISI_6) return TRUE;
|
||||
if (MYOUJI <= grm && grm <= JOSUUSI2) return TRUE;
|
||||
if (KEIYOUSI_1 <= grm && grm <= DO_ZAHEN) return TRUE;
|
||||
if (DO_1DAN_1 <= grm && grm <= DO_WAGO_2) return TRUE;
|
||||
if (DO_KAGO_5 <= grm && grm <= DO_WAGO_5) return TRUE;
|
||||
if (DO_KAGO_6 <= grm && grm <= DO_WAGO_6) return TRUE;
|
||||
if (DO_1DAN_3 <= grm && grm <= DO_WAGO_3) return TRUE;
|
||||
if (DO_1DAN_4 <= grm && grm <= DO_WAGO_4) return TRUE;
|
||||
if (DO_KAGO_7 <= grm && grm <= DO_WAGO_7) return TRUE;
|
||||
if (DO_KAGO_8 <= grm && grm <= DO_WAGO_8) return TRUE;
|
||||
if (SP_SA_MI1 <= grm && grm <= TANKANJI) return TRUE;
|
||||
if(MEISHI_1 <= grm && grm <= D_MEISHI_6) return TRUE;
|
||||
if(MYOUJI <= grm && grm <= JOSUUSHI2) return TRUE;
|
||||
if(KEIYOUSHI_1 <= grm && grm <= DO_ZAHEN) return TRUE;
|
||||
if(DO_1DAN_1 <= grm && grm <= DO_WAGO_2) return TRUE;
|
||||
if(DO_KAGO_5 <= grm && grm <= DO_WAGO_5) return TRUE;
|
||||
if(DO_KAGO_6 <= grm && grm <= DO_WAGO_6) return TRUE;
|
||||
if(DO_1DAN_3 <= grm && grm <= DO_WAGO_3) return TRUE;
|
||||
if(DO_1DAN_4 <= grm && grm <= DO_WAGO_4) return TRUE;
|
||||
if(DO_KAGO_7 <= grm && grm <= DO_WAGO_7) return TRUE;
|
||||
if(DO_KAGO_8 <= grm && grm <= DO_WAGO_8) return TRUE;
|
||||
if(SP_SA_MI1 <= grm && grm <= TANKANJI) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned int
|
||||
addel_arg (unsigned char *yp, unsigned char *kp, TypeGram grm, unsigned char *nyp, int len)
|
||||
{
|
||||
unsigned int err = 0;
|
||||
addel_arg(unsigned char* yp, unsigned char* kp, TypeGram grm, unsigned char* nyp, int len) {
|
||||
unsigned int err = 0;
|
||||
|
||||
if (!sj2cd_str(yp, nyp, len)) err |= AD_BadYomi;
|
||||
if (!isvyomi(nyp)) err |= AD_BadYomi;
|
||||
if (!isvknj(kp)) err |= AD_BadKanji;
|
||||
if (!isgrm(grm)) err |= AD_BadHinsi;
|
||||
if(!sj2cd_str(yp, nyp, len)) err |= AD_BadYomi;
|
||||
if(!isvyomi(nyp)) err |= AD_BadYomi;
|
||||
if(!isvknj(kp)) err |= AD_BadKanji;
|
||||
if(!isgrm(grm)) err |= AD_BadHinshi;
|
||||
return err;
|
||||
}
|
||||
|
||||
static void
|
||||
yomi2kata(unsigned char* src, unsigned char* dst) {
|
||||
int first;
|
||||
int second;
|
||||
|
||||
|
||||
static void
|
||||
yomi2kata (unsigned char *src, unsigned char *dst)
|
||||
{
|
||||
int first;
|
||||
int second;
|
||||
|
||||
while ((first = *src++) != 0) {
|
||||
while((first = *src++) != 0) {
|
||||
second = *src++;
|
||||
|
||||
if (first != 0xa4) {
|
||||
if(first != 0xa4) {
|
||||
*dst++ = first;
|
||||
*dst++ = second;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*dst++ = 0xa5;
|
||||
*dst++ = second;
|
||||
}
|
||||
|
|
@ -168,87 +137,76 @@ yomi2kata (unsigned char *src, unsigned char *dst)
|
|||
*dst = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
top_strcmp (unsigned char *src, unsigned char *dst)
|
||||
{
|
||||
int i;
|
||||
for (i = 0 ; *src && (*src == *dst) ; src++, dst++) i++;
|
||||
static int
|
||||
top_strcmp(unsigned char* src, unsigned char* dst) {
|
||||
int i;
|
||||
for(i = 0; *src && (*src == *dst); src++, dst++) i++;
|
||||
i /= 2;
|
||||
return (i > MaxYomiAskNumber) ? MaxYomiAskNumber : i;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
last_strcmp (unsigned char *src, unsigned char *dst)
|
||||
{
|
||||
int slen;
|
||||
int dlen;
|
||||
static int
|
||||
last_strcmp(unsigned char* src, unsigned char* dst) {
|
||||
int slen;
|
||||
int dlen;
|
||||
|
||||
slen = strlen(src);
|
||||
dlen = strlen(dst);
|
||||
|
||||
if (dlen > MaxYomiAskNumber * 2) return 0;
|
||||
if(dlen > MaxYomiAskNumber * 2) return 0;
|
||||
|
||||
if (strcmp(src + (slen - dlen), dst)) return 0;
|
||||
if(strcmp(src + (slen - dlen), dst)) return 0;
|
||||
|
||||
return (dlen / 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
cvtknj (unsigned char *yomi, unsigned char *knj, unsigned char *dst)
|
||||
{
|
||||
unsigned char kana[MaxWdYomiLen * 2 + 1];
|
||||
int len;
|
||||
unsigned char *keep;
|
||||
int cvtknj(unsigned char* yomi, unsigned char* knj, unsigned char* dst) {
|
||||
unsigned char kana[MaxWdYomiLen * 2 + 1];
|
||||
int len;
|
||||
unsigned char* keep;
|
||||
|
||||
keep = dst;
|
||||
yomi2kata(yomi, kana);
|
||||
|
||||
if ((len = top_strcmp(yomi, knj)) != 0) {
|
||||
*dst = (unsigned char)(ZenHiraAssyuku | (len - 1));
|
||||
}
|
||||
else if ((len = top_strcmp(kana, knj)) != 0) {
|
||||
*dst = (unsigned char)(ZenKataAssyuku | (len - 1));
|
||||
if((len = top_strcmp(yomi, knj)) != 0) {
|
||||
*dst = (unsigned char)(ZenHiraAsshuku | (len - 1));
|
||||
} else if((len = top_strcmp(kana, knj)) != 0) {
|
||||
*dst = (unsigned char)(ZenKataAsshuku | (len - 1));
|
||||
}
|
||||
|
||||
if (len) {
|
||||
if(len) {
|
||||
knj += len * 2;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (*knj) {
|
||||
for ( ; ; ) {
|
||||
if ((len = last_strcmp(yomi, knj)) != 0) {
|
||||
*dst++ = (unsigned char)(ZenHiraAssyuku | (len - 1));
|
||||
if(*knj) {
|
||||
for(;;) {
|
||||
if((len = last_strcmp(yomi, knj)) != 0) {
|
||||
*dst++ = (unsigned char)(ZenHiraAsshuku | (len - 1));
|
||||
break;
|
||||
}
|
||||
else if ((len = last_strcmp(kana, knj)) != 0) {
|
||||
*dst++ = (unsigned char)(ZenKataAssyuku | (len - 1));
|
||||
} else if((len = last_strcmp(kana, knj)) != 0) {
|
||||
*dst++ = (unsigned char)(ZenKataAsshuku | (len - 1));
|
||||
break;
|
||||
}
|
||||
else if (*knj == SS2) {
|
||||
} else if(*knj == SS2) {
|
||||
knj++;
|
||||
*dst++ = (unsigned char)LeadingHankaku;
|
||||
*dst++ = *knj++;
|
||||
} else if (*knj == SS3) {
|
||||
} else if(*knj == SS3) {
|
||||
knj++;
|
||||
*dst++ = (*knj & NormalKanjiMask);
|
||||
knj++;
|
||||
*dst++ = (*knj & NormalKanjiMask); knj++;
|
||||
*dst++ = *knj++;
|
||||
} else if (*knj & 0x80) {
|
||||
*dst++ = (*knj & NormalKanjiMask); knj++;
|
||||
*dst++ = (*knj & NormalKanjiMask); knj++;
|
||||
}
|
||||
else {
|
||||
} else if(*knj & 0x80) {
|
||||
*dst++ = (*knj & NormalKanjiMask);
|
||||
knj++;
|
||||
*dst++ = (*knj & NormalKanjiMask);
|
||||
knj++;
|
||||
} else {
|
||||
*dst++ = (unsigned char)LeadingHankaku;
|
||||
*dst++ = *knj++;
|
||||
}
|
||||
|
||||
if (!*knj) {
|
||||
if(!*knj) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -259,32 +217,28 @@ cvtknj (unsigned char *yomi, unsigned char *knj, unsigned char *dst)
|
|||
return (dst - keep);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
srchkana (unsigned char **ptr, int *saml)
|
||||
{
|
||||
unsigned char *p;
|
||||
int cmp;
|
||||
int cnt = 0;
|
||||
unsigned char same;
|
||||
int flg = 0;
|
||||
int srchkana(unsigned char** ptr, int* saml) {
|
||||
unsigned char* p;
|
||||
int cmp;
|
||||
int cnt = 0;
|
||||
unsigned char same;
|
||||
int flg = 0;
|
||||
|
||||
same = 0;
|
||||
|
||||
p = segtop();
|
||||
|
||||
while (!segend(p)) {
|
||||
while(!segend(p)) {
|
||||
|
||||
if (flg == 0) {
|
||||
if(flg == 0) {
|
||||
cmp = yomicmp(cnvstart, p, &same);
|
||||
|
||||
if (cmp == OVER) break;
|
||||
if(cmp == OVER) break;
|
||||
|
||||
if (cmp == MATCH && *(cnvstart + same) == 0) {
|
||||
*ptr = p;
|
||||
if(cmp == MATCH && *(cnvstart + same) == 0) {
|
||||
*ptr = p;
|
||||
*saml = same;
|
||||
flg = 1;
|
||||
flg = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -292,99 +246,84 @@ srchkana (unsigned char **ptr, int *saml)
|
|||
cnt++;
|
||||
}
|
||||
|
||||
if (flg != 0) return cnt;
|
||||
if(flg != 0) return cnt;
|
||||
|
||||
*ptr = p;
|
||||
*ptr = p;
|
||||
*saml = same;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
srchgram (unsigned char *ptr, unsigned char **dst, TypeGram hinsi)
|
||||
{
|
||||
unsigned char *endp;
|
||||
int cnt = 0, nlen;
|
||||
int flg = FALSE;
|
||||
int srchgram(unsigned char* ptr, unsigned char** dst, TypeGram hinshi) {
|
||||
unsigned char* endp;
|
||||
int cnt = 0, nlen;
|
||||
int flg = FALSE;
|
||||
|
||||
endp = getntag(ptr);
|
||||
|
||||
nlen = getnlen(ptr);
|
||||
ptr += DouonBlkSizeNumber + nlen;
|
||||
while (ptr < endp) {
|
||||
if (*ptr == hinsi) {
|
||||
ptr += DouonBlkSizeNumber + nlen;
|
||||
while(ptr < endp) {
|
||||
if(*ptr == hinshi) {
|
||||
*dst = ptr;
|
||||
flg = TRUE;
|
||||
flg = TRUE;
|
||||
}
|
||||
|
||||
do {
|
||||
ptr += codesize(*ptr);
|
||||
} while (*ptr != HinsiBlkTerm);
|
||||
} while(*ptr != HinshiBlkTerm);
|
||||
ptr++;
|
||||
cnt++;
|
||||
}
|
||||
|
||||
if (flg) return cnt;
|
||||
if(flg) return cnt;
|
||||
|
||||
*dst = ptr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
srchkanji (unsigned char **dst, unsigned char *knj, int klen)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
unsigned char *p, *q;
|
||||
int len;
|
||||
int flg = FALSE;
|
||||
int cnt = 0;
|
||||
int srchkanji(unsigned char** dst, unsigned char* knj, int klen) {
|
||||
unsigned char* ptr;
|
||||
unsigned char *p, *q;
|
||||
int len;
|
||||
int flg = FALSE;
|
||||
int cnt = 0;
|
||||
|
||||
ptr = *dst + 1;
|
||||
|
||||
while (*ptr != HinsiBlkTerm) {
|
||||
for (p = ptr, q = knj, len = klen ; len ; len--)
|
||||
if (*p++ != *q++) break;
|
||||
while(*ptr != HinshiBlkTerm) {
|
||||
for(p = ptr, q = knj, len = klen; len; len--)
|
||||
if(*p++ != *q++) break;
|
||||
|
||||
if (!len) {
|
||||
if(!len) {
|
||||
*dst = ptr;
|
||||
flg = TRUE;
|
||||
flg = TRUE;
|
||||
}
|
||||
|
||||
while (!(*ptr == KanjiStrEnd)) {
|
||||
while(!(*ptr == KanjiStrEnd)) {
|
||||
ptr += codesize(*ptr);
|
||||
}
|
||||
ptr++;
|
||||
cnt++;
|
||||
}
|
||||
|
||||
if (!flg) *dst = ptr;
|
||||
if(!flg) *dst = ptr;
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
TypeIdxOfs
|
||||
count_uidx (void)
|
||||
{
|
||||
unsigned char *p;
|
||||
count_uidx(void) {
|
||||
unsigned char* p;
|
||||
|
||||
p = get_idxptr(curdict->segunit - 1);
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
|
||||
return (curdict->idxlen - (p - idxbuf));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
chg_uidx (TypeDicSeg seg, unsigned char *yomi, int len)
|
||||
{
|
||||
unsigned char *p, *q;
|
||||
int olen;
|
||||
void chg_uidx(TypeDicSeg seg, unsigned char* yomi, int len) {
|
||||
unsigned char *p, *q;
|
||||
int olen;
|
||||
|
||||
p = get_idxptr(seg);
|
||||
|
||||
|
|
@ -392,17 +331,15 @@ chg_uidx (TypeDicSeg seg, unsigned char *yomi, int len)
|
|||
|
||||
q = idxbuf + curdict->idxlen;
|
||||
|
||||
if (len > olen) {
|
||||
mvmemd(q - (len-olen), q, (int)(q - (len-olen) - p));
|
||||
}
|
||||
else {
|
||||
mvmemi(p + (olen-len), p, (int)(q - (p + (olen-len))));
|
||||
if(len > olen) {
|
||||
mvmemd(q - (len - olen), q, (int)(q - (len - olen) - p));
|
||||
} else {
|
||||
mvmemi(p + (olen - len), p, (int)(q - (p + (olen - len))));
|
||||
}
|
||||
|
||||
while (len--) *p++ = *yomi++;
|
||||
while(len--) *p++ = *yomi++;
|
||||
|
||||
(*curdict->putidx)(curdict, 0);
|
||||
|
||||
mkidxtbl(curdict);
|
||||
}
|
||||
|
||||
|
|
|
|||
85
alloc.c
85
alloc.c
|
|
@ -27,16 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: alloc.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:28 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include "sj_rename.h"
|
||||
|
|
@ -46,64 +36,57 @@
|
|||
#include "sj_struct.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
#define JREC_NUM 128
|
||||
#define CLREC_NUM 128
|
||||
#define JREC_NUM 128
|
||||
#define CLREC_NUM 128
|
||||
|
||||
static JREC *jrec = NULL;
|
||||
static CLREC *clrec = NULL;
|
||||
static JREC* jrec = NULL;
|
||||
static CLREC* clrec = NULL;
|
||||
|
||||
JREC*
|
||||
alloc_jrec(void)
|
||||
{
|
||||
JREC *p;
|
||||
int i;
|
||||
JREC* alloc_jrec(void) {
|
||||
JREC* p;
|
||||
int i;
|
||||
|
||||
if (jrec == NULL) {
|
||||
jrec = (JREC *)malloc(sizeof(JREC) * JREC_NUM);
|
||||
if (jrec == NULL) return (JREC *)malloc(sizeof(JREC));
|
||||
for (i = 0, p = jrec ; i < JREC_NUM - 1 ; i++, p++)
|
||||
p -> jsort = p + 1;
|
||||
p -> jsort = NULL;
|
||||
if(jrec == NULL) {
|
||||
jrec = (JREC*)malloc(sizeof(JREC) * JREC_NUM);
|
||||
if(jrec == NULL) return (JREC*)malloc(sizeof(JREC));
|
||||
for(i = 0, p = jrec; i < JREC_NUM - 1; i++, p++)
|
||||
p->jsort = p + 1;
|
||||
p->jsort = NULL;
|
||||
}
|
||||
p = jrec;
|
||||
jrec = jrec -> jsort;
|
||||
p = jrec;
|
||||
jrec = jrec->jsort;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void
|
||||
free_jrec(JREC *p)
|
||||
{
|
||||
if (p != NULL) {
|
||||
p -> jsort = jrec;
|
||||
jrec = p;
|
||||
void free_jrec(JREC* p) {
|
||||
if(p != NULL) {
|
||||
p->jsort = jrec;
|
||||
jrec = p;
|
||||
}
|
||||
}
|
||||
|
||||
CLREC*
|
||||
alloc_clrec(void)
|
||||
{
|
||||
CLREC *p;
|
||||
int i;
|
||||
alloc_clrec(void) {
|
||||
CLREC* p;
|
||||
int i;
|
||||
|
||||
if (clrec == NULL) {
|
||||
clrec = (CLREC *)malloc(sizeof(CLREC) * CLREC_NUM);
|
||||
if (clrec == NULL) return (CLREC *)malloc(sizeof(CLREC));
|
||||
for (i = 0, p = clrec ; i < CLREC_NUM - 1 ; i++, p++)
|
||||
p -> clsort = p + 1;
|
||||
p -> clsort = NULL;
|
||||
if(clrec == NULL) {
|
||||
clrec = (CLREC*)malloc(sizeof(CLREC) * CLREC_NUM);
|
||||
if(clrec == NULL) return (CLREC*)malloc(sizeof(CLREC));
|
||||
for(i = 0, p = clrec; i < CLREC_NUM - 1; i++, p++)
|
||||
p->clsort = p + 1;
|
||||
p->clsort = NULL;
|
||||
}
|
||||
p = clrec;
|
||||
clrec = clrec -> clsort;
|
||||
p = clrec;
|
||||
clrec = clrec->clsort;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void
|
||||
free_clrec(CLREC* p)
|
||||
{
|
||||
if (p != NULL) {
|
||||
p -> clsort = clrec;
|
||||
clrec = p;
|
||||
void free_clrec(CLREC* p) {
|
||||
if(p != NULL) {
|
||||
p->clsort = clrec;
|
||||
clrec = p;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
298
char.c
298
char.c
|
|
@ -27,7 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
|
@ -35,56 +34,56 @@
|
|||
#include "sj_euc.h"
|
||||
#include "const.h"
|
||||
|
||||
int cnvyomi(int code) {
|
||||
unsigned short hh;
|
||||
unsigned char high;
|
||||
unsigned char low;
|
||||
|
||||
int
|
||||
cnvyomi(int code)
|
||||
{
|
||||
unsigned short hh;
|
||||
unsigned char high;
|
||||
unsigned char low;
|
||||
|
||||
hh = ((code >> 16) & 0xffff);
|
||||
hh = ((code >> 16) & 0xffff);
|
||||
high = ((code >> 8) & 0xff);
|
||||
low = (code & 0xff);
|
||||
low = (code & 0xff);
|
||||
|
||||
if (!hh) {
|
||||
if (high == 0xa1) {
|
||||
switch (low) {
|
||||
case 0xbc: return 1;
|
||||
case 0xf4: return 2;
|
||||
case 0xf7: return 3;
|
||||
case 0xa7: return 4;
|
||||
if(!hh) {
|
||||
if(high == 0xa1) {
|
||||
switch(low) {
|
||||
case 0xbc:
|
||||
return 1;
|
||||
case 0xf4:
|
||||
return 2;
|
||||
case 0xf7:
|
||||
return 3;
|
||||
case 0xa7:
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
else if (high == 0xa2) {
|
||||
if (low == 0xa9)
|
||||
return 4;
|
||||
}
|
||||
else if (high == 0xa3) {
|
||||
if (low < 0xb0)
|
||||
;
|
||||
else if (low <= 0xb9)
|
||||
return(low - 0xb0 + 0x10);
|
||||
else if (low < 0xc0)
|
||||
;
|
||||
else if (low <= 0xda)
|
||||
return(low - 0xc1 + 0x1A);
|
||||
else if (low < 0xe1)
|
||||
;
|
||||
else if (low <= 0xfa)
|
||||
return(low - 0xe1 + 0x34);
|
||||
}
|
||||
else if (high == 0xa4) {
|
||||
if (low < 0xa1)
|
||||
;
|
||||
else if (low <= 0xf3)
|
||||
return(low - 0xa1 + 0x4e);
|
||||
}
|
||||
else if (high == 0xa5) {
|
||||
switch (low) {
|
||||
case 0xf4: return 0xa1;
|
||||
case 0xf5: return 0xa2;
|
||||
case 0xf6: return 0xa3;
|
||||
} else if(high == 0xa2) {
|
||||
if(low == 0xa9)
|
||||
return 4;
|
||||
} else if(high == 0xa3) {
|
||||
if(low < 0xb0)
|
||||
;
|
||||
else if(low <= 0xb9)
|
||||
return (low - 0xb0 + 0x10);
|
||||
else if(low < 0xc0)
|
||||
;
|
||||
else if(low <= 0xda)
|
||||
return (low - 0xc1 + 0x1A);
|
||||
else if(low < 0xe1)
|
||||
;
|
||||
else if(low <= 0xfa)
|
||||
return (low - 0xe1 + 0x34);
|
||||
} else if(high == 0xa4) {
|
||||
if(low < 0xa1)
|
||||
;
|
||||
else if(low <= 0xf3)
|
||||
return (low - 0xa1 + 0x4e);
|
||||
} else if(high == 0xa5) {
|
||||
switch(low) {
|
||||
case 0xf4:
|
||||
return 0xa1;
|
||||
case 0xf5:
|
||||
return 0xa2;
|
||||
case 0xf6:
|
||||
return 0xa3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,23 +91,20 @@ cnvyomi(int code)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int h2kcode(int code) {
|
||||
unsigned short hh;
|
||||
unsigned char high;
|
||||
unsigned char low;
|
||||
|
||||
int
|
||||
h2kcode(int code)
|
||||
{
|
||||
unsigned short hh;
|
||||
unsigned char high;
|
||||
unsigned char low;
|
||||
|
||||
hh = ((code >> 16) & 0xffff);
|
||||
hh = ((code >> 16) & 0xffff);
|
||||
high = ((code >> 8) & 0xff);
|
||||
low = (code & 0xff);
|
||||
low = (code & 0xff);
|
||||
|
||||
if (!hh) {
|
||||
if (high != 0xa4)
|
||||
return code;
|
||||
if(!hh) {
|
||||
if(high != 0xa4)
|
||||
return code;
|
||||
else
|
||||
return (code + 0x0100);
|
||||
return (code + 0x0100);
|
||||
}
|
||||
/* XXX: what should we do if we reach here?
|
||||
* XXX: I do not know if it is correct, but return 0 for now.
|
||||
|
|
@ -116,153 +112,155 @@ h2kcode(int code)
|
|||
return (0);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
codesize(unsigned char code)
|
||||
{
|
||||
switch (code&KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
case ZenKataAssyuku:
|
||||
case KanjiAssyuku:
|
||||
case KanjiStrEnd:
|
||||
int codesize(unsigned char code) {
|
||||
switch(code & KanjiModeMask) {
|
||||
case ZenHiraAsshuku:
|
||||
case ZenKataAsshuku:
|
||||
case KanjiAsshuku:
|
||||
case KanjiStrEnd:
|
||||
return 1;
|
||||
case LeadingHankaku:
|
||||
case OffsetAssyuku:
|
||||
case AiAttribute:
|
||||
case LeadingHankaku:
|
||||
case OffsetAsshuku:
|
||||
case AiAttribute:
|
||||
return 2;
|
||||
default:
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
output_knj(FILE* fp, unsigned char* p, int l)
|
||||
{
|
||||
while (l > 0) {
|
||||
switch (*p & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
void output_knj(FILE* fp, unsigned char* p, int l) {
|
||||
while(l > 0) {
|
||||
switch(*p & KanjiModeMask) {
|
||||
case ZenHiraAsshuku:
|
||||
fprintf(fp, "\244\322%d", (*p++ & 0x0f) + 1);
|
||||
l--;
|
||||
break;
|
||||
case ZenKataAssyuku:
|
||||
case ZenKataAsshuku:
|
||||
fprintf(fp, "\245\253%d", (*p++ & 0x0f) + 1);
|
||||
l--;
|
||||
break;
|
||||
case KanjiAssyuku:
|
||||
case KanjiAsshuku:
|
||||
fprintf(fp, "\260\265%1x", (*p++ & 0x0f));
|
||||
l--;
|
||||
break;
|
||||
case LeadingHankaku:
|
||||
case LeadingHankaku:
|
||||
#ifndef UseHankakuInDict
|
||||
l = 0;
|
||||
fprintf(stderr, "\244\252\244\253\244\267\244\244");
|
||||
#else
|
||||
fputc(*p++, fp); l--;
|
||||
fputc(*p++, fp); l--;
|
||||
fputc(*p++, fp);
|
||||
l--;
|
||||
fputc(*p++, fp);
|
||||
l--;
|
||||
#endif
|
||||
break;
|
||||
case OffsetAssyuku:
|
||||
case OffsetAsshuku:
|
||||
fprintf(fp, "ofs%1x", (*p++ & 0x0f));
|
||||
l--;
|
||||
fprintf(fp, "%02x", *p++); l--;
|
||||
fprintf(fp, "%02x", *p++);
|
||||
l--;
|
||||
break;
|
||||
case AiAttribute:
|
||||
case AiAttribute:
|
||||
fprintf(fp, "\302\260%1x", (*p++ & 0x0f));
|
||||
l--;
|
||||
fprintf(fp, "%02x", *p++); l--;
|
||||
fprintf(fp, "%02x", *p++);
|
||||
l--;
|
||||
break;
|
||||
case KanjiStrEnd:
|
||||
p++; l--;
|
||||
case KanjiStrEnd:
|
||||
p++;
|
||||
l--;
|
||||
break;
|
||||
default:
|
||||
if (p[1] & 0x80)
|
||||
fputc(SS3, fp);
|
||||
fputc((*p | 0x80), fp); l--; p++;
|
||||
fputc((*p | 0x80), fp); l--; p++;
|
||||
|
||||
}
|
||||
default:
|
||||
if(p[1] & 0x80)
|
||||
fputc(SS3, fp);
|
||||
fputc((*p | 0x80), fp);
|
||||
l--;
|
||||
p++;
|
||||
fputc((*p | 0x80), fp);
|
||||
l--;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
output_str(FILE* fp, char* p)
|
||||
{
|
||||
while (*p) { fputc(*p, fp); p++; }
|
||||
void output_str(FILE* fp, char* p) {
|
||||
while(*p) {
|
||||
fputc(*p, fp);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
output_int(FILE* fp, int* p)
|
||||
{
|
||||
while (*p) {
|
||||
if (*p < 0x100) {
|
||||
fputc(*p, fp); p++;
|
||||
}
|
||||
else if (*p < 0x10000) {
|
||||
void output_int(FILE* fp, int* p) {
|
||||
while(*p) {
|
||||
if(*p < 0x100) {
|
||||
fputc(*p, fp);
|
||||
p++;
|
||||
} else if(*p < 0x10000) {
|
||||
fputc((*p >> 8) & 0xff, fp);
|
||||
fputc(*p & 0xff, fp); p++;
|
||||
}
|
||||
else if (*p < 0x1000000) {
|
||||
fputc(*p & 0xff, fp);
|
||||
p++;
|
||||
} else if(*p < 0x1000000) {
|
||||
fputc((*p >> 16) & 0xff, fp);
|
||||
fputc((*p >> 8) & 0xff, fp);
|
||||
fputc(*p & 0xff, fp); p++;
|
||||
}
|
||||
else {
|
||||
fputc(*p & 0xff, fp);
|
||||
p++;
|
||||
} else {
|
||||
fputc((*p >> 24) & 0xff, fp);
|
||||
fputc((*p >> 16) & 0xff, fp);
|
||||
fputc((*p >> 8) & 0xff, fp);
|
||||
fputc(*p & 0xff, fp); p++;
|
||||
fputc(*p & 0xff, fp);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
yomi2zen(int code)
|
||||
{
|
||||
static char num[] = {
|
||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
||||
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
|
||||
};
|
||||
yomi2zen(int code) {
|
||||
static char num[] = {
|
||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
||||
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||
|
||||
switch (code) {
|
||||
case 0x01: return 0xa1bc;
|
||||
case 0x02: return 0xa1f4;
|
||||
case 0x03: return 0xa1f7;
|
||||
case 0x04: return 0xa2a9;
|
||||
case 0xa1: return 0xa5f4;
|
||||
case 0xa2: return 0xa5f5;
|
||||
case 0xa3: return 0xa5f6;
|
||||
default: break;
|
||||
switch(code) {
|
||||
case 0x01:
|
||||
return 0xa1bc;
|
||||
case 0x02:
|
||||
return 0xa1f4;
|
||||
case 0x03:
|
||||
return 0xa1f7;
|
||||
case 0x04:
|
||||
return 0xa2a9;
|
||||
case 0xa1:
|
||||
return 0xa5f4;
|
||||
case 0xa2:
|
||||
return 0xa5f5;
|
||||
case 0xa3:
|
||||
return 0xa5f6;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (code < 0x10)
|
||||
if(code < 0x10)
|
||||
;
|
||||
|
||||
else if (code < 0x1a)
|
||||
return(0xa300 + code - 0x10 + 0xb0);
|
||||
else if(code < 0x1a)
|
||||
return (0xa300 + code - 0x10 + 0xb0);
|
||||
|
||||
else if (code < 0x34)
|
||||
return(0xa300 + code - 0x1a + 0xc1);
|
||||
else if(code < 0x34)
|
||||
return (0xa300 + code - 0x1a + 0xc1);
|
||||
|
||||
else if (code < 0x4e)
|
||||
return(0xa300 + code - 0x34 + 0xe1);
|
||||
else if(code < 0x4e)
|
||||
return (0xa300 + code - 0x34 + 0xe1);
|
||||
|
||||
else if (code < 0xa1)
|
||||
return(0xa400 + code - 0x4e + 0xa1);
|
||||
else if(code < 0xa1)
|
||||
return (0xa400 + code - 0x4e + 0xa1);
|
||||
|
||||
return ((num[(code >> 4) & 0x0f] << 8) | num[code & 0x0f]);
|
||||
}
|
||||
|
||||
void output_yomi(FILE* fp, unsigned char* p) {
|
||||
int i;
|
||||
|
||||
void
|
||||
output_yomi(FILE* fp, unsigned char* p)
|
||||
{
|
||||
int i;
|
||||
|
||||
while (*p) {
|
||||
while(*p) {
|
||||
i = yomi2zen(*p++);
|
||||
fputc((i >> 8) & 0xff, fp);
|
||||
fputc(i & 0xff, fp);
|
||||
|
|
|
|||
34
charsize.c
34
charsize.c
|
|
@ -27,36 +27,24 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: charsize.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:29 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_euc.h"
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
#include "sj_dict.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int
|
||||
codesize(unsigned char code)
|
||||
{
|
||||
switch (code & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
case ZenKataAssyuku:
|
||||
case KanjiAssyuku:
|
||||
case KanjiStrEnd:
|
||||
int codesize(unsigned char code) {
|
||||
switch(code & KanjiModeMask) {
|
||||
case ZenHiraAsshuku:
|
||||
case ZenKataAsshuku:
|
||||
case KanjiAsshuku:
|
||||
case KanjiStrEnd:
|
||||
return 1;
|
||||
case LeadingHankaku:
|
||||
case OffsetAssyuku:
|
||||
case AiAttribute:
|
||||
case LeadingHankaku:
|
||||
case OffsetAsshuku:
|
||||
case AiAttribute:
|
||||
return 2;
|
||||
default:
|
||||
return 2;
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
18
chrtbl.c
18
chrtbl.c
|
|
@ -27,23 +27,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: chrtbl.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:30 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "const.h"
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
|
||||
|
||||
unsigned char chrtbl[256] =
|
||||
{
|
||||
unsigned char chrtbl[256] =
|
||||
{
|
||||
0,
|
||||
FZKTOP,
|
||||
DICTOP + TAI_KGU,
|
||||
|
|
@ -299,5 +288,4 @@ unsigned char chrtbl[256] =
|
|||
TAI_KGU,
|
||||
TAI_KGU,
|
||||
TAI_KGU,
|
||||
0
|
||||
};
|
||||
0};
|
||||
|
|
|
|||
139
cl2knj.c
139
cl2knj.c
|
|
@ -27,46 +27,33 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cl2knj.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:31 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
int sj2cd_chr();
|
||||
void cvtclknj(), freework();
|
||||
|
||||
int sj2cd_chr();
|
||||
void cvtclknj(), freework();
|
||||
|
||||
static CLREC* nextrecblk(void);
|
||||
static CLREC* prevrecblk(void);
|
||||
static void initkbuf(unsigned char* kouho);
|
||||
static void initkbuf(unsigned char* kouho);
|
||||
|
||||
|
||||
int
|
||||
cl2knj(unsigned char* yomi, int len, unsigned char* kouho)
|
||||
{
|
||||
unsigned char *ptr1;
|
||||
unsigned char *ptr2;
|
||||
int i;
|
||||
int cl2knj(unsigned char* yomi, int len, unsigned char* kouho) {
|
||||
unsigned char* ptr1;
|
||||
unsigned char* ptr2;
|
||||
int i;
|
||||
|
||||
khcount = nkhcount = 0;
|
||||
|
||||
initkbuf(kouho);
|
||||
|
||||
if (len > MaxClInputLen * 2) len = MaxClInputLen * 2;
|
||||
if(len > MaxClInputLen * 2) len = MaxClInputLen * 2;
|
||||
|
||||
ptr1 = yomi; ptr2 = hyomi;
|
||||
for (i = 0 ; i < len ; i++) {
|
||||
if (isknj1(*ptr1)) {
|
||||
if (++i >= len) break;
|
||||
ptr1 = yomi;
|
||||
ptr2 = hyomi;
|
||||
for(i = 0; i < len; i++) {
|
||||
if(isknj1(*ptr1)) {
|
||||
if(++i >= len) break;
|
||||
}
|
||||
ptr1 += sj2cd_chr(ptr1, ptr2++);
|
||||
}
|
||||
|
|
@ -74,17 +61,17 @@ cl2knj(unsigned char* yomi, int len, unsigned char* kouho)
|
|||
|
||||
strlcpy(yomi, orgyomi, (int)(ptr1 - yomi));
|
||||
|
||||
if (!hyomi[0]) return 0;
|
||||
if(!hyomi[0]) return 0;
|
||||
|
||||
freework();
|
||||
|
||||
inputyomi = orgyomi;
|
||||
cnvstart = ystart = hyomi;
|
||||
cnvlen = strlen(hyomi);
|
||||
cnvlen = strlen(hyomi);
|
||||
|
||||
mkjiritu(0);
|
||||
mkbunsetu();
|
||||
if (!maxclptr) wakachi();
|
||||
mkjiritsu(0);
|
||||
mkbunsetsu();
|
||||
if(!maxclptr) wakachi();
|
||||
|
||||
jrt1st = maxjptr;
|
||||
clt1st = maxclptr;
|
||||
|
|
@ -96,120 +83,100 @@ cl2knj(unsigned char* yomi, int len, unsigned char* kouho)
|
|||
|
||||
cvtclknj();
|
||||
|
||||
return hzstrlen(inputyomi, (int)clt1st -> cllen);
|
||||
return hzstrlen(inputyomi, (int)clt1st->cllen);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
nextcl(unsigned char* kouho, int mode)
|
||||
{
|
||||
CLREC *clptr;
|
||||
int nextcl(unsigned char* kouho, int mode) {
|
||||
CLREC* clptr;
|
||||
|
||||
initkbuf(kouho);
|
||||
|
||||
if (!khcount) return 0;
|
||||
if(!khcount) return 0;
|
||||
|
||||
if (!mode && (selectid < khcount)) {
|
||||
if(!mode && (selectid < khcount)) {
|
||||
selectid++;
|
||||
}
|
||||
else if((mode < 2) && (clptr = nextrecblk())) {
|
||||
} else if((mode < 2) && (clptr = nextrecblk())) {
|
||||
selectid = 1;
|
||||
clt1st = clptr;
|
||||
clt1st = clptr;
|
||||
mkkouho();
|
||||
getrank();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
cvtclknj();
|
||||
return 0;
|
||||
}
|
||||
|
||||
cvtclknj();
|
||||
|
||||
return hzstrlen(inputyomi, (int)clt1st -> cllen);
|
||||
return hzstrlen(inputyomi, (int)clt1st->cllen);
|
||||
}
|
||||
|
||||
|
||||
static CLREC*
|
||||
nextrecblk(void)
|
||||
{
|
||||
CLREC *clptr;
|
||||
int keeplen;
|
||||
nextrecblk(void) {
|
||||
CLREC* clptr;
|
||||
int keeplen;
|
||||
|
||||
keeplen = clt1st -> cllen;
|
||||
clptr = clt1st -> clsort;
|
||||
keeplen = clt1st->cllen;
|
||||
clptr = clt1st->clsort;
|
||||
|
||||
while (clptr && (int)clptr -> cllen == keeplen)
|
||||
clptr = clptr -> clsort;
|
||||
while(clptr && (int)clptr->cllen == keeplen)
|
||||
clptr = clptr->clsort;
|
||||
|
||||
return clptr;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
prevcl(unsigned char* kouho, int mode)
|
||||
{
|
||||
CLREC *clptr;
|
||||
int prevcl(unsigned char* kouho, int mode) {
|
||||
CLREC* clptr;
|
||||
|
||||
initkbuf(kouho);
|
||||
|
||||
if (!khcount) return 0;
|
||||
if(!khcount) return 0;
|
||||
|
||||
if (!mode && (selectid > 1)) {
|
||||
if(!mode && (selectid > 1)) {
|
||||
selectid--;
|
||||
}
|
||||
else if ((mode < 2) && (clptr = prevrecblk())) {
|
||||
} else if((mode < 2) && (clptr = prevrecblk())) {
|
||||
clt1st = clptr;
|
||||
mkkouho();
|
||||
getrank();
|
||||
selectid = khcount;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
cvtclknj();
|
||||
return 0;
|
||||
}
|
||||
|
||||
cvtclknj();
|
||||
|
||||
return hzstrlen(inputyomi, (int)clt1st -> cllen);
|
||||
return hzstrlen(inputyomi, (int)clt1st->cllen);
|
||||
}
|
||||
|
||||
|
||||
static CLREC*
|
||||
prevrecblk(void)
|
||||
{
|
||||
CLREC *clptr;
|
||||
CLREC *keepptr;
|
||||
int keeplen;
|
||||
int cllen;
|
||||
prevrecblk(void) {
|
||||
CLREC* clptr;
|
||||
CLREC* keepptr;
|
||||
int keeplen;
|
||||
int cllen;
|
||||
|
||||
clptr = maxclptr;
|
||||
|
||||
if ((cllen = clt1st -> cllen) == clptr -> cllen)
|
||||
if((cllen = clt1st->cllen) == clptr->cllen)
|
||||
return NULL;
|
||||
|
||||
while ((int)clptr -> cllen > cllen) {
|
||||
keeplen = clptr -> cllen;
|
||||
while((int)clptr->cllen > cllen) {
|
||||
keeplen = clptr->cllen;
|
||||
keepptr = clptr;
|
||||
|
||||
while ((int)clptr -> cllen == keeplen)
|
||||
clptr = clptr -> clsort;
|
||||
while((int)clptr->cllen == keeplen)
|
||||
clptr = clptr->clsort;
|
||||
}
|
||||
|
||||
return keepptr;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
initkbuf(unsigned char* kouho)
|
||||
{
|
||||
initkbuf(unsigned char* kouho) {
|
||||
kanjitmp = kouho;
|
||||
memset(kanjitmp, 0, sizeof(STDYOUT) + 1);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
selectnum(void)
|
||||
{
|
||||
int selectnum(void) {
|
||||
return selectid;
|
||||
}
|
||||
|
|
|
|||
183
clstudy.c
183
clstudy.c
|
|
@ -27,89 +27,73 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: clstudy.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:32 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
int sj2cd_str();
|
||||
void mvmemd(), mvmemi();
|
||||
int sj2cd_str();
|
||||
void mvmemd(), mvmemi();
|
||||
|
||||
static unsigned char* delcldata(unsigned char* ycode);
|
||||
static int delclold(void);
|
||||
static int delclold(void);
|
||||
static unsigned char* srchclpos(unsigned char* ycode);
|
||||
|
||||
int clstudy(unsigned char* yomi1, unsigned char* yomi2, STDYOUT* stdy) {
|
||||
unsigned char ytmp[CLSTDY_TMPLEN];
|
||||
unsigned char *dst, *ptr;
|
||||
int ret;
|
||||
int len1, len2;
|
||||
int alen, blen;
|
||||
int i;
|
||||
|
||||
int
|
||||
clstudy(unsigned char* yomi1, unsigned char* yomi2, STDYOUT *stdy)
|
||||
{
|
||||
unsigned char ytmp[CLSTDY_TMPLEN];
|
||||
unsigned char *dst, *ptr;
|
||||
int ret;
|
||||
int len1, len2;
|
||||
int alen, blen;
|
||||
int i;
|
||||
if(!StudyExist()) return ClstudyNoDict;
|
||||
|
||||
if (!StudyExist()) return ClstudyNoDict;
|
||||
if(!yomi1 || !*yomi1) return ClstudyParaErr;
|
||||
|
||||
if (!yomi1 || !*yomi1) return ClstudyParaErr;
|
||||
|
||||
if (!yomi2 || !*yomi2) {
|
||||
if (!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN))
|
||||
if(!yomi2 || !*yomi2) {
|
||||
if(!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN))
|
||||
return ClstudyYomiErr;
|
||||
|
||||
(void)delcldata(ytmp);
|
||||
|
||||
ret = ClstudyNormEnd;
|
||||
}
|
||||
else if (!stdy) {
|
||||
} else if(!stdy) {
|
||||
return ClstudyParaErr;
|
||||
}
|
||||
else {
|
||||
if (!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN))
|
||||
} else {
|
||||
if(!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN))
|
||||
return ClstudyYomiErr;
|
||||
len1 = strlen(ytmp);
|
||||
|
||||
if (!sj2cd_str(yomi2, ytmp + len1, CLSTDY_TMPLEN - len1))
|
||||
if(!sj2cd_str(yomi2, ytmp + len1, CLSTDY_TMPLEN - len1))
|
||||
return ClstudyYomiErr;
|
||||
|
||||
len2 = len1 + stdy -> len;
|
||||
len2 = len1 + stdy->len;
|
||||
ytmp[len2] = 0;
|
||||
alen = len2 + CL_HDLEN;
|
||||
alen = len2 + CL_HDLEN;
|
||||
|
||||
if (alen + 1 >= ClStudyLen) return ClstudyNoArea;
|
||||
if(alen + 1 >= ClStudyLen) return ClstudyNoArea;
|
||||
|
||||
blen = ClStudyTail - delcldata(ytmp) - 1;
|
||||
|
||||
while (blen < alen) {
|
||||
if (!(i = delclold())) break;
|
||||
while(blen < alen) {
|
||||
if(!(i = delclold())) break;
|
||||
blen += i;
|
||||
}
|
||||
|
||||
if (blen >= alen) {
|
||||
if(blen >= alen) {
|
||||
dst = srchclpos(ytmp);
|
||||
|
||||
ptr = ClStudyTail - alen;
|
||||
mvmemd(ptr, ClStudyTail, (ptr - dst));
|
||||
ClYomiLen(dst) = (unsigned char)len2;
|
||||
ClGramCode(dst) = stdy -> hinshi;
|
||||
ClYomiLen(dst) = (unsigned char)len2;
|
||||
ClGramCode(dst) = stdy->hinshi;
|
||||
ClYomi1Len(dst) = (unsigned char)len1;
|
||||
ClSetNum(dst, 1);
|
||||
memcpy(ytmp, ClYomiPos(dst), len2);
|
||||
|
||||
ret = ClstudyNormEnd;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ret = ClstudyNoArea;
|
||||
}
|
||||
}
|
||||
|
|
@ -120,32 +104,29 @@ clstudy(unsigned char* yomi1, unsigned char* yomi2, STDYOUT *stdy)
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static unsigned char*
|
||||
delcldata(unsigned char* ycode)
|
||||
{
|
||||
unsigned char *tagptr;
|
||||
unsigned char *ptr1;
|
||||
unsigned char *ptr2;
|
||||
int len1;
|
||||
delcldata(unsigned char* ycode) {
|
||||
unsigned char* tagptr;
|
||||
unsigned char* ptr1;
|
||||
unsigned char* ptr2;
|
||||
int len1;
|
||||
|
||||
tagptr = ClStudyDict;
|
||||
while (!iseocl(tagptr)) {
|
||||
while(!iseocl(tagptr)) {
|
||||
ptr1 = ycode;
|
||||
ptr2 = ClYomiPos(tagptr);
|
||||
len1 = ClYomiLen(tagptr);
|
||||
|
||||
while (*ptr1 && len1) {
|
||||
if (*ptr1 != *ptr2) break;
|
||||
while(*ptr1 && len1) {
|
||||
if(*ptr1 != *ptr2) break;
|
||||
ptr1++;
|
||||
ptr2++;
|
||||
len1--;
|
||||
}
|
||||
|
||||
if (!*ptr1 || !len1) {
|
||||
if(!*ptr1 || !len1) {
|
||||
delclsub(tagptr);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
tagptr = ClNextTag(tagptr);
|
||||
}
|
||||
}
|
||||
|
|
@ -153,14 +134,11 @@ delcldata(unsigned char* ycode)
|
|||
return tagptr;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
delclsub(unsigned char* target)
|
||||
{
|
||||
unsigned char *src;
|
||||
int num;
|
||||
int tmp;
|
||||
int len;
|
||||
void delclsub(unsigned char* target) {
|
||||
unsigned char* src;
|
||||
int num;
|
||||
int tmp;
|
||||
int len;
|
||||
|
||||
num = ClGetNum(target);
|
||||
len = ClBlkLen(target);
|
||||
|
|
@ -169,10 +147,10 @@ delclsub(unsigned char* target)
|
|||
memset(ClStudyTail - len, 0, len);
|
||||
|
||||
src = ClStudyDict;
|
||||
while (!iseocl(src)) {
|
||||
while(!iseocl(src)) {
|
||||
tmp = ClGetNum(src);
|
||||
|
||||
if (tmp > num) {
|
||||
if(tmp > num) {
|
||||
tmp -= 1;
|
||||
ClSetNum(src, tmp);
|
||||
}
|
||||
|
|
@ -181,32 +159,30 @@ delclsub(unsigned char* target)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
delclold(void)
|
||||
{
|
||||
unsigned char *tagptr;
|
||||
unsigned char *target;
|
||||
int num;
|
||||
int tmp;
|
||||
delclold(void) {
|
||||
unsigned char* tagptr;
|
||||
unsigned char* target;
|
||||
int num;
|
||||
int tmp;
|
||||
|
||||
target = NULL;
|
||||
num = 0;
|
||||
num = 0;
|
||||
|
||||
tagptr = ClStudyDict;
|
||||
while (!iseocl(tagptr)) {
|
||||
while(!iseocl(tagptr)) {
|
||||
|
||||
tmp = ClGetNum(tagptr);
|
||||
|
||||
if (tmp >= num) {
|
||||
num = tmp;
|
||||
if(tmp >= num) {
|
||||
num = tmp;
|
||||
target = tagptr;
|
||||
}
|
||||
|
||||
tagptr = ClNextTag(tagptr);
|
||||
}
|
||||
|
||||
if (target) {
|
||||
if(target) {
|
||||
num = ClBlkLen(tagptr);
|
||||
|
||||
delclsub(target);
|
||||
|
|
@ -215,20 +191,18 @@ delclold(void)
|
|||
return num;
|
||||
}
|
||||
|
||||
|
||||
static unsigned char*
|
||||
srchclpos(unsigned char* ycode)
|
||||
{
|
||||
unsigned char *tagptr;
|
||||
unsigned char *target;
|
||||
unsigned char *ptr1;
|
||||
unsigned char *ptr2;
|
||||
int len;
|
||||
int tmp;
|
||||
srchclpos(unsigned char* ycode) {
|
||||
unsigned char* tagptr;
|
||||
unsigned char* target;
|
||||
unsigned char* ptr1;
|
||||
unsigned char* ptr2;
|
||||
int len;
|
||||
int tmp;
|
||||
|
||||
target = NULL;
|
||||
tagptr = ClStudyDict;
|
||||
while (!iseocl(tagptr)) {
|
||||
while(!iseocl(tagptr)) {
|
||||
tmp = ClGetNum(tagptr);
|
||||
|
||||
tmp++;
|
||||
|
|
@ -237,19 +211,19 @@ srchclpos(unsigned char* ycode)
|
|||
ptr1 = ycode;
|
||||
ptr2 = ClYomiPos(tagptr);
|
||||
len = ClYomiLen(tagptr);
|
||||
while (*ptr1 && len) {
|
||||
if (*ptr1 != *ptr2) break;
|
||||
while(*ptr1 && len) {
|
||||
if(*ptr1 != *ptr2) break;
|
||||
ptr1++;
|
||||
ptr2++;
|
||||
len--;
|
||||
}
|
||||
|
||||
if (!target) {
|
||||
if (!len)
|
||||
if(!target) {
|
||||
if(!len)
|
||||
;
|
||||
else if (!*ptr1)
|
||||
else if(!*ptr1)
|
||||
target = tagptr;
|
||||
else if (*ptr1 < *ptr2)
|
||||
else if(*ptr1 < *ptr2)
|
||||
target = tagptr;
|
||||
}
|
||||
|
||||
|
|
@ -259,26 +233,23 @@ srchclpos(unsigned char* ycode)
|
|||
return target ? target : tagptr;
|
||||
}
|
||||
|
||||
void mkclidx(void) {
|
||||
unsigned char* ptr;
|
||||
int num;
|
||||
int st, ed;
|
||||
|
||||
void
|
||||
mkclidx(void)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
int num;
|
||||
int st, ed;
|
||||
|
||||
if (!StudyExist()) return;
|
||||
if(!StudyExist()) return;
|
||||
|
||||
ptr = ClStudyDict;
|
||||
for (num = st = 0 ; st < 0x100 ; num++, st = ed) {
|
||||
for(num = st = 0; st < 0x100; num++, st = ed) {
|
||||
ed = st + ClStudyStep;
|
||||
|
||||
while (!iseocl(ptr)) {
|
||||
if ((unsigned int) *ClYomiPos(ptr) >= st) break;
|
||||
while(!iseocl(ptr)) {
|
||||
if((unsigned int)*ClYomiPos(ptr) >= st) break;
|
||||
ptr = ClNextTag(ptr);
|
||||
}
|
||||
|
||||
if (ClYomiLen(ptr) && ((int)*ClYomiPos(ptr) < ed))
|
||||
if(ClYomiLen(ptr) && ((int)*ClYomiPos(ptr) < ed))
|
||||
ClStudyIdx[num] = ptr - ClStudyDict;
|
||||
else
|
||||
ClStudyIdx[num] = (unsigned short)-1;
|
||||
|
|
|
|||
22
cmpstr.c
22
cmpstr.c
|
|
@ -27,31 +27,21 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cmpstr.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:32 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "sj_rename.h"
|
||||
#include "const.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
int cmpstr(src, dst)
|
||||
unsigned char *src;
|
||||
unsigned char *dst;
|
||||
int cmpstr(src, dst)
|
||||
unsigned char* src;
|
||||
unsigned char* dst;
|
||||
{
|
||||
while (*src) {
|
||||
if (*src != *dst) return FALSE;
|
||||
while(*src) {
|
||||
if(*src != *dst) return FALSE;
|
||||
src++;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (*dst) return FALSE;
|
||||
if(*dst) return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,90 +27,70 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cnvhinsi.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1996/05/27 06:59:47 $
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "dicttool.h"
|
||||
|
||||
|
||||
struct gram_code {
|
||||
char *name;
|
||||
int code;
|
||||
char* name;
|
||||
int code;
|
||||
} gramtbl[] = {
|
||||
|
||||
#include "GramTable"
|
||||
|
||||
};
|
||||
|
||||
#define GramMax (sizeof(gramtbl)/sizeof(struct gram_code) - 1)
|
||||
#define GramMax (sizeof(gramtbl) / sizeof(struct gram_code) - 1)
|
||||
|
||||
int
|
||||
u_strcmp(unsigned char* a, unsigned char* b)
|
||||
{
|
||||
if (!a || !b) return 0;
|
||||
int u_strcmp(unsigned char* a, unsigned char* b) {
|
||||
if(!a || !b) return 0;
|
||||
|
||||
while (*a && *b) {
|
||||
if (*a < *b) return -1;
|
||||
if (*a > *b) return 1;
|
||||
while(*a && *b) {
|
||||
if(*a < *b) return -1;
|
||||
if(*a > *b) return 1;
|
||||
a++;
|
||||
b++;
|
||||
}
|
||||
if (!*a && !*b) return 0;
|
||||
if (!*a) return -1;
|
||||
if(!*a && !*b) return 0;
|
||||
if(!*a) return -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
cnvhinsi(unsigned char *buf)
|
||||
{
|
||||
int min;
|
||||
int max;
|
||||
int mid;
|
||||
int i;
|
||||
int cnvhinshi(unsigned char* buf) {
|
||||
int min;
|
||||
int max;
|
||||
int mid;
|
||||
int i;
|
||||
|
||||
min = 0;
|
||||
max = GramMax;
|
||||
while (min <= max) {
|
||||
while(min <= max) {
|
||||
|
||||
mid = (min + max) / 2;
|
||||
|
||||
|
||||
i = u_strcmp(buf, gramtbl[mid].name);
|
||||
|
||||
|
||||
if (i < 0) {
|
||||
if(i < 0) {
|
||||
max = mid - 1;
|
||||
}
|
||||
|
||||
else if (i > 0) {
|
||||
else if(i > 0) {
|
||||
min = mid + 1;
|
||||
}
|
||||
|
||||
else {
|
||||
return(gramtbl[mid].code);
|
||||
return (gramtbl[mid].code);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* hinshi_str(int code) {
|
||||
int i;
|
||||
|
||||
|
||||
char*
|
||||
hinsi_str(int code)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0 ; i <= GramMax ; i++) {
|
||||
if (gramtbl[i].code == code) return gramtbl[i].name;
|
||||
for(i = 0; i <= GramMax; i++) {
|
||||
if(gramtbl[i].code == code) return gramtbl[i].name;
|
||||
}
|
||||
|
||||
return "Err";
|
||||
216
code.c
216
code.c
|
|
@ -27,14 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: code.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:09 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_sysvdef.h"
|
||||
#include "wchar16.h"
|
||||
#include "kctype.h"
|
||||
|
|
@ -46,41 +38,41 @@
|
|||
#include "rk.h"
|
||||
|
||||
static unsigned char cbuf[5];
|
||||
static int cur_code = CODE_EUC;
|
||||
extern int current_locale;
|
||||
static int ccnt = 0;
|
||||
static int cur_code = CODE_EUC;
|
||||
extern int current_locale;
|
||||
static int ccnt = 0;
|
||||
|
||||
codeconv(c, rkstr)
|
||||
wchar16_t c;
|
||||
unsigned int *rkstr;
|
||||
wchar16_t c;
|
||||
unsigned int* rkstr;
|
||||
{
|
||||
unsigned short ccode, i;
|
||||
unsigned short CheckCcode();
|
||||
extern int erase_char;
|
||||
unsigned short CheckCcode();
|
||||
extern int erase_char;
|
||||
|
||||
if (c == erase_char) {
|
||||
if (ccnt) {
|
||||
if(c == erase_char) {
|
||||
if(ccnt) {
|
||||
ccnt--;
|
||||
*rkstr++ = erase_char + ERRCODE;
|
||||
} else {
|
||||
*rkstr++ = erase_char;
|
||||
}
|
||||
} else if (iswcntrl(c) || (WcIsKANJI(c) && ccnt == 0)) {
|
||||
} else if(iswcntrl(c) || (WcIsKANJI(c) && ccnt == 0)) {
|
||||
*rkstr++ = c;
|
||||
if (iswcntrl(c))
|
||||
if(iswcntrl(c))
|
||||
ccnt = 0;
|
||||
} else if ((ccode = CheckCcode(c)) > 0) {
|
||||
if (ccnt == 4) {
|
||||
if ((cur_code != CODE_EUC) || (cur_code != CODE_EUC2)) {
|
||||
if ((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2))
|
||||
ccode += 0x2020;
|
||||
ccode = jis2euc(ccode & 0x7f7f);
|
||||
}
|
||||
if ((cur_code == CODE_KUTEN2) ||
|
||||
(cur_code == CODE_JIS2) || (cur_code == CODE_EUC2))
|
||||
} else if((ccode = CheckCcode(c)) > 0) {
|
||||
if(ccnt == 4) {
|
||||
if((cur_code != CODE_EUC) || (cur_code != CODE_EUC2)) {
|
||||
if((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2))
|
||||
ccode += 0x2020;
|
||||
ccode = jis2euc(ccode & 0x7f7f);
|
||||
}
|
||||
if((cur_code == CODE_KUTEN2) ||
|
||||
(cur_code == CODE_JIS2) || (cur_code == CODE_EUC2))
|
||||
ccode &= WcX0212MASK;
|
||||
ccnt--;
|
||||
for (; ccnt > 0; ccnt--)
|
||||
for(; ccnt > 0; ccnt--)
|
||||
*rkstr++ = erase_char + ERRCODE;
|
||||
*rkstr++ = SetMojilen(4) + ccode;
|
||||
} else
|
||||
|
|
@ -91,104 +83,101 @@ unsigned int *rkstr;
|
|||
}
|
||||
|
||||
unsigned short
|
||||
CheckCcode (c)
|
||||
CheckCcode(c)
|
||||
wchar16_t c;
|
||||
{
|
||||
unsigned char c1;
|
||||
unsigned short code;
|
||||
unsigned char c1;
|
||||
unsigned short code;
|
||||
|
||||
if (!WcIsASCII(c) || !isxdigit(WcLowByte(c)) ||
|
||||
(cur_code == CODE_KUTEN && !isdigit(WcLowByte(c))))
|
||||
return(0);
|
||||
cbuf[ccnt] = WcLowByte(c);
|
||||
cbuf[ccnt + 1] = '\0';
|
||||
if(!WcIsASCII(c) || !isxdigit(WcLowByte(c)) ||
|
||||
(cur_code == CODE_KUTEN && !isdigit(WcLowByte(c))))
|
||||
return (0);
|
||||
cbuf[ccnt] = WcLowByte(c);
|
||||
cbuf[ccnt + 1] = '\0';
|
||||
|
||||
if ((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2)) {
|
||||
if (ccnt % 2) {
|
||||
code = (cbuf[ccnt-1] - '0') * 10 + cbuf[ccnt] - '0';
|
||||
if (code < 1 || code > 94)
|
||||
return(0);
|
||||
if (ccnt >= 3)
|
||||
code += ((cbuf[0]-'0') * 10 + cbuf[1]-'0') << 8;
|
||||
if((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2)) {
|
||||
if(ccnt % 2) {
|
||||
code = (cbuf[ccnt - 1] - '0') * 10 + cbuf[ccnt] - '0';
|
||||
if(code < 1 || code > 94)
|
||||
return (0);
|
||||
if(ccnt >= 3)
|
||||
code += ((cbuf[0] - '0') * 10 + cbuf[1] - '0') << 8;
|
||||
} else
|
||||
code = 1;
|
||||
code = 1;
|
||||
} else {
|
||||
code = (unsigned short)strtol((char *)cbuf, (char **)NULL, 16);
|
||||
if (ccnt % 2)
|
||||
c1 = code & 0xff;
|
||||
else
|
||||
c1 = code & 0xf;
|
||||
switch(cur_code) {
|
||||
case CODE_SJIS:
|
||||
if (ccnt == 0 && (c1 == 8 || c1 == 9 || c1 >= 0xe))
|
||||
break;
|
||||
if (ccnt == 1 && issjis1(c1))
|
||||
break;
|
||||
if (ccnt == 2 && c1 >= 4)
|
||||
break;
|
||||
if (ccnt == 3 && issjis2(c1))
|
||||
break;
|
||||
return(0);
|
||||
case CODE_EUC:
|
||||
case CODE_EUC2:
|
||||
if (ccnt % 2 && iseuc(c1))
|
||||
break;
|
||||
if (!(ccnt % 2) && (c1 >= 0xa && c1 <= 0xf))
|
||||
break;
|
||||
return(0);
|
||||
case CODE_JIS:
|
||||
case CODE_JIS2:
|
||||
if (ccnt % 2 && isjjis(c1))
|
||||
break;
|
||||
if (!(ccnt % 2) && (c1 >= 2 && c1 <= 7))
|
||||
break;
|
||||
return(0);
|
||||
code = (unsigned short)strtol((char*)cbuf, (char**)NULL, 16);
|
||||
if(ccnt % 2)
|
||||
c1 = code & 0xff;
|
||||
else
|
||||
c1 = code & 0xf;
|
||||
switch(cur_code) {
|
||||
case CODE_SJIS:
|
||||
if(ccnt == 0 && (c1 == 8 || c1 == 9 || c1 >= 0xe))
|
||||
break;
|
||||
if(ccnt == 1 && issjis1(c1))
|
||||
break;
|
||||
if(ccnt == 2 && c1 >= 4)
|
||||
break;
|
||||
if(ccnt == 3 && issjis2(c1))
|
||||
break;
|
||||
return (0);
|
||||
case CODE_EUC:
|
||||
case CODE_EUC2:
|
||||
if(ccnt % 2 && iseuc(c1))
|
||||
break;
|
||||
if(!(ccnt % 2) && (c1 >= 0xa && c1 <= 0xf))
|
||||
break;
|
||||
return (0);
|
||||
case CODE_JIS:
|
||||
case CODE_JIS2:
|
||||
if(ccnt % 2 && isjjis(c1))
|
||||
break;
|
||||
if(!(ccnt % 2) && (c1 >= 2 && c1 <= 7))
|
||||
break;
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
}
|
||||
ccnt++;
|
||||
return(code);
|
||||
ccnt++;
|
||||
return (code);
|
||||
}
|
||||
|
||||
unsigned short
|
||||
strtocode()
|
||||
{
|
||||
int c;
|
||||
unsigned short code;
|
||||
strtocode() {
|
||||
int c;
|
||||
unsigned short code;
|
||||
|
||||
while (ccnt < 4) {
|
||||
c = inkey();
|
||||
if (AnotherConversion ()) {
|
||||
unget_key(c);
|
||||
ccnt = 0;
|
||||
return(-1);
|
||||
while(ccnt < 4) {
|
||||
c = inkey();
|
||||
if(AnotherConversion()) {
|
||||
unget_key(c);
|
||||
ccnt = 0;
|
||||
return (-1);
|
||||
}
|
||||
if ((code = CheckCcode(c)) == 0) {
|
||||
ccnt = 0;
|
||||
beep();
|
||||
return(0);
|
||||
if((code = CheckCcode(c)) == 0) {
|
||||
ccnt = 0;
|
||||
beep();
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
ccnt = 0;
|
||||
switch (cur_code) {
|
||||
case CODE_SJIS :
|
||||
return(sjis2jis(code));
|
||||
case CODE_KUTEN :
|
||||
case CODE_KUTEN2:
|
||||
return(code + 0x2020);
|
||||
default :
|
||||
return(code & 0x7f7f);
|
||||
ccnt = 0;
|
||||
switch(cur_code) {
|
||||
case CODE_SJIS:
|
||||
return (sjis2jis(code));
|
||||
case CODE_KUTEN:
|
||||
case CODE_KUTEN2:
|
||||
return (code + 0x2020);
|
||||
default:
|
||||
return (code & 0x7f7f);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ChangeCode (void)
|
||||
{
|
||||
if (cur_code == CODE_KUTEN2)
|
||||
void ChangeCode(void) {
|
||||
if(cur_code == CODE_KUTEN2)
|
||||
cur_code = CODE_SJIS;
|
||||
else {
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
if( cur_code == CODE_KUTEN) {
|
||||
cur_code = CODE_SJIS;
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
if(cur_code == CODE_KUTEN) {
|
||||
cur_code = CODE_SJIS;
|
||||
return;
|
||||
}
|
||||
if(cur_code == CODE_SJIS) {
|
||||
|
|
@ -197,18 +186,15 @@ ChangeCode (void)
|
|||
cur_code += 2;
|
||||
}
|
||||
} else
|
||||
cur_code++;
|
||||
cur_code++;
|
||||
}
|
||||
}
|
||||
|
||||
SetCode(code)
|
||||
int code;
|
||||
SetCode(code) int code;
|
||||
{
|
||||
cur_code = code;
|
||||
}
|
||||
|
||||
GetCcode()
|
||||
{
|
||||
return(cur_code);
|
||||
GetCcode() {
|
||||
return (cur_code);
|
||||
}
|
||||
|
||||
|
|
|
|||
105
codecnv.c
105
codecnv.c
|
|
@ -27,14 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: codecnv.c,v $
|
||||
* $SonyRevision: 1.3 $
|
||||
* $SonyDate: 1997/01/23 11:26:31 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
|
@ -42,69 +34,62 @@
|
|||
#include "sjctype.h"
|
||||
#include "sjtool.h"
|
||||
|
||||
static int euc_mode;
|
||||
static int euc_mode;
|
||||
|
||||
int
|
||||
init_code()
|
||||
{
|
||||
char *loc;
|
||||
int init_code() {
|
||||
char* loc;
|
||||
|
||||
#ifdef LACKOF_SETLOCALE
|
||||
loc = getenv("LANG");
|
||||
loc = getenv("LANG");
|
||||
#else
|
||||
loc = setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
if (!loc) {
|
||||
if(!loc) {
|
||||
fprintf(stderr, "Error: can't get current locale\n");
|
||||
exit(1);
|
||||
}
|
||||
if (strncmp(loc, "ja_JP.SJIS", 10) == 0) {
|
||||
if(strncmp(loc, "ja_JP.SJIS", 10) == 0) {
|
||||
euc_mode = 0;
|
||||
} else if (strncmp(loc, "ja", 2) == 0 ||
|
||||
strncmp(loc, "Ja", 2) == 0) {
|
||||
} else if(strncmp(loc, "ja", 2) == 0 ||
|
||||
strncmp(loc, "Ja", 2) == 0) {
|
||||
euc_mode = -1;
|
||||
} else
|
||||
#ifdef __sony_news
|
||||
return 0;
|
||||
return 0;
|
||||
#else
|
||||
{
|
||||
fprintf(stderr, "Warrning: In this locale japanese will not be used.\n");
|
||||
euc_mode = -1;
|
||||
}
|
||||
{
|
||||
fprintf(stderr, "Warrning: In this locale japanese will not be used.\n");
|
||||
euc_mode = -1;
|
||||
}
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
cnvcode(s)
|
||||
unsigned char *s;
|
||||
cnvcode(s) unsigned char* s;
|
||||
{
|
||||
if (euc_mode) {
|
||||
unsigned short i;
|
||||
unsigned char *d = s;
|
||||
if(euc_mode) {
|
||||
unsigned short i;
|
||||
unsigned char* d = s;
|
||||
|
||||
while ((i = *s++)) {
|
||||
if (iseuckana(i)) {
|
||||
if (*s) {
|
||||
while((i = *s++)) {
|
||||
if(iseuckana(i)) {
|
||||
if(*s) {
|
||||
*d++ = *s++;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*d++ = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (iseuc(i)) {
|
||||
if (*s) {
|
||||
i = euc2sjis((i << 8) + *s++);
|
||||
} else if(iseuc(i)) {
|
||||
if(*s) {
|
||||
i = euc2sjis((i << 8) + *s++);
|
||||
*d++ = (i >> 8);
|
||||
*d++ = i;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*d++ = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*d++ = i;
|
||||
}
|
||||
}
|
||||
|
|
@ -113,46 +98,44 @@ unsigned char *s;
|
|||
}
|
||||
|
||||
void
|
||||
printout_mb(fp, s)
|
||||
FILE *fp;
|
||||
unsigned char *s;
|
||||
printout_mb(fp, s)
|
||||
FILE* fp;
|
||||
unsigned char* s;
|
||||
{
|
||||
fputs((char *)s, fp);
|
||||
fputs((char*)s, fp);
|
||||
fflush(fp);
|
||||
}
|
||||
|
||||
void
|
||||
printout(fp, s)
|
||||
FILE *fp;
|
||||
unsigned char *s;
|
||||
printout(fp, s)
|
||||
FILE* fp;
|
||||
unsigned char* s;
|
||||
{
|
||||
unsigned char buf[BUFSIZ];
|
||||
unsigned char buf[BUFSIZ];
|
||||
|
||||
if (euc_mode)
|
||||
strcpy((char *)buf, s);
|
||||
if(euc_mode)
|
||||
strcpy((char*)buf, s);
|
||||
else
|
||||
euctosjis(buf, BUFSIZ, s, strlen(s)+1);
|
||||
fputs((char *)buf, fp);
|
||||
euctosjis(buf, BUFSIZ, s, strlen(s) + 1);
|
||||
fputs((char*)buf, fp);
|
||||
fflush(fp);
|
||||
}
|
||||
|
||||
void
|
||||
normal_out(fmt, p1, p2, p3, p4, p5)
|
||||
char *fmt;
|
||||
int p1, p2, p3, p4, p5;
|
||||
normal_out(fmt, p1, p2, p3, p4, p5) char* fmt;
|
||||
int p1, p2, p3, p4, p5;
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
char buf[BUFSIZ];
|
||||
|
||||
sprintf(buf, fmt, p1, p2, p3, p4, p5);
|
||||
printout(stdout, buf);
|
||||
}
|
||||
|
||||
void
|
||||
error_out(fmt, p1, p2, p3, p4, p5)
|
||||
char *fmt;
|
||||
int p1, p2, p3, p4, p5;
|
||||
error_out(fmt, p1, p2, p3, p4, p5) char* fmt;
|
||||
int p1, p2, p3, p4, p5;
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
char buf[BUFSIZ];
|
||||
|
||||
sprintf(buf, fmt, p1, p2, p3, p4, p5);
|
||||
strcat(buf, "\n");
|
||||
|
|
|
|||
115
common.c
115
common.c
|
|
@ -27,114 +27,99 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: common.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:10 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "conversion.h"
|
||||
|
||||
int allways_buff = 0;
|
||||
int no_flush = 0;
|
||||
int HHlevel = 2;
|
||||
int Hlevel = 2;
|
||||
int oasys = 0;
|
||||
int flush_conversion;
|
||||
int allways_buff = 0;
|
||||
int no_flush = 0;
|
||||
int HHlevel = 2;
|
||||
int Hlevel = 2;
|
||||
int oasys = 0;
|
||||
int flush_conversion;
|
||||
|
||||
Conversion *current_conversion;
|
||||
Conversion *default_conversion;
|
||||
Conversion* current_conversion;
|
||||
Conversion* default_conversion;
|
||||
|
||||
Conversion *
|
||||
AllocConversion ()
|
||||
{
|
||||
Conversion *c;
|
||||
Conversion*
|
||||
AllocConversion() {
|
||||
Conversion* c;
|
||||
|
||||
if ((c = (Conversion *)malloc (sizeof(Conversion))) == NULL) {
|
||||
fprintf (stderr, "conversion: can't alloc memory\n\r");
|
||||
if((c = (Conversion*)malloc(sizeof(Conversion))) == NULL) {
|
||||
fprintf(stderr, "conversion: can't alloc memory\n\r");
|
||||
return (0);
|
||||
}
|
||||
|
||||
c->Imode = MODE_ZHIRA;
|
||||
c->BuffMode = BUFF;
|
||||
c->ha_point = 0;
|
||||
c->out_point = 0;
|
||||
c->span_point = 0;
|
||||
c->Imode = MODE_ZHIRA;
|
||||
c->BuffMode = BUFF;
|
||||
c->ha_point = 0;
|
||||
c->out_point = 0;
|
||||
c->span_point = 0;
|
||||
c->word_regist = 0;
|
||||
c->Cflag = 1;
|
||||
c->Cflag = 1;
|
||||
|
||||
c->SavedRow = 0;
|
||||
c->SavedCol = 0;
|
||||
c->SavedRow = 0;
|
||||
c->SavedCol = 0;
|
||||
c->CurrentVcol = 0;
|
||||
c->MaxVcol = 0;
|
||||
c->wrap = 1;
|
||||
c->MaxVcol = 0;
|
||||
c->wrap = 1;
|
||||
return (c);
|
||||
}
|
||||
|
||||
static Conversion *push_conversion;
|
||||
static Conversion* push_conversion;
|
||||
|
||||
FreeConversion (c)
|
||||
Conversion *c;
|
||||
FreeConversion(c)
|
||||
Conversion* c;
|
||||
{
|
||||
if (c == push_conversion)
|
||||
if(c == push_conversion)
|
||||
push_conversion = 0;
|
||||
free (c);
|
||||
free(c);
|
||||
}
|
||||
|
||||
SetConversion (c)
|
||||
Conversion *c;
|
||||
SetConversion(c)
|
||||
Conversion* c;
|
||||
{
|
||||
PushConversion (current_conversion);
|
||||
PushConversion(current_conversion);
|
||||
current_conversion = c;
|
||||
}
|
||||
|
||||
PushConversion (c)
|
||||
Conversion *c;
|
||||
PushConversion(c)
|
||||
Conversion* c;
|
||||
{
|
||||
push_conversion = c;
|
||||
}
|
||||
|
||||
PopConversion ()
|
||||
{
|
||||
if (push_conversion)
|
||||
PopConversion() {
|
||||
if(push_conversion)
|
||||
current_conversion = push_conversion;
|
||||
}
|
||||
|
||||
Conversion *
|
||||
GetConversion ()
|
||||
{
|
||||
Conversion*
|
||||
GetConversion() {
|
||||
return (current_conversion);
|
||||
}
|
||||
|
||||
InitConversion ()
|
||||
{
|
||||
default_conversion = AllocConversion ();
|
||||
DefaultConversion ();
|
||||
InitConversion() {
|
||||
default_conversion = AllocConversion();
|
||||
DefaultConversion();
|
||||
}
|
||||
|
||||
DefaultConversion ()
|
||||
{
|
||||
DefaultConversion() {
|
||||
current_conversion = default_conversion;
|
||||
}
|
||||
|
||||
EndConversion ()
|
||||
{
|
||||
free (default_conversion);
|
||||
EndConversion() {
|
||||
free(default_conversion);
|
||||
}
|
||||
|
||||
int
|
||||
wcbyte(str)
|
||||
wchar16_t *str;
|
||||
int wcbyte(str)
|
||||
wchar16_t* str;
|
||||
{
|
||||
count=0;
|
||||
count = 0;
|
||||
|
||||
while (*str) {
|
||||
if (WcHighMASK & *str++)
|
||||
count += 2;
|
||||
while(*str) {
|
||||
if(WcHighMASK & *str++)
|
||||
count += 2;
|
||||
else
|
||||
count++;
|
||||
count++;
|
||||
}
|
||||
return (count);
|
||||
}
|
||||
|
|
|
|||
32
common.h
32
common.h
|
|
@ -27,31 +27,21 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: common.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:42 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "conversion.h"
|
||||
|
||||
extern Conversion *current_conversion;
|
||||
extern Conversion* current_conversion;
|
||||
|
||||
extern int allways_buff;
|
||||
extern int no_flush;
|
||||
extern int termflag;
|
||||
extern int HHlevel;
|
||||
extern int Hlevel;
|
||||
extern int oasys;
|
||||
extern int flush_conversion;
|
||||
extern int allways_buff;
|
||||
extern int no_flush;
|
||||
extern int termflag;
|
||||
extern int HHlevel;
|
||||
extern int Hlevel;
|
||||
extern int oasys;
|
||||
extern int flush_conversion;
|
||||
|
||||
Conversion *AllocConversion ();
|
||||
Conversion *GetConversion ();
|
||||
Conversion* AllocConversion();
|
||||
Conversion* GetConversion();
|
||||
|
||||
#ifdef DEBUG
|
||||
FILE *dbfp;
|
||||
FILE* dbfp;
|
||||
#endif
|
||||
|
|
|
|||
13
config.h.cmake
Normal file
13
config.h.cmake
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef OCONFIGURE_CONFIG_H
|
||||
#define OCONFIGURE_CONFIG_H
|
||||
|
||||
#cmakedefine01 HAVE_C99_STDINT
|
||||
|
||||
#ifndef HAVE_MD5
|
||||
# define HAVE_MD5 1
|
||||
#endif
|
||||
#ifndef HAVE_SHA2
|
||||
# define HAVE_SHA2 1
|
||||
#endif
|
||||
|
||||
#endif /* OCONFIGURE_CONFIG_H */
|
||||
5
configure
vendored
5
configure
vendored
|
|
@ -221,6 +221,7 @@ HAVE_B64_NTOP=
|
|||
HAVE_CAPSICUM=
|
||||
HAVE_CRYPT=
|
||||
HAVE_CRYPT_NEWHASH=
|
||||
HAVE_C99_STDINT=
|
||||
HAVE_ENDIAN_H=
|
||||
HAVE_ERR=
|
||||
HAVE_EXPLICIT_BZERO=
|
||||
|
|
@ -391,6 +392,7 @@ runtest b64_ntop B64_NTOP "" "" "-lresolv" || true
|
|||
runtest capsicum CAPSICUM || true
|
||||
runtest crypt CRYPT "" "" "-lcrypt" || true
|
||||
runtest crypt_newhash CRYPT_NEWHASH || true
|
||||
runtest c99_stdint C99_STDINT || true
|
||||
runtest endian_h ENDIAN_H || true
|
||||
runtest err ERR || true
|
||||
runtest explicit_bzero EXPLICIT_BZERO || true
|
||||
|
|
@ -513,7 +515,7 @@ fi
|
|||
if [ ${HAVE_MD5} -eq 0 -o \
|
||||
${HAVE_SHA2} -eq 0 ]
|
||||
then
|
||||
echo "#include <stdint.h> /* C99 [u]int[nn]_t types */"
|
||||
echo "#include \"sj_stdint.h\" /* C99 stdint.h or C89 fallback types */"
|
||||
echo
|
||||
fi
|
||||
|
||||
|
|
@ -555,6 +557,7 @@ cat << __HEREDOC__
|
|||
#define HAVE_CAPSICUM ${HAVE_CAPSICUM}
|
||||
#define HAVE_CRYPT ${HAVE_CRYPT}
|
||||
#define HAVE_CRYPT_NEWHASH ${HAVE_CRYPT_NEWHASH}
|
||||
#define HAVE_C99_STDINT ${HAVE_C99_STDINT}
|
||||
#define HAVE_ENDIAN_H ${HAVE_ENDIAN_H}
|
||||
#define HAVE_ERR ${HAVE_ERR}
|
||||
#define HAVE_EXPLICIT_BZERO ${HAVE_EXPLICIT_BZERO}
|
||||
|
|
|
|||
368
const.h
368
const.h
|
|
@ -34,224 +34,224 @@
|
|||
#include "Paths.h"
|
||||
#include "sj_euc.h"
|
||||
|
||||
#define HostNameLen 128
|
||||
#define UserNameLen 128
|
||||
#define ProgNameLen 128
|
||||
#define PathNameLen 1024
|
||||
#define PassWordLen 16
|
||||
#define HostNameLen 128
|
||||
#define UserNameLen 128
|
||||
#define ProgNameLen 128
|
||||
#define PathNameLen 1024
|
||||
#define PassWordLen 16
|
||||
|
||||
#define YomiBufSize 1024
|
||||
#define KanjiBufSize 2048
|
||||
#define YomiBufSize 1024
|
||||
#define KanjiBufSize 2048
|
||||
|
||||
#define MinIdxLen 512
|
||||
#define MinSegLen 512
|
||||
#define MinSegNum 1
|
||||
#define MinStyNum 512
|
||||
#define MaxStyNum 0x7fff
|
||||
#define MinClStep 1
|
||||
#define MaxClStep 256
|
||||
#define MinClLen 512
|
||||
#define MaxClLen 0x7fff
|
||||
#define MinIdxLen 512
|
||||
#define MinSegLen 512
|
||||
#define MinSegNum 1
|
||||
#define MinStyNum 512
|
||||
#define MaxStyNum 0x7fff
|
||||
#define MinClStep 1
|
||||
#define MaxClStep 256
|
||||
#define MinClLen 512
|
||||
#define MaxClLen 0x7fff
|
||||
|
||||
#define DebugOutFile ErrorOutFile
|
||||
#define DebugLevel 0
|
||||
#define ForkFlag 1
|
||||
#define MaxClientNum 512
|
||||
#define LogOutFile ErrorOutFile
|
||||
#define PortName "sj3"
|
||||
#define PortNumber 3086
|
||||
#define DirectryMode 0755
|
||||
#define DictFileMode 0644
|
||||
#define MODE_MASK 0777
|
||||
#define DebugOutFile ErrorOutFile
|
||||
#define DebugLevel 0
|
||||
#define ForkFlag 1
|
||||
#define MaxClientNum 512
|
||||
#define LogOutFile ErrorOutFile
|
||||
#define PortName "sj3"
|
||||
#define PortNumber 3086
|
||||
#define DirectryMode 0755
|
||||
#define DictFileMode 0644
|
||||
#define MODE_MASK 0777
|
||||
|
||||
#define DefIdxLen 2048
|
||||
#define DefSegLen 2048
|
||||
#define DefSegNum 256
|
||||
#define DefStyNum 2048
|
||||
#define DefClStep 1
|
||||
#define DefClLen 2048
|
||||
#define DefIdxLen 2048
|
||||
#define DefSegLen 2048
|
||||
#define DefSegNum 256
|
||||
#define DefStyNum 2048
|
||||
#define DefClStep 1
|
||||
#define DefClLen 2048
|
||||
|
||||
#define NotLocked -1
|
||||
#define NotLocked -1
|
||||
|
||||
#define ERROR -1
|
||||
#define ERROR -1
|
||||
|
||||
#ifndef FALSE
|
||||
# define TRUE -1
|
||||
# define FALSE (!TRUE)
|
||||
#ifndef FALSE
|
||||
#define TRUE -1
|
||||
#define FALSE (!TRUE)
|
||||
#endif
|
||||
|
||||
#define MATCH 0
|
||||
#define OVER 1
|
||||
#define PARTLY 2
|
||||
#define CONT 3
|
||||
#define UNDER 4
|
||||
#define MATCH 0
|
||||
#define OVER 1
|
||||
#define PARTLY 2
|
||||
#define CONT 3
|
||||
#define UNDER 4
|
||||
|
||||
#define AD_Done 0x0000
|
||||
#define AD_NotUserDict 0x0001
|
||||
#define AD_BadYomi 0x0002
|
||||
#define AD_BadKanji 0x0004
|
||||
#define AD_BadHinsi 0x0008
|
||||
#define AD_Done 0x0000
|
||||
#define AD_NotUserDict 0x0001
|
||||
#define AD_BadYomi 0x0002
|
||||
#define AD_BadKanji 0x0004
|
||||
#define AD_BadHinshi 0x0008
|
||||
|
||||
#define AD_ArExist 0x0010
|
||||
#define AD_OvflwDouBlk 0x0020
|
||||
#define AD_OvflwDouNum 0x0040
|
||||
#define AD_OvflwUsrDic 0x0080
|
||||
#define AD_OvflwIndex 0x0100
|
||||
#define AD_ArExist 0x0010
|
||||
#define AD_OvflwDouBlk 0x0020
|
||||
#define AD_OvflwDouNum 0x0040
|
||||
#define AD_OvflwUsrDic 0x0080
|
||||
#define AD_OvflwIndex 0x0100
|
||||
|
||||
#define AD_NoMidasi 0x0010
|
||||
#define AD_NoHinsi 0x0020
|
||||
#define AD_NoKanji 0x0040
|
||||
#define AD_NoMidasi 0x0010
|
||||
#define AD_NoHinshi 0x0020
|
||||
#define AD_NoKanji 0x0040
|
||||
|
||||
#define C_WAKACHI 0x00
|
||||
#define C_MINASI 0x01
|
||||
#define C_BUNSETU 0x02
|
||||
#define C_DICT 0x03
|
||||
#define C_N_ARABIA 0x04
|
||||
#define C_N_ARACMA 0x05
|
||||
#define C_N_KAZU 0x06
|
||||
#define C_N_SUUJI 0x07
|
||||
#define C_N_NANSUU 0x08
|
||||
#define C_N_KANKURA 0x09
|
||||
#define C_N_ARAKURA 0x0a
|
||||
#define C_N_KAZULONG 0x0b
|
||||
#define C_N_KAZULCMA 0x0c
|
||||
#define C_N_SUUJILONG 0x0d
|
||||
#define C_WAKACHI 0x00
|
||||
#define C_MINASI 0x01
|
||||
#define C_BUNSETSU 0x02
|
||||
#define C_DICT 0x03
|
||||
#define C_N_ARABIA 0x04
|
||||
#define C_N_ARACMA 0x05
|
||||
#define C_N_KAZU 0x06
|
||||
#define C_N_SUUJI 0x07
|
||||
#define C_N_NANSUU 0x08
|
||||
#define C_N_KANKURA 0x09
|
||||
#define C_N_ARAKURA 0x0a
|
||||
#define C_N_KAZULONG 0x0b
|
||||
#define C_N_KAZULCMA 0x0c
|
||||
#define C_N_SUUJILONG 0x0d
|
||||
|
||||
#define JFLAG_N10 (1 << 15)
|
||||
#define JFLAG_N_1 (1 << 14)
|
||||
#define JFLAG_NS1 (1 << 13)
|
||||
#define JFLAG_N01 (1 << 12)
|
||||
#define JFLAG_N23 (1 << 11)
|
||||
#define JFLAG_NK2 (1 << 10)
|
||||
#define JFLAG_NK4 (1 << 9)
|
||||
#define JFLAG_NN0 (1 << 8)
|
||||
#define JFLAG_NSN (1 << 7)
|
||||
#define JFLAG_KA (1 << 0)
|
||||
#define JFLAG_N10 (1 << 15)
|
||||
#define JFLAG_N_1 (1 << 14)
|
||||
#define JFLAG_NS1 (1 << 13)
|
||||
#define JFLAG_N01 (1 << 12)
|
||||
#define JFLAG_N23 (1 << 11)
|
||||
#define JFLAG_NK2 (1 << 10)
|
||||
#define JFLAG_NK4 (1 << 9)
|
||||
#define JFLAG_NN0 (1 << 8)
|
||||
#define JFLAG_NSN (1 << 7)
|
||||
#define JFLAG_KA (1 << 0)
|
||||
|
||||
#define DO_CLSTUDY 0x01
|
||||
#define DO_IKKATU 0x02
|
||||
#define DO_CLSTUDY 0x01
|
||||
#define DO_IKKATU 0x02
|
||||
|
||||
#define K_DOUSHI 1
|
||||
#define K_YOUGEN 2
|
||||
#define K_TAIGEN 3
|
||||
#define K_FUKUSI 4
|
||||
#define K_RENTAISI 5
|
||||
#define K_SONOTA 6
|
||||
#define K_DOUSHI 1
|
||||
#define K_YOUGEN 2
|
||||
#define K_TAIGEN 3
|
||||
#define K_FUKUSHI 4
|
||||
#define K_RENTAISHI 5
|
||||
#define K_SONOTA 6
|
||||
|
||||
#define EUC_a1 (unsigned char)0xa1
|
||||
#define EUC_a2 (unsigned char)0xa2
|
||||
#define EUC_a3 (unsigned char)0xa3
|
||||
#define EUC_a4 (unsigned char)0xa4
|
||||
#define EUC_a5 (unsigned char)0xa5
|
||||
#define EUC_a1 (unsigned char)0xa1
|
||||
#define EUC_a2 (unsigned char)0xa2
|
||||
#define EUC_a3 (unsigned char)0xa3
|
||||
#define EUC_a4 (unsigned char)0xa4
|
||||
#define EUC_a5 (unsigned char)0xa5
|
||||
|
||||
#define EUC_START (unsigned char)0xa1
|
||||
#define EUC_END (unsigned char)0xfe
|
||||
#define EUC_END_KIGOU (unsigned char)0xae
|
||||
#define EUC_0 (unsigned char)0xb0
|
||||
#define EUC_END_0 (unsigned char)0xb9
|
||||
#define EUC_A (unsigned char)0xc1
|
||||
#define EUC_END_A (unsigned char)0xda
|
||||
#define EUC_a (unsigned char)0xe1
|
||||
#define EUC_END_a (unsigned char)0xfa
|
||||
#define EUC_END_HIRA (unsigned char)0xf3
|
||||
#define EUC_VU (unsigned char)0xf4
|
||||
#define EUC_XKA (unsigned char)0xf5
|
||||
#define EUC_XKE (unsigned char)0xf6
|
||||
#define EUC_START (unsigned char)0xa1
|
||||
#define EUC_END (unsigned char)0xfe
|
||||
#define EUC_END_KIGOU (unsigned char)0xae
|
||||
#define EUC_0 (unsigned char)0xb0
|
||||
#define EUC_END_0 (unsigned char)0xb9
|
||||
#define EUC_A (unsigned char)0xc1
|
||||
#define EUC_END_A (unsigned char)0xda
|
||||
#define EUC_a (unsigned char)0xe1
|
||||
#define EUC_END_a (unsigned char)0xfa
|
||||
#define EUC_END_HIRA (unsigned char)0xf3
|
||||
#define EUC_VU (unsigned char)0xf4
|
||||
#define EUC_XKA (unsigned char)0xf5
|
||||
#define EUC_XKE (unsigned char)0xf6
|
||||
|
||||
#define isknj1(c) (((c) == SS2) || (((c) & 0x80) && ((c) != SS3)))
|
||||
#define isknj1(c) (((c) == SS2) || (((c) & 0x80) && ((c) != SS3)))
|
||||
|
||||
#define SHU 0x01
|
||||
#define T_KANOU 0x80
|
||||
#define T_SHUUJO 0x40
|
||||
#define SHU 0x01
|
||||
#define T_KANOU 0x80
|
||||
#define T_SHUUJO 0x40
|
||||
|
||||
#define DICTOP 0x01
|
||||
#define FZKTOP 0x02
|
||||
#define DEPEND 0x04
|
||||
#define NUMBER 0x08
|
||||
#define FZK_KGU 0x10
|
||||
#define TAI_KGU 0x20
|
||||
#define BEFORNUM 0x40
|
||||
#define MIDNUM 0x80
|
||||
#define NOTNRM 0xFE
|
||||
#define DICTOP 0x01
|
||||
#define FZKTOP 0x02
|
||||
#define DEPEND 0x04
|
||||
#define NUMBER 0x08
|
||||
#define FZK_KGU 0x10
|
||||
#define TAI_KGU 0x20
|
||||
#define BEFORNUM 0x40
|
||||
#define MIDNUM 0x80
|
||||
#define NOTNRM 0xFE
|
||||
|
||||
#define CNJEND 0xff
|
||||
#define TYOUONFLG 0x80
|
||||
#define CNJEND 0xff
|
||||
#define TYOUONFLG 0x80
|
||||
|
||||
#define MAXFREC 32
|
||||
#define MAXFLVL 10
|
||||
#define FZKEND 0xff
|
||||
#define MAXFREC 32
|
||||
#define MAXFLVL 10
|
||||
#define FZKEND 0xff
|
||||
|
||||
#define SETTOU_O 1
|
||||
#define SETTOU_GO 2
|
||||
#define SETTOU_DAI 3
|
||||
#define SETTOU_KIGOU 4
|
||||
#define SETTOU_O 1
|
||||
#define SETTOU_GO 2
|
||||
#define SETTOU_DAI 3
|
||||
#define SETTOU_KIGOU 4
|
||||
|
||||
#define NumKetaLength 16
|
||||
#define NumWordBuf ((NumKetaLength+3)/4)
|
||||
#define NumKetaLength 16
|
||||
#define NumWordBuf ((NumKetaLength + 3) / 4)
|
||||
|
||||
#define MainSegmentLength 2048
|
||||
#define MainIndexLength 2048
|
||||
#define MainIndexNumber 512
|
||||
#define MainSegmentLength 2048
|
||||
#define MainIndexLength 2048
|
||||
#define MainIndexNumber 512
|
||||
|
||||
#define MaxYomiLength 32
|
||||
#define MaxKanjiLength 32
|
||||
#define MaxHinsiNumber 16
|
||||
#define MaxAtrNumber 16
|
||||
#define MaxJosiNumber 16
|
||||
#define MaxYomiLength 32
|
||||
#define MaxKanjiLength 32
|
||||
#define MaxHinshiNumber 16
|
||||
#define MaxAtrNumber 16
|
||||
#define MaxJosiNumber 16
|
||||
|
||||
#define MaxKnjAskNumber 16
|
||||
#define MaxYomiAskNumber 16
|
||||
#define MaxKnjAskNumber 16
|
||||
#define MaxYomiAskNumber 16
|
||||
|
||||
#define DouonBlkSizeNumber 3
|
||||
#define DouonBlkSizeNumber 3
|
||||
|
||||
#define DouonBlkTerm 0xff
|
||||
#define HinsiBlkTerm 0xff
|
||||
#define DouonBlkTerm 0xff
|
||||
#define HinshiBlkTerm 0xff
|
||||
|
||||
#define NormalKanjiMask 0x7f
|
||||
#define SS3Kanji 0x0080
|
||||
#define ZenHiraAssyuku 0x80
|
||||
#define OffsetAssyuku 0x90
|
||||
#define ZenKataAssyuku 0xa0
|
||||
#define AiAttribute 0xb0
|
||||
#define KanjiAssyuku 0xc0
|
||||
#define LeadingHankaku 0xd0
|
||||
#define KanjiStrEnd 0x00
|
||||
#define IsAssyuku 0x80
|
||||
#define AssukuUse2byte 0x90
|
||||
#define KnjAssyukuMask 0x0f
|
||||
#define KanjiCodeMask 0x0f
|
||||
#define KanjiModeMask 0xf0
|
||||
#define AtrMsKanjiOfs 0xc0c0
|
||||
#define NormalKanjiMask 0x7f
|
||||
#define SS3Kanji 0x0080
|
||||
#define ZenHiraAsshuku 0x80
|
||||
#define OffsetAsshuku 0x90
|
||||
#define ZenKataAsshuku 0xa0
|
||||
#define AiAttribute 0xb0
|
||||
#define KanjiAsshuku 0xc0
|
||||
#define LeadingHankaku 0xd0
|
||||
#define KanjiStrEnd 0x00
|
||||
#define IsAsshuku 0x80
|
||||
#define AssukuUse2byte 0x90
|
||||
#define KnjAsshukuMask 0x0f
|
||||
#define KanjiCodeMask 0x0f
|
||||
#define KanjiModeMask 0xf0
|
||||
#define AtrMsKanjiOfs 0xc0c0
|
||||
|
||||
#define MaxHindoNumber 2000
|
||||
#define MaxOffsetNumber 1000
|
||||
#define MaxHindoNumber 2000
|
||||
#define MaxOffsetNumber 1000
|
||||
|
||||
#define IllegalFormat "\245\325\245\251\241\274\245\336\245\303\245\310\244\254\260\333\276\357\244\307\244\271"
|
||||
#define TooLongYomi "\306\311\244\337\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongKanji "\264\301\273\372\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongHinsi "\311\312\273\354\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongGroup "\245\260\245\353\241\274\245\327\314\276\244\254\260\333\276\357\244\307\244\271"
|
||||
#define TooLongJosi "\275\365\273\354\312\270\273\372\316\363\244\254\260\333\276\357\244\307\244\271"
|
||||
#define BadHinsi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\311\312\273\354\244\307\244\271"
|
||||
#define BadGroup "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\245\260\245\353\241\274\245\327\244\307\244\271"
|
||||
#define BadJosi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\275\365\273\354\244\307\244\271"
|
||||
#define NoYomiString "\306\311\244\337\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363"
|
||||
#define NoKanjiString "\264\301\273\372\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363"
|
||||
#define TooManyAtr "\302\260\300\255\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define TooManyHinsi "\311\312\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define TooManyJosi "\275\365\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define NoDataInMain "\245\341\245\244\245\363\274\255\275\361\244\313\302\270\272\337\244\267\244\336\244\273\244\363"
|
||||
#define TooManyTarget "\311\312\273\354\244\362\243\261\244\304\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244"
|
||||
#define IllegalFormat "\245\325\245\251\241\274\245\336\245\303\245\310\244\254\260\333\276\357\244\307\244\271"
|
||||
#define TooLongYomi "\306\311\244\337\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongKanji "\264\301\273\372\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongHinshi "\311\312\273\354\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271"
|
||||
#define TooLongGroup "\245\260\245\353\241\274\245\327\314\276\244\254\260\333\276\357\244\307\244\271"
|
||||
#define TooLongJosi "\275\365\273\354\312\270\273\372\316\363\244\254\260\333\276\357\244\307\244\271"
|
||||
#define BadHinshi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\311\312\273\354\244\307\244\271"
|
||||
#define BadGroup "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\245\260\245\353\241\274\245\327\244\307\244\271"
|
||||
#define BadJosi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\275\365\273\354\244\307\244\271"
|
||||
#define NoYomiString "\306\311\244\337\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363"
|
||||
#define NoKanjiString "\264\301\273\372\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363"
|
||||
#define TooManyAtr "\302\260\300\255\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define TooManyHinshi "\311\312\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define TooManyJosi "\275\365\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271"
|
||||
#define NoDataInMain "\245\341\245\244\245\363\274\255\275\361\244\313\302\270\272\337\244\267\244\336\244\273\244\363"
|
||||
#define TooManyTarget "\311\312\273\354\244\362\243\261\244\304\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244"
|
||||
|
||||
#define HinsiTankan cnvhinsi("\303\261\264\301")
|
||||
#define HinshiTankan cnvhinshi("\303\261\264\301")
|
||||
|
||||
#define DIVLIST 1
|
||||
#define ASSYUKUREC 2
|
||||
#define STRING 3
|
||||
#define HINDOREC 4
|
||||
#define OFFSETREC 5
|
||||
#define KANJIREC 6
|
||||
#define HINSIREC 7
|
||||
#define DOUONREC 8
|
||||
#define DIVLIST 1
|
||||
#define ASSHUKUREC 2
|
||||
#define STRING 3
|
||||
#define HINDOREC 4
|
||||
#define OFFSETREC 5
|
||||
#define KANJIREC 6
|
||||
#define HINSHIREC 7
|
||||
#define DOUONREC 8
|
||||
|
||||
#endif /* SJ3_CONST_H_ */
|
||||
|
|
|
|||
407
conv.c
407
conv.c
|
|
@ -27,14 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: conv.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:11 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <errno.h>
|
||||
#include "wchar16.h"
|
||||
#include "select.h"
|
||||
|
|
@ -42,150 +34,182 @@
|
|||
#include "inkey.h"
|
||||
#include "common.h"
|
||||
|
||||
#define MSEC 300
|
||||
|
||||
#define MSEC 300
|
||||
int keyvalue;
|
||||
|
||||
char* funckey[] = {
|
||||
"\033OH",
|
||||
"\033OP",
|
||||
"\033OQ",
|
||||
"\033OR",
|
||||
"\033OS",
|
||||
"\033OT",
|
||||
"\033OU",
|
||||
"\033OV",
|
||||
"\033OW",
|
||||
"\033OX",
|
||||
"\033OY",
|
||||
"\033OZ",
|
||||
"\033[C",
|
||||
"\033OC",
|
||||
"\033[D",
|
||||
"\033OD",
|
||||
"\033[A",
|
||||
"\033OA",
|
||||
"\033[B",
|
||||
"\033OB",
|
||||
"\033[H",
|
||||
"\033[4~",
|
||||
"\033[11~",
|
||||
"\033[8~",
|
||||
"\033[12~",
|
||||
"\033[13~",
|
||||
"\033[9~",
|
||||
"\033[14~",
|
||||
"\033[15~",
|
||||
"\033[17~",
|
||||
"\033[18~",
|
||||
"\033[19~",
|
||||
"\033[20~",
|
||||
"\033[21~",
|
||||
"\033[7~",
|
||||
};
|
||||
|
||||
int funcvalue[] = {
|
||||
KEY_CONV,
|
||||
KEY_HENKAN,
|
||||
KEY_MUHENKAN,
|
||||
KEY_ETC,
|
||||
KEY_KETTEI,
|
||||
KEY_CODE,
|
||||
KEY_HALPHA,
|
||||
KEY_ZALPHA,
|
||||
KEY_HKATA,
|
||||
KEY_ZKATA,
|
||||
KEY_ZHIRA,
|
||||
KEY_OTHER,
|
||||
KEY_RIGHT,
|
||||
KEY_RIGHT,
|
||||
KEY_LEFT,
|
||||
KEY_LEFT,
|
||||
KEY_UP,
|
||||
KEY_UP,
|
||||
KEY_DOWN,
|
||||
KEY_DOWN,
|
||||
KEY_CONV,
|
||||
KEY_HENKAN,
|
||||
KEY_HENKAN,
|
||||
KEY_MUHENKAN,
|
||||
KEY_MUHENKAN,
|
||||
KEY_ETC,
|
||||
KEY_KETTEI,
|
||||
KEY_KETTEI,
|
||||
KEY_CODE,
|
||||
KEY_HALPHA,
|
||||
KEY_ZALPHA,
|
||||
KEY_HKATA,
|
||||
KEY_ZKATA,
|
||||
KEY_ZHIRA,
|
||||
KEY_CONV,
|
||||
};
|
||||
|
||||
int keyvalue;
|
||||
int keynumber = sizeof(funckey) / sizeof(char*);
|
||||
|
||||
char *funckey[] = {
|
||||
"\033OH", "\033OP", "\033OQ",
|
||||
"\033OR", "\033OS", "\033OT",
|
||||
"\033OU", "\033OV", "\033OW",
|
||||
"\033OX", "\033OY", "\033OZ",
|
||||
"\033[C", "\033OC", "\033[D",
|
||||
"\033OD", "\033[A", "\033OA",
|
||||
"\033[B", "\033OB", "\033[H",
|
||||
"\033[4~", "\033[11~", "\033[8~",
|
||||
"\033[12~", "\033[13~", "\033[9~",
|
||||
"\033[14~", "\033[15~", "\033[17~",
|
||||
"\033[18~", "\033[19~", "\033[20~",
|
||||
"\033[21~", "\033[7~",
|
||||
};
|
||||
extern int Direct;
|
||||
extern int master;
|
||||
extern wchar16_t Ukey[UKEYNUM][SEQLEN + 1];
|
||||
extern int Uvalue[];
|
||||
extern int Unumber;
|
||||
|
||||
int funcvalue[] = {
|
||||
KEY_CONV, KEY_HENKAN, KEY_MUHENKAN,
|
||||
KEY_ETC, KEY_KETTEI, KEY_CODE,
|
||||
KEY_HALPHA, KEY_ZALPHA, KEY_HKATA,
|
||||
KEY_ZKATA, KEY_ZHIRA, KEY_OTHER,
|
||||
KEY_RIGHT, KEY_RIGHT, KEY_LEFT,
|
||||
KEY_LEFT, KEY_UP, KEY_UP,
|
||||
KEY_DOWN, KEY_DOWN, KEY_CONV,
|
||||
KEY_HENKAN, KEY_HENKAN, KEY_MUHENKAN,
|
||||
KEY_MUHENKAN, KEY_ETC, KEY_KETTEI,
|
||||
KEY_KETTEI, KEY_CODE, KEY_HALPHA,
|
||||
KEY_ZALPHA, KEY_HKATA, KEY_ZKATA,
|
||||
KEY_ZHIRA, KEY_CONV,
|
||||
};
|
||||
|
||||
int keynumber = sizeof(funckey)/sizeof(char*);
|
||||
|
||||
|
||||
|
||||
extern int Direct;
|
||||
extern int master;
|
||||
extern wchar16_t Ukey[UKEYNUM][SEQLEN+1];
|
||||
extern int Uvalue[];
|
||||
extern int Unumber;
|
||||
|
||||
|
||||
|
||||
convert_stat ()
|
||||
{
|
||||
stat_init ();
|
||||
stat_conv ();
|
||||
convert_stat() {
|
||||
stat_init();
|
||||
stat_conv();
|
||||
}
|
||||
|
||||
inputprocess ()
|
||||
{
|
||||
int c;
|
||||
wchar16_t obuf[2];
|
||||
inputprocess() {
|
||||
int c;
|
||||
wchar16_t obuf[2];
|
||||
|
||||
if (Direct) {
|
||||
set_guide_line (KEY_CONV);
|
||||
convert_stat ();
|
||||
if(Direct) {
|
||||
set_guide_line(KEY_CONV);
|
||||
convert_stat();
|
||||
}
|
||||
set_guide_line (KEY_NORMAL);
|
||||
print_guide_line ();
|
||||
for (;;) {
|
||||
if ((c = inkey ()) == EOF)
|
||||
set_guide_line(KEY_NORMAL);
|
||||
print_guide_line();
|
||||
for(;;) {
|
||||
if((c = inkey()) == EOF)
|
||||
continue;
|
||||
switch (keyvalue) {
|
||||
switch(keyvalue) {
|
||||
case KEY_NORMAL:
|
||||
obuf[0] = c;
|
||||
obuf[1] = 0;
|
||||
SJ_write (obuf, 1);
|
||||
SJ_write(obuf, 1);
|
||||
break;
|
||||
case KEY_CONV:
|
||||
set_guide_line (KEY_CONV);
|
||||
convert_stat ();
|
||||
set_guide_line (KEY_NORMAL);
|
||||
print_guide_line ();
|
||||
set_guide_line(KEY_CONV);
|
||||
convert_stat();
|
||||
set_guide_line(KEY_NORMAL);
|
||||
print_guide_line();
|
||||
break;
|
||||
default:
|
||||
write_pseq (0);
|
||||
write_pseq(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wchar16_t ibuf[KEYBUFSIZ];
|
||||
wchar16_t pars_seq[KEYBUFSIZ];
|
||||
int buf_count = 0;
|
||||
int pars_n;
|
||||
static int escape = 0;
|
||||
|
||||
wchar16_t ibuf[KEYBUFSIZ];
|
||||
wchar16_t pars_seq[KEYBUFSIZ];
|
||||
int buf_count = 0;
|
||||
int pars_n;
|
||||
static int escape = 0;
|
||||
inkey() {
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
wchar16_t c;
|
||||
|
||||
inkey ()
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
wchar16_t c;
|
||||
|
||||
cv = current_conversion;
|
||||
cv = current_conversion;
|
||||
keyvalue = KEY_NORMAL;
|
||||
pars_n = 0;
|
||||
if (buf_count) {
|
||||
if (escape && cv->Cflag)
|
||||
master_flush ();
|
||||
pars_n = 0;
|
||||
if(buf_count) {
|
||||
if(escape && cv->Cflag)
|
||||
master_flush();
|
||||
c = *ibuf;
|
||||
}
|
||||
else {
|
||||
if ((c = SJ_getchar ()) == (wchar16_t) EOF)
|
||||
} else {
|
||||
if((c = SJ_getchar()) == (wchar16_t)EOF)
|
||||
|
||||
return ((short) c);
|
||||
*ibuf = c;
|
||||
return ((short)c);
|
||||
*ibuf = c;
|
||||
buf_count = 1;
|
||||
}
|
||||
|
||||
|
||||
if (*ibuf == ESC) {
|
||||
keyvalue = sequence (ibuf, &buf_count);
|
||||
escape = 1;
|
||||
}
|
||||
else {
|
||||
if(*ibuf == ESC) {
|
||||
keyvalue = sequence(ibuf, &buf_count);
|
||||
escape = 1;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
|
||||
if (keyvalue == KEY_NORMAL)
|
||||
keyvalue = parse_command (ibuf, &buf_count);
|
||||
if(keyvalue == KEY_NORMAL)
|
||||
keyvalue = parse_command(ibuf, &buf_count);
|
||||
|
||||
if (keyvalue == KEY_NORMAL) {
|
||||
if(keyvalue == KEY_NORMAL) {
|
||||
c = *ibuf;
|
||||
for (i=1 ; i < buf_count ; i++)
|
||||
for(i = 1; i < buf_count; i++)
|
||||
ibuf[i - 1] = ibuf[i];
|
||||
buf_count--;
|
||||
}
|
||||
|
||||
if (buf_count > KEYBUFLIM) {
|
||||
for (i = buf_count - 1; i >= 0 ; i --) {
|
||||
if (ibuf[i] == ESC) {
|
||||
if(buf_count > KEYBUFLIM) {
|
||||
for(i = buf_count - 1; i >= 0; i--) {
|
||||
if(ibuf[i] == ESC) {
|
||||
|
||||
for (j = i ; j < buf_count ; j ++)
|
||||
ibuf[j-i] = ibuf[j];
|
||||
for(j = i; j < buf_count; j++)
|
||||
ibuf[j - i] = ibuf[j];
|
||||
buf_count -= i;
|
||||
return(c);
|
||||
return (c);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,43 +218,40 @@ inkey ()
|
|||
return (c);
|
||||
}
|
||||
|
||||
sequence (buf, count)
|
||||
wchar16_t *buf;
|
||||
int *count;
|
||||
sequence(buf, count)
|
||||
wchar16_t* buf;
|
||||
int* count;
|
||||
{
|
||||
|
||||
int n;
|
||||
SELECT_FD ifds;
|
||||
struct timeval t;
|
||||
wchar16_t* s;
|
||||
int value;
|
||||
|
||||
|
||||
int n;
|
||||
SELECT_FD ifds;
|
||||
struct timeval t;
|
||||
wchar16_t *s;
|
||||
int value;
|
||||
|
||||
|
||||
if (*count > 1 && (value = parse_escape (buf, count, 1)) != KEY_MORE)
|
||||
if(*count > 1 && (value = parse_escape(buf, count, 1)) != KEY_MORE)
|
||||
return (value);
|
||||
|
||||
s = buf + *count;
|
||||
for (;;) {
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = UsecWeight (0);
|
||||
FD_ZERO (&ifds);
|
||||
FD_SET (STDIN, &ifds);
|
||||
if (select (STDIN + 1, &ifds, 0, 0, &t) <= 0) {
|
||||
if (errno == EINTR) {
|
||||
for(;;) {
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = UsecWeight(0);
|
||||
FD_ZERO(&ifds);
|
||||
FD_SET(STDIN, &ifds);
|
||||
if(select(STDIN + 1, &ifds, 0, 0, &t) <= 0) {
|
||||
if(errno == EINTR) {
|
||||
errno = 0;
|
||||
continue;
|
||||
} else {
|
||||
return (parse_escape (buf, count, 0));
|
||||
return (parse_escape(buf, count, 0));
|
||||
}
|
||||
}
|
||||
if ((n = SJ_read (s, KEYBUFLIM)) <= 0) {
|
||||
return (parse_escape (buf, *count, 0));
|
||||
if((n = SJ_read(s, KEYBUFLIM)) <= 0) {
|
||||
return (parse_escape(buf, *count, 0));
|
||||
}
|
||||
s += n;
|
||||
*count += n;
|
||||
if ((value = parse_escape (buf, count, 1)) == KEY_MORE)
|
||||
if((value = parse_escape(buf, count, 1)) == KEY_MORE)
|
||||
continue;
|
||||
else {
|
||||
return (value);
|
||||
|
|
@ -238,135 +259,113 @@ int *count;
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
parse_escape (s, count, more)
|
||||
wchar16_t *s;
|
||||
int *count;
|
||||
int more;
|
||||
parse_escape(s, count, more)
|
||||
wchar16_t* s;
|
||||
int* count;
|
||||
int more;
|
||||
{
|
||||
int i, j;
|
||||
wchar16_t temp[KEYBUFSIZ];
|
||||
int possible;
|
||||
int i, j;
|
||||
wchar16_t temp[KEYBUFSIZ];
|
||||
int possible;
|
||||
|
||||
possible = 0;
|
||||
|
||||
for(i = 0; i < Unumber; i++) {
|
||||
|
||||
|
||||
for (i = 0 ; i < Unumber ; i ++) {
|
||||
|
||||
|
||||
for (j=0 ; j < *count ; j++) {
|
||||
if (s[j] != Ukey[i][j])
|
||||
for(j = 0; j < *count; j++) {
|
||||
if(s[j] != Ukey[i][j])
|
||||
break;
|
||||
}
|
||||
|
||||
if(j == wslen(&Ukey[i][0])) {
|
||||
|
||||
if (j == wslen (&Ukey[i][0])) {
|
||||
|
||||
|
||||
Strncpy (pars_seq, s, j);
|
||||
pars_seq[j] = (wchar16_t) '\0';
|
||||
pars_n = j;
|
||||
|
||||
Strncpy(pars_seq, s, j);
|
||||
pars_seq[j] = (wchar16_t)'\0';
|
||||
pars_n = j;
|
||||
|
||||
*count -= j;
|
||||
|
||||
|
||||
if (*count > 0) {
|
||||
Strncpy (temp, &s[j], *count);
|
||||
temp[*count] = (wchar16_t) '\0';
|
||||
wscpy(s, temp);
|
||||
if(*count > 0) {
|
||||
Strncpy(temp, &s[j], *count);
|
||||
temp[*count] = (wchar16_t)'\0';
|
||||
wscpy(s, temp);
|
||||
}
|
||||
|
||||
return (Uvalue[i]);
|
||||
}
|
||||
else if (j == *count)
|
||||
} else if(j == *count)
|
||||
possible = 1;
|
||||
}
|
||||
|
||||
for(i = 0; i < keynumber; i++) {
|
||||
|
||||
|
||||
for (i = 0 ; i < keynumber ; i ++) {
|
||||
|
||||
|
||||
for (j = 0 ; j < *count ; j ++) {
|
||||
if (s[j] != (unsigned char)funckey[i][j])
|
||||
for(j = 0; j < *count; j++) {
|
||||
if(s[j] != (unsigned char)funckey[i][j])
|
||||
break;
|
||||
}
|
||||
|
||||
if(j == strlen(funckey[i])) {
|
||||
|
||||
if (j == strlen (funckey[i])) {
|
||||
|
||||
|
||||
Strncpy (pars_seq, s, j);
|
||||
pars_seq[j] = (wchar16_t) '\0';
|
||||
pars_n = j;
|
||||
|
||||
Strncpy(pars_seq, s, j);
|
||||
pars_seq[j] = (wchar16_t)'\0';
|
||||
pars_n = j;
|
||||
|
||||
*count -= j;
|
||||
|
||||
|
||||
if (*count > 0) {
|
||||
Strncpy (temp, &s[j], *count);
|
||||
temp[*count] = (wchar16_t) '\0';
|
||||
wscpy (s, temp);
|
||||
if(*count > 0) {
|
||||
Strncpy(temp, &s[j], *count);
|
||||
temp[*count] = (wchar16_t)'\0';
|
||||
wscpy(s, temp);
|
||||
}
|
||||
|
||||
return (funcvalue[i]);
|
||||
}
|
||||
else if (j == *count)
|
||||
} else if(j == *count)
|
||||
possible = 1;
|
||||
}
|
||||
|
||||
if (*count == 1)
|
||||
if(*count == 1)
|
||||
return (KEY_NORMAL);
|
||||
else if (more && possible)
|
||||
else if(more && possible)
|
||||
return (KEY_MORE);
|
||||
else {
|
||||
Strncpy (pars_seq, s, *count);
|
||||
pars_seq[*count] = (wchar16_t) '\0';
|
||||
pars_n = *count;
|
||||
*count = 0;
|
||||
*s = '\0';
|
||||
Strncpy(pars_seq, s, *count);
|
||||
pars_seq[*count] = (wchar16_t)'\0';
|
||||
pars_n = *count;
|
||||
*count = 0;
|
||||
*s = '\0';
|
||||
return (KEY_OTHER);
|
||||
}
|
||||
}
|
||||
|
||||
write_pseq (mod)
|
||||
int mod;
|
||||
write_pseq(mod) int mod;
|
||||
{
|
||||
|
||||
|
||||
if (mod == 3) {
|
||||
if (pars_n > 0) {
|
||||
if(mod == 3) {
|
||||
if(pars_n > 0) {
|
||||
pars_n = 0;
|
||||
return (*pars_seq);
|
||||
}
|
||||
}
|
||||
if (mod == 2) {
|
||||
if (pars_n == 1) {
|
||||
if(mod == 2) {
|
||||
if(pars_n == 1) {
|
||||
pars_n = 0;
|
||||
return (*pars_seq);
|
||||
}
|
||||
pars_n = 0;
|
||||
return (0);
|
||||
}
|
||||
if (mod == 1) {
|
||||
if (pars_n == 1) {
|
||||
if(mod == 1) {
|
||||
if(pars_n == 1) {
|
||||
pars_n = 0;
|
||||
return (*pars_seq);
|
||||
}
|
||||
else if (IsGoto (*pars_seq)) {
|
||||
Strncpy (&ibuf[buf_count], &pars_seq[1], pars_n - 1);
|
||||
} else if(IsGoto(*pars_seq)) {
|
||||
Strncpy(&ibuf[buf_count], &pars_seq[1], pars_n - 1);
|
||||
buf_count += pars_n - 1;
|
||||
pars_n = 0;
|
||||
return (*pars_seq);
|
||||
}
|
||||
}
|
||||
if (pars_n > 0)
|
||||
SJ_through (pars_seq, pars_n);
|
||||
if(pars_n > 0)
|
||||
SJ_through(pars_seq, pars_n);
|
||||
pars_n = 0;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
|
|||
109
conversion.h
109
conversion.h
|
|
@ -27,88 +27,79 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: conversion.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:43 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj2.h"
|
||||
#include "sj3libsj3.h"
|
||||
#include "henkan.h"
|
||||
|
||||
typedef struct bunsetu_sj3 Bunsetu;
|
||||
typedef struct bunsetsu_sj3 Bunsetsu;
|
||||
|
||||
typedef struct _Conversion {
|
||||
unsigned short out_mode[BUFFLENGTH*2];
|
||||
unsigned short out_mode[BUFFLENGTH * 2];
|
||||
|
||||
unsigned short Plen[BUFFLENGTH];
|
||||
unsigned short OrgPlen[BUFFLENGTH];
|
||||
unsigned short Bpoint[BUFFLENGTH];
|
||||
unsigned short Edit[BUFFLENGTH];
|
||||
unsigned short span_l[BUFFLENGTH];
|
||||
unsigned short Elen[BUFFLENGTH];
|
||||
unsigned short Displen[BUFFLENGTH];
|
||||
unsigned short Plen[BUFFLENGTH];
|
||||
unsigned short OrgPlen[BUFFLENGTH];
|
||||
unsigned short Bpoint[BUFFLENGTH];
|
||||
unsigned short Edit[BUFFLENGTH];
|
||||
unsigned short span_l[BUFFLENGTH];
|
||||
unsigned short Elen[BUFFLENGTH];
|
||||
unsigned short Displen[BUFFLENGTH];
|
||||
|
||||
unsigned short Vindex[BUFFLENGTH * 2];
|
||||
|
||||
short ha_point;
|
||||
short ha_epoint;
|
||||
short out_point;
|
||||
short out_epoint;
|
||||
short span_point;
|
||||
short Bnum;
|
||||
short Enum;
|
||||
short e_point;
|
||||
short ha_point;
|
||||
short ha_epoint;
|
||||
short out_point;
|
||||
short out_epoint;
|
||||
short span_point;
|
||||
short Bnum;
|
||||
short Enum;
|
||||
short e_point;
|
||||
|
||||
unsigned short line;
|
||||
unsigned short column;
|
||||
|
||||
unsigned short PushCurrentVcol;
|
||||
unsigned short Vlen;
|
||||
unsigned short SavedRow;
|
||||
unsigned short SavedCol;
|
||||
unsigned short CurrentVcol;
|
||||
unsigned short MaxVcol;
|
||||
unsigned short PushCurrentVcol;
|
||||
unsigned short Vlen;
|
||||
unsigned short SavedRow;
|
||||
unsigned short SavedCol;
|
||||
unsigned short CurrentVcol;
|
||||
unsigned short MaxVcol;
|
||||
|
||||
short CurBun;
|
||||
short PreBun;
|
||||
short CurBun;
|
||||
short PreBun;
|
||||
|
||||
Bunsetu Bun[BUFFLENGTH];
|
||||
Bunsetsu Bun[BUFFLENGTH];
|
||||
|
||||
wchar16_t out_buf[BUFFLENGTH * 2];
|
||||
unsigned char in_mode[BUFFLENGTH * 2];
|
||||
wchar16_t *span_p[BUFFLENGTH];
|
||||
wchar16_t *Ppoint[BUFFLENGTH];
|
||||
wchar16_t *Epoint[BUFFLENGTH];
|
||||
wchar16_t Halpha[BUFFLENGTH];
|
||||
unsigned char kettei[BUFFLENGTH];
|
||||
unsigned char Pkettei[BUFFLENGTH];
|
||||
unsigned char Pedited[BUFFLENGTH];
|
||||
wchar16_t Ebuff[EDITLEN];
|
||||
unsigned char Bkettei[BUFFLENGTH];
|
||||
unsigned char Dispmod[BUFFLENGTH];
|
||||
wchar16_t yomiout[BUFFLENGTH * 2];
|
||||
wchar16_t kanjiout[BUFFLENGTH * 4];
|
||||
wchar16_t out_buf[BUFFLENGTH * 2];
|
||||
unsigned char in_mode[BUFFLENGTH * 2];
|
||||
wchar16_t* span_p[BUFFLENGTH];
|
||||
wchar16_t* Ppoint[BUFFLENGTH];
|
||||
wchar16_t* Epoint[BUFFLENGTH];
|
||||
wchar16_t Halpha[BUFFLENGTH];
|
||||
unsigned char kettei[BUFFLENGTH];
|
||||
unsigned char Pkettei[BUFFLENGTH];
|
||||
unsigned char Pedited[BUFFLENGTH];
|
||||
wchar16_t Ebuff[EDITLEN];
|
||||
unsigned char Bkettei[BUFFLENGTH];
|
||||
unsigned char Dispmod[BUFFLENGTH];
|
||||
wchar16_t yomiout[BUFFLENGTH * 2];
|
||||
wchar16_t kanjiout[BUFFLENGTH * 4];
|
||||
|
||||
unsigned char Imode;
|
||||
unsigned char BuffMode;
|
||||
unsigned char Kanji;
|
||||
unsigned char Dflag;
|
||||
unsigned char word_regist;
|
||||
unsigned char Cflag;
|
||||
unsigned char henkanflag;
|
||||
unsigned char Imode;
|
||||
unsigned char BuffMode;
|
||||
unsigned char Kanji;
|
||||
unsigned char Dflag;
|
||||
unsigned char word_regist;
|
||||
unsigned char Cflag;
|
||||
unsigned char henkanflag;
|
||||
|
||||
unsigned char wrap;
|
||||
unsigned char wrap;
|
||||
} Conversion;
|
||||
|
||||
|
||||
wchar16_t osave_buf[BUFFLENGTH * 2];
|
||||
wchar16_t osave_buf[BUFFLENGTH * 2];
|
||||
unsigned short osave_mode[BUFFLENGTH * 2];
|
||||
unsigned short isave_mode[BUFFLENGTH * 2];
|
||||
unsigned short os_point;
|
||||
|
||||
wchar16_t hsave_buf[BUFFLENGTH];
|
||||
wchar16_t hsave_buf[BUFFLENGTH];
|
||||
unsigned short hs_point;
|
||||
|
|
|
|||
36
cvtclknj.c
36
cvtclknj.c
|
|
@ -27,45 +27,25 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cvtclknj.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:38 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
|
||||
void cvtkouho(), setstyrec();
|
||||
|
||||
void cvtclknj() {
|
||||
KHREC* krec;
|
||||
int i;
|
||||
|
||||
void cvtkouho(), setstyrec();
|
||||
if(!selectid) selectid = khcount;
|
||||
|
||||
|
||||
|
||||
void cvtclknj()
|
||||
{
|
||||
KHREC *krec;
|
||||
int i;
|
||||
|
||||
|
||||
|
||||
|
||||
if (!selectid) selectid = khcount;
|
||||
|
||||
i = khcount;
|
||||
i = khcount;
|
||||
krec = kouhotbl;
|
||||
|
||||
while (i--) {
|
||||
if ((int)krec -> rank == (int)selectid) break;
|
||||
while(i--) {
|
||||
if((int)krec->rank == (int)selectid) break;
|
||||
krec++;
|
||||
}
|
||||
|
||||
|
||||
setstyrec(krec);
|
||||
|
||||
|
||||
cvtkouho(krec);
|
||||
}
|
||||
|
|
|
|||
164
cvtdict.c
164
cvtdict.c
|
|
@ -27,58 +27,41 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cvtdict.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:40 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
void cvtdict(KHREC* krec, CLREC* clrec, int flg) {
|
||||
TypeDicOfs ofs;
|
||||
unsigned char* yptr;
|
||||
int jlen;
|
||||
int stblen;
|
||||
int sttlen;
|
||||
unsigned char* fptr;
|
||||
int cllen;
|
||||
JREC* jrec;
|
||||
int i, j;
|
||||
|
||||
|
||||
void
|
||||
cvtdict(KHREC *krec, CLREC *clrec, int flg)
|
||||
{
|
||||
TypeDicOfs ofs;
|
||||
unsigned char *yptr;
|
||||
int jlen;
|
||||
int stblen;
|
||||
int sttlen;
|
||||
unsigned char *fptr;
|
||||
int cllen;
|
||||
JREC *jrec;
|
||||
int i, j;
|
||||
|
||||
|
||||
ofs = krec -> offs;
|
||||
jrec = clrec -> jnode;
|
||||
cllen = clrec -> cllen;
|
||||
ofs = krec->offs;
|
||||
jrec = clrec->jnode;
|
||||
cllen = clrec->cllen;
|
||||
|
||||
yptr = inputyomi;
|
||||
|
||||
jlen = jrec->jlen;
|
||||
|
||||
jlen = jrec -> jlen;
|
||||
if((i = jrec->sttofs) != 0) {
|
||||
|
||||
|
||||
if ((i = jrec -> sttofs) != 0) {
|
||||
|
||||
if (i == SETTOU_KIGOU) {
|
||||
if(i == SETTOU_KIGOU) {
|
||||
sttlen = 1;
|
||||
fptr = yptr;
|
||||
fptr = yptr;
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
fptr = Settou_ptr(i);
|
||||
fptr = Settou_ptr(i);
|
||||
sttlen = SttYomiLen(fptr);
|
||||
fptr++;
|
||||
if (!krec -> sttkj) fptr += 2;
|
||||
if(!krec->sttkj) fptr += 2;
|
||||
}
|
||||
|
||||
*kanjitmp++ = *fptr++;
|
||||
|
|
@ -87,21 +70,17 @@ cvtdict(KHREC *krec, CLREC *clrec, int flg)
|
|||
yptr += sttlen * 2;
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
sttlen = 0;
|
||||
|
||||
|
||||
if (flg) {
|
||||
if(flg) {
|
||||
|
||||
(*Cvtnum_func[krec->mode - 1])(ystart + sttlen, yptr, jrec);
|
||||
|
||||
|
||||
yptr += (i = jrec -> numlen) * 2;
|
||||
yptr += (i = jrec->numlen) * 2;
|
||||
jlen -= i;
|
||||
|
||||
|
||||
if (jrec -> stbofs) {
|
||||
if(jrec->stbofs) {
|
||||
*kanjitmp++ = *yptr++;
|
||||
*kanjitmp++ = *yptr++;
|
||||
jlen--;
|
||||
|
|
@ -110,71 +89,60 @@ cvtdict(KHREC *krec, CLREC *clrec, int flg)
|
|||
stblen = 0;
|
||||
}
|
||||
|
||||
|
||||
else if ((i = jrec -> stbofs) && (fptr = getstb(jrec -> hinsi))) {
|
||||
else if((i = jrec->stbofs) && (fptr = getstb(jrec->hinshi))) {
|
||||
fptr += i - 1;
|
||||
stblen = StbYomiLen(fptr);
|
||||
jlen -= stblen;
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
stblen = 0;
|
||||
}
|
||||
|
||||
|
||||
if (ofs) {
|
||||
if (seldict(jrec -> dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec -> jseg);
|
||||
if(ofs) {
|
||||
if(seldict(jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
get_askknj();
|
||||
kanjitmp +=
|
||||
getkanji(yptr, jlen, dicbuf + ofs, kanjitmp);
|
||||
getkanji(yptr, jlen, dicbuf + ofs, kanjitmp);
|
||||
yptr += jlen * 2;
|
||||
}
|
||||
else {
|
||||
while (jlen-- > 0) {
|
||||
for ( i = 0; i < euc_codesize(*yptr); i++)
|
||||
*kanjitmp++ = yptr[i];
|
||||
} else {
|
||||
while(jlen-- > 0) {
|
||||
for(i = 0; i < euc_codesize(*yptr); i++)
|
||||
*kanjitmp++ = yptr[i];
|
||||
yptr += euc_codesize(*yptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (stblen) {
|
||||
if(stblen) {
|
||||
i = StbKnjLen(fptr);
|
||||
fptr += stblen + 2;
|
||||
while (i-- > 0) *kanjitmp++ = *fptr++;
|
||||
while(i-- > 0) *kanjitmp++ = *fptr++;
|
||||
yptr += stblen * 2;
|
||||
}
|
||||
|
||||
|
||||
i = cllen - (jrec -> jlen);
|
||||
while (i-- > 0) {
|
||||
for ( j = 0; j < euc_codesize(*yptr); j++)
|
||||
*kanjitmp++ = yptr[j];
|
||||
i = cllen - (jrec->jlen);
|
||||
while(i-- > 0) {
|
||||
for(j = 0; j < euc_codesize(*yptr); j++)
|
||||
*kanjitmp++ = yptr[j];
|
||||
yptr += euc_codesize(*yptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
cvtminasi(int len)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
void cvtminasi(int len) {
|
||||
unsigned char* ptr;
|
||||
|
||||
ptr = inputyomi;
|
||||
|
||||
while (len-- > 0) {
|
||||
while(len-- > 0) {
|
||||
|
||||
|
||||
if (isknj1(*ptr)) {
|
||||
if(isknj1(*ptr)) {
|
||||
*kanjitmp++ = *ptr++;
|
||||
*kanjitmp++ = *ptr++;
|
||||
}
|
||||
|
||||
else if (*ptr == SS3) {
|
||||
else if(*ptr == SS3) {
|
||||
*kanjitmp++ = *ptr++;
|
||||
*kanjitmp++ = *ptr++;
|
||||
*kanjitmp++ = *ptr++;
|
||||
|
|
@ -184,40 +152,32 @@ cvtminasi(int len)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
cvtwakachi(CLREC *clrec)
|
||||
{
|
||||
int jlen;
|
||||
unsigned char *ym;
|
||||
int cnt;
|
||||
unsigned char ch;
|
||||
void cvtwakachi(CLREC* clrec) {
|
||||
int jlen;
|
||||
unsigned char* ym;
|
||||
int cnt;
|
||||
unsigned char ch;
|
||||
|
||||
ym = inputyomi;
|
||||
|
||||
cnt = jlen = clrec->jnode->jlen;
|
||||
while(cnt-- > 0) {
|
||||
if(isknj1(*ym)) {
|
||||
|
||||
cnt = jlen = clrec -> jnode -> jlen;
|
||||
while (cnt-- > 0) {
|
||||
if (isknj1(*ym)) {
|
||||
|
||||
if (*ym == 0xa4) {
|
||||
if(*ym == 0xa4) {
|
||||
ch = *++ym;
|
||||
if (0xa1 <= ch && ch <= 0xf3) {
|
||||
if(0xa1 <= ch && ch <= 0xf3) {
|
||||
*kanjitmp++ = 0xa5;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*kanjitmp++ = 0xa4;
|
||||
}
|
||||
*kanjitmp++ = ch;
|
||||
ym++;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
}
|
||||
}
|
||||
else if (*ym == SS3) {
|
||||
} else if(*ym == SS3) {
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
|
|
@ -226,20 +186,18 @@ cvtwakachi(CLREC *clrec)
|
|||
}
|
||||
}
|
||||
|
||||
cnt = clrec->cllen - jlen;
|
||||
while(cnt-- > 0) {
|
||||
|
||||
cnt = clrec -> cllen - jlen;
|
||||
while (cnt-- > 0) {
|
||||
|
||||
|
||||
if (isknj1(*ym)) {
|
||||
if(isknj1(*ym)) {
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
}
|
||||
|
||||
else if (*ym == SS3) {
|
||||
else if(*ym == SS3) {
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
*kanjitmp++ = *ym++;
|
||||
} else {
|
||||
*kanjitmp++ = *ym++;
|
||||
}
|
||||
|
|
|
|||
158
cvtkanji.c
158
cvtkanji.c
|
|
@ -27,103 +27,74 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: cvtkanji.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:41 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
void mkknjmax();
|
||||
void mvmemi(), free_clall();
|
||||
void free_jall();
|
||||
|
||||
void mkknjmax();
|
||||
void mvmemi(), free_clall();
|
||||
void free_jall();
|
||||
void cvtphknj(void) {
|
||||
int i, j;
|
||||
CLREC* clrec;
|
||||
CLREC* clkp;
|
||||
|
||||
|
||||
|
||||
void
|
||||
cvtphknj (void)
|
||||
{
|
||||
int i, j;
|
||||
CLREC *clrec;
|
||||
CLREC *clkp;
|
||||
|
||||
if (!kanjilen) goto not_enough_memory;
|
||||
if(!kanjilen) goto not_enough_memory;
|
||||
|
||||
khcount = 0;
|
||||
clkp = NULL;
|
||||
clkp = NULL;
|
||||
stdytop = NULL;
|
||||
|
||||
clrec = clt1st;
|
||||
while (clrec) {
|
||||
if (ph_khtbl(clrec)) clkp = clrec;
|
||||
clrec = clrec -> clsort;
|
||||
}
|
||||
clrec = clt1st;
|
||||
while(clrec) {
|
||||
if(ph_khtbl(clrec)) clkp = clrec;
|
||||
clrec = clrec->clsort;
|
||||
}
|
||||
|
||||
if(clkp && stdytop) {
|
||||
|
||||
if (clkp && stdytop) {
|
||||
|
||||
if (stdytop -> nmflg)
|
||||
ph_setkouho(clkp, (TypeDicOfs)0, (STDYIN *)0);
|
||||
}
|
||||
if(stdytop->nmflg)
|
||||
ph_setkouho(clkp, (TypeDicOfs)0, (STDYIN*)0);
|
||||
}
|
||||
|
||||
kouhotbl[0].rank = 1;
|
||||
|
||||
|
||||
kanjitmp = kanjibuf + 1;
|
||||
|
||||
|
||||
setstyrec(kouhotbl);
|
||||
|
||||
|
||||
cvtkouho(kouhotbl);
|
||||
|
||||
|
||||
i = kanjitmp - kanjibuf;
|
||||
if (i < kanjilen) {
|
||||
if(i < kanjilen) {
|
||||
|
||||
kanjilen -= i;
|
||||
|
||||
ystart += clt1st->cllen;
|
||||
|
||||
ystart += clt1st -> cllen;
|
||||
|
||||
j = hzstrlen(inputyomi, (int)clt1st -> cllen);
|
||||
j = hzstrlen(inputyomi, (int)clt1st->cllen);
|
||||
kanjibuf[0] = (unsigned char)j;
|
||||
|
||||
|
||||
inputyomi += j;
|
||||
|
||||
|
||||
memcpy(kanjibuf, kanjipos, i);
|
||||
kanjipos += i;
|
||||
}
|
||||
else
|
||||
} else
|
||||
kanjilen = 0;
|
||||
|
||||
not_enough_memory:
|
||||
|
||||
|
||||
free_clall(clt1st);
|
||||
free_jall (jrt1st);
|
||||
free_jall(jrt1st);
|
||||
}
|
||||
|
||||
void cvtkouho(KHREC* krec) {
|
||||
CLREC* clrec;
|
||||
|
||||
clrec = krec->clrec;
|
||||
|
||||
void
|
||||
cvtkouho (KHREC *krec)
|
||||
{
|
||||
CLREC *clrec;
|
||||
|
||||
clrec = krec -> clrec;
|
||||
|
||||
|
||||
switch (clrec -> jnode -> class) {
|
||||
switch(clrec->jnode->class) {
|
||||
case C_DICT:
|
||||
cvtdict(krec, clrec, FALSE);
|
||||
break;
|
||||
|
|
@ -141,73 +112,62 @@ cvtkouho (KHREC *krec)
|
|||
cvtdict(krec, clrec, TRUE);
|
||||
break;
|
||||
|
||||
case C_BUNSETU :
|
||||
case C_MINASI :
|
||||
cvtminasi((int)clrec -> cllen);
|
||||
case C_BUNSETSU:
|
||||
case C_MINASI:
|
||||
cvtminasi((int)clrec->cllen);
|
||||
break;
|
||||
|
||||
case C_WAKACHI :
|
||||
case C_WAKACHI:
|
||||
cvtwakachi(clrec);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
*kanjitmp++ = 0;
|
||||
}
|
||||
|
||||
void setstyrec(KHREC* krec) {
|
||||
JREC* jrec;
|
||||
KHREC* kptr;
|
||||
int ii;
|
||||
unsigned char* fptr;
|
||||
STDYOUT stdy;
|
||||
|
||||
jrec = krec->clrec->jnode;
|
||||
|
||||
void
|
||||
setstyrec (KHREC *krec)
|
||||
{
|
||||
JREC *jrec;
|
||||
KHREC *kptr;
|
||||
int ii;
|
||||
unsigned char *fptr;
|
||||
STDYOUT stdy;
|
||||
if(krec->mode && !krec->offs) {
|
||||
|
||||
jrec = krec -> clrec -> jnode;
|
||||
for(ii = khcount, kptr = kouhotbl; ii--; kptr++)
|
||||
if(kptr->rank == 1) break;
|
||||
|
||||
|
||||
if (krec -> mode && !krec -> offs) {
|
||||
|
||||
for (ii = khcount, kptr = kouhotbl ; ii--; kptr++)
|
||||
if (kptr -> rank == 1) break;
|
||||
|
||||
|
||||
stdy.stdy1.offset = kptr -> offs;
|
||||
stdy.stdy1.seg = kptr -> clrec -> jnode -> jseg;
|
||||
stdy.stdy1.styno = kptr -> styno;
|
||||
stdy.stdy1.dicid = kptr -> clrec -> jnode -> dicid;
|
||||
stdy.stdy1.offset = kptr->offs;
|
||||
stdy.stdy1.seg = kptr->clrec->jnode->jseg;
|
||||
stdy.stdy1.styno = kptr->styno;
|
||||
stdy.stdy1.dicid = kptr->clrec->jnode->dicid;
|
||||
stdy.stdy1.nmflg = 1;
|
||||
}
|
||||
|
||||
else {
|
||||
stdy.stdy1.offset = krec -> offs;
|
||||
stdy.stdy1.seg = jrec -> jseg;
|
||||
stdy.stdy1.styno = krec -> styno;
|
||||
stdy.stdy1.dicid = jrec -> dicid;
|
||||
stdy.stdy1.offset = krec->offs;
|
||||
stdy.stdy1.seg = jrec->jseg;
|
||||
stdy.stdy1.styno = krec->styno;
|
||||
stdy.stdy1.dicid = jrec->dicid;
|
||||
stdy.stdy1.nmflg = 0;
|
||||
}
|
||||
stdy.stdy1.sttkj = krec -> sttkj;
|
||||
stdy.stdy1.ka_kj = krec -> ka_kj;
|
||||
stdy.hinshi = jrec -> hinsi;
|
||||
stdy.len = jrec -> jlen;
|
||||
stdy.sttfg = krec -> sttfg;
|
||||
stdy.ka_fg = krec -> ka_fg;
|
||||
stdy.stdy1.sttkj = krec->sttkj;
|
||||
stdy.stdy1.ka_kj = krec->ka_kj;
|
||||
stdy.hinshi = jrec->hinshi;
|
||||
stdy.len = jrec->jlen;
|
||||
stdy.sttfg = krec->sttfg;
|
||||
stdy.ka_fg = krec->ka_fg;
|
||||
|
||||
if(jrec->stbofs && (fptr = getstb(jrec->hinshi)) != NULL)
|
||||
stdy.len -= StbYomiLen(fptr + jrec->stbofs - 1);
|
||||
|
||||
if (jrec -> stbofs && (fptr = getstb(jrec -> hinsi)) != NULL)
|
||||
stdy.len -= StbYomiLen(fptr + jrec -> stbofs - 1);
|
||||
|
||||
|
||||
if ((fptr = Settou_ptr(jrec -> sttofs)) != NULL)
|
||||
if((fptr = Settou_ptr(jrec->sttofs)) != NULL)
|
||||
stdy.sttlen = SttYomiLen(fptr);
|
||||
else
|
||||
stdy.sttlen = 0;
|
||||
|
||||
|
||||
memcpy((unsigned char *)&stdy, kanjitmp, sizeof(STDYOUT));
|
||||
memcpy((unsigned char*)&stdy, kanjitmp, sizeof(STDYOUT));
|
||||
kanjitmp += sizeof(STDYOUT);
|
||||
}
|
||||
|
||||
|
|
|
|||
190
deldic.c
190
deldic.c
|
|
@ -27,87 +27,71 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: deldic.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:42 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
void mvmemi();
|
||||
void mkidxtbl();
|
||||
|
||||
void mvmemi();
|
||||
void mkidxtbl();
|
||||
|
||||
|
||||
static int del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs);
|
||||
static int del_segment(TypeDicSeg seg);
|
||||
static int del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs);
|
||||
static int del_segment(TypeDicSeg seg);
|
||||
static void del_uidx(TypeDicSeg seg);
|
||||
static void del_stdy(TypeDicSeg seg, TypeDicOfs ofs, int size);
|
||||
|
||||
|
||||
unsigned int
|
||||
deldic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
||||
{
|
||||
unsigned char yptr[MaxWdYomiLen + 1];
|
||||
unsigned char kptr[MaxWdKanjiLen + 1];
|
||||
unsigned int err;
|
||||
int knjlen;
|
||||
TypeDicSeg useg;
|
||||
TypeDicOfs ofs;
|
||||
unsigned char *p1, *p2, *p3;
|
||||
int dblknum;
|
||||
int hblknum;
|
||||
int kblknum;
|
||||
int samlen;
|
||||
unsigned char *stp, *edp;
|
||||
int size, len;
|
||||
deldic(unsigned char* yomi, unsigned char* kanji, TypeGram hinshi) {
|
||||
unsigned char yptr[MaxWdYomiLen + 1];
|
||||
unsigned char kptr[MaxWdKanjiLen + 1];
|
||||
unsigned int err;
|
||||
int knjlen;
|
||||
TypeDicSeg useg;
|
||||
TypeDicOfs ofs;
|
||||
unsigned char *p1, *p2, *p3;
|
||||
int dblknum;
|
||||
int hblknum;
|
||||
int kblknum;
|
||||
int samlen;
|
||||
unsigned char *stp, *edp;
|
||||
int size, len;
|
||||
|
||||
if ((err = addel_arg(yomi, kanji, hinsi, yptr, sizeof(yptr))) != 0)
|
||||
if((err = addel_arg(yomi, kanji, hinshi, yptr, sizeof(yptr))) != 0)
|
||||
return err;
|
||||
|
||||
if ((curdict -> maxunit) == 0) return AD_NotUserDict;
|
||||
if((curdict->maxunit) == 0) return AD_NotUserDict;
|
||||
|
||||
knjlen = cvtknj(yomi, kanji, kptr);
|
||||
|
||||
cnvstart = yptr;
|
||||
cnvlen = strlen(yptr);
|
||||
cnvlen = strlen(yptr);
|
||||
|
||||
useg = srchidx((TypeDicSeg)DicSegBase, cnvlen);
|
||||
(*curdict->getdic)(curdict, useg);
|
||||
|
||||
if ((dblknum = srchkana(&p1, &samlen)) == 0) return AD_NoMidasi;
|
||||
if((dblknum = srchkana(&p1, &samlen)) == 0) return AD_NoMidasi;
|
||||
|
||||
if ((hblknum = srchgram(p1, &p2, hinsi)) == 0) return AD_NoHinsi;
|
||||
if((hblknum = srchgram(p1, &p2, hinshi)) == 0) return AD_NoHinshi;
|
||||
|
||||
p3 = p2;
|
||||
p3 = p2;
|
||||
kblknum = srchkanji(&p3, kptr, knjlen);
|
||||
if (*p3 == HinsiBlkTerm) return AD_NoKanji;
|
||||
if(*p3 == HinshiBlkTerm) return AD_NoKanji;
|
||||
ofs = p3 - dicbuf;
|
||||
|
||||
edp = skipkstr(p3);
|
||||
|
||||
if (kblknum == 1) {
|
||||
if (hblknum == 1) {
|
||||
if (dblknum == 1) {
|
||||
if(kblknum == 1) {
|
||||
if(hblknum == 1) {
|
||||
if(dblknum == 1) {
|
||||
return del_segment(useg);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return del_douon(useg, p1, ofs);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
stp = p2;
|
||||
edp++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
stp = p3;
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +104,7 @@ deldic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
memset(edp, DicSegTerm, dicbuf + curdict->seglen - edp);
|
||||
|
||||
set_size(p1, (int)(getsize(p1) - size),
|
||||
(int)getplen(p1), (int)getnlen(p1));
|
||||
(int)getplen(p1), (int)getnlen(p1));
|
||||
|
||||
(*curdict->putdic)(curdict, useg);
|
||||
|
||||
|
|
@ -129,29 +113,25 @@ deldic(unsigned char* yomi, unsigned char* kanji, TypeGram hinsi)
|
|||
return AD_Done;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs)
|
||||
{
|
||||
unsigned char *nxt, *p1, *p2;
|
||||
int size;
|
||||
int nlen, plen, len;
|
||||
del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs) {
|
||||
unsigned char *nxt, *p1, *p2;
|
||||
int size;
|
||||
int nlen, plen, len;
|
||||
|
||||
nxt = getntag(ptr);
|
||||
|
||||
if (segend(nxt)) {
|
||||
if(segend(nxt)) {
|
||||
size = nxt - ptr;
|
||||
|
||||
memset(ptr, DicSegTerm, dicbuf + curdict->seglen - nxt);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
size = getsize(nxt);
|
||||
nlen = getnlen(nxt);
|
||||
plen = getplen(nxt);
|
||||
|
||||
if (ptr == segtop()) {
|
||||
if (nlen + plen > (unsigned int) count_uidx()
|
||||
+ strlen(get_idxptr(seg)))
|
||||
if(ptr == segtop()) {
|
||||
if(nlen + plen > (unsigned int)count_uidx() + strlen(get_idxptr(seg)))
|
||||
return AD_OvflwIndex;
|
||||
}
|
||||
|
||||
|
|
@ -167,7 +147,7 @@ del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs)
|
|||
size = p1 - p2;
|
||||
memset(dicbuf + curdict->seglen - size, DicSegTerm, size);
|
||||
|
||||
if (ptr == segtop()) {
|
||||
if(ptr == segtop()) {
|
||||
chg_uidx(seg, ptr + DouonBlkSizeNumber, nlen + len);
|
||||
}
|
||||
}
|
||||
|
|
@ -179,24 +159,21 @@ del_douon(TypeDicSeg seg, unsigned char* ptr, TypeDicOfs ofs)
|
|||
return AD_Done;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
del_segment(TypeDicSeg seg)
|
||||
{
|
||||
int i;
|
||||
STDYIN *styp;
|
||||
TypeDicID dicid;
|
||||
TypeStyNum stdynum;
|
||||
TypeDicSeg sg;
|
||||
del_segment(TypeDicSeg seg) {
|
||||
int i;
|
||||
STDYIN* styp;
|
||||
TypeDicID dicid;
|
||||
TypeStyNum stdynum;
|
||||
TypeDicSeg sg;
|
||||
|
||||
if (curdict->segunit > 1) {
|
||||
for (sg = seg + 1 ; sg < curdict->segunit ; sg++) {
|
||||
if(curdict->segunit > 1) {
|
||||
for(sg = seg + 1; sg < curdict->segunit; sg++) {
|
||||
(*curdict->getdic)(curdict, sg);
|
||||
(*curdict->putdic)(curdict, sg - 1);
|
||||
}
|
||||
curdict->segunit--;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
memset(dicbuf, DicSegTerm, (int)curdict->seglen);
|
||||
dicbuf[0] = 0;
|
||||
(*curdict->putdic)(curdict, DicSegBase);
|
||||
|
|
@ -206,29 +183,29 @@ del_segment(TypeDicSeg seg)
|
|||
|
||||
del_uidx(seg);
|
||||
|
||||
if (StudyExist()) {
|
||||
if(StudyExist()) {
|
||||
dicid = curdict->dicid;
|
||||
for (i = 0, styp = StudyDict ; i < StudyCount ; ) {
|
||||
if (styp -> dicid != dicid)
|
||||
for(i = 0, styp = StudyDict; i < StudyCount;) {
|
||||
if(styp->dicid != dicid)
|
||||
;
|
||||
else if (styp -> seg > seg)
|
||||
styp -> seg -= 1;
|
||||
else if (styp -> seg < seg)
|
||||
else if(styp->seg > seg)
|
||||
styp->seg -= 1;
|
||||
else if(styp->seg < seg)
|
||||
;
|
||||
else {
|
||||
stdynum = styp -> styno;
|
||||
stdynum = styp->styno;
|
||||
StudyCount--;
|
||||
mvmemi((unsigned char*)(styp + 1),
|
||||
(unsigned char*)styp,
|
||||
sizeof(*styp) * (StudyCount - i));
|
||||
sizeof(*styp) * (StudyCount - i));
|
||||
continue;
|
||||
}
|
||||
|
||||
i++;
|
||||
styp++;
|
||||
}
|
||||
for (i = 0, styp = StudyDict ; i < StudyCount ; i++, styp++)
|
||||
if (styp -> styno > stdynum) styp -> styno -= 1;
|
||||
for(i = 0, styp = StudyDict; i < StudyCount; i++, styp++)
|
||||
if(styp->styno > stdynum) styp->styno -= 1;
|
||||
|
||||
putstydic();
|
||||
}
|
||||
|
|
@ -236,16 +213,13 @@ del_segment(TypeDicSeg seg)
|
|||
return AD_Done;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
del_uidx(TypeDicSeg seg)
|
||||
{
|
||||
unsigned char *p, *q;
|
||||
int len;
|
||||
del_uidx(TypeDicSeg seg) {
|
||||
unsigned char *p, *q;
|
||||
int len;
|
||||
|
||||
p = get_idxptr(seg);
|
||||
for (q = p ; *q++; )
|
||||
;
|
||||
for(q = p; *q++;);
|
||||
|
||||
mvmemi(q, p, idxbuf + curdict->idxlen - q);
|
||||
|
||||
|
|
@ -257,41 +231,39 @@ del_uidx(TypeDicSeg seg)
|
|||
mkidxtbl(curdict);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
del_stdy(TypeDicSeg seg, TypeDicOfs ofs, int size)
|
||||
{
|
||||
int i;
|
||||
TypeStyNum stdynum;
|
||||
STDYIN *stdy;
|
||||
TypeDicID dicid;
|
||||
del_stdy(TypeDicSeg seg, TypeDicOfs ofs, int size) {
|
||||
int i;
|
||||
TypeStyNum stdynum;
|
||||
STDYIN* stdy;
|
||||
TypeDicID dicid;
|
||||
|
||||
if (StudyExist()) {
|
||||
if(StudyExist()) {
|
||||
|
||||
stdynum = 0;
|
||||
dicid = curdict->dicid;
|
||||
for (i = 0, stdy = StudyDict ; i < StudyCount ; ) {
|
||||
if (stdy -> dicid != dicid)
|
||||
dicid = curdict->dicid;
|
||||
for(i = 0, stdy = StudyDict; i < StudyCount;) {
|
||||
if(stdy->dicid != dicid)
|
||||
;
|
||||
else if (stdy -> seg != seg)
|
||||
else if(stdy->seg != seg)
|
||||
;
|
||||
else if (stdy -> offset > ofs)
|
||||
stdy -> offset -= size;
|
||||
else if(stdy->offset > ofs)
|
||||
stdy->offset -= size;
|
||||
|
||||
else if (stdy -> offset == ofs) {
|
||||
stdynum = stdy -> styno;
|
||||
else if(stdy->offset == ofs) {
|
||||
stdynum = stdy->styno;
|
||||
StudyCount--;
|
||||
mvmemi((unsigned char*)(stdy + 1),
|
||||
(unsigned char*)stdy,
|
||||
sizeof(*stdy) * (StudyCount - i));
|
||||
sizeof(*stdy) * (StudyCount - i));
|
||||
continue;
|
||||
}
|
||||
|
||||
i++;
|
||||
stdy++;
|
||||
}
|
||||
for (i = 0, stdy = StudyDict ; i < StudyCount ; i++, stdy++)
|
||||
if (stdy -> styno > stdynum) (stdy -> styno)--;
|
||||
for(i = 0, stdy = StudyDict; i < StudyCount; i++, stdy++)
|
||||
if(stdy->styno > stdynum) (stdy->styno)--;
|
||||
|
||||
putstydic();
|
||||
}
|
||||
|
|
|
|||
51
dict.c
51
dict.c
|
|
@ -27,60 +27,45 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: dict.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:45 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
void
|
||||
get_askknj(void)
|
||||
{
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
unsigned char *r;
|
||||
int i = 0, csize;
|
||||
int flg;
|
||||
void get_askknj(void) {
|
||||
unsigned char* p;
|
||||
unsigned char* q;
|
||||
unsigned char* r;
|
||||
int i = 0, csize;
|
||||
int flg;
|
||||
|
||||
p = q = dicbuf;
|
||||
q += *p++;
|
||||
|
||||
while (p < q) {
|
||||
while(p < q) {
|
||||
askknj[i] = p;
|
||||
r = NULL;
|
||||
flg = TRUE;
|
||||
r = NULL;
|
||||
flg = TRUE;
|
||||
do {
|
||||
csize = codesize(*p);
|
||||
if (p[csize] == KanjiStrEnd) flg = FALSE;
|
||||
if(p[csize] == KanjiStrEnd) flg = FALSE;
|
||||
|
||||
if (!r && (*p != AiAttribute))
|
||||
if(!r && (*p != AiAttribute))
|
||||
r = p;
|
||||
|
||||
p += csize;
|
||||
} while (flg);
|
||||
} while(flg);
|
||||
|
||||
p++;
|
||||
askknj_k[i++] = r;
|
||||
}
|
||||
}
|
||||
|
||||
int seldict(TypeDicID id) {
|
||||
DICTL* dp;
|
||||
|
||||
int
|
||||
seldict(TypeDicID id)
|
||||
{
|
||||
DICTL *dp;
|
||||
|
||||
for (dp = dictlist ; dp ; dp = dp -> next) {
|
||||
if ((curdict = dp -> dict) -> dicid == id)
|
||||
for(dp = dictlist; dp; dp = dp->next) {
|
||||
if((curdict = dp->dict)->dicid == id)
|
||||
return TRUE;
|
||||
}
|
||||
curdict = NULL;
|
||||
|
|
@ -88,10 +73,8 @@ seldict(TypeDicID id)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
get_idxptr(TypeDicSeg seg)
|
||||
{
|
||||
get_idxptr(TypeDicSeg seg) {
|
||||
(*curdict->getofs)(curdict);
|
||||
(*curdict->getidx)(curdict);
|
||||
|
||||
|
|
|
|||
44
dictdisp.c
44
dictdisp.c
|
|
@ -27,66 +27,56 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: dictdisp.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:34 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
void
|
||||
dictdisp(output)
|
||||
char *output;
|
||||
dictdisp(output) char* output;
|
||||
{
|
||||
unsigned char buf[BUFSIZ];
|
||||
unsigned char *p;
|
||||
FILE *fp;
|
||||
int flg;
|
||||
int i;
|
||||
unsigned char buf[BUFSIZ];
|
||||
unsigned char* p;
|
||||
FILE* fp;
|
||||
int flg;
|
||||
int i;
|
||||
|
||||
if (output && *output) {
|
||||
if(output && *output) {
|
||||
fp = fopen(output, "w");
|
||||
if (!fp) {
|
||||
if(!fp) {
|
||||
error_out("%s \244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", output);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
fp = stdout;
|
||||
|
||||
flg = sj3_getdict_mb(buf);
|
||||
while (flg == 0) {
|
||||
while(flg == 0) {
|
||||
p = buf;
|
||||
printout_mb(fp, p);
|
||||
i = strlen(p);
|
||||
if (i < 24)
|
||||
while (i < 24) {
|
||||
if(i < 24)
|
||||
while(i < 24) {
|
||||
printout_mb(fp, "\t");
|
||||
i += 8;
|
||||
}
|
||||
else
|
||||
printout_mb(fp, " ");
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
printout_mb(fp, p);
|
||||
i = strlen(p);
|
||||
if (i < 24)
|
||||
while (i < 24) {
|
||||
if(i < 24)
|
||||
while(i < 24) {
|
||||
printout_mb(fp, "\t");
|
||||
i += 8;
|
||||
}
|
||||
else
|
||||
printout_mb(fp, " ");
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
printout(fp, hns2str(*p));
|
||||
printout_mb(fp, ":\n");
|
||||
|
||||
flg = sj3_nextdict_mb(buf);
|
||||
}
|
||||
|
||||
if (fp != stdout) fclose(fp);
|
||||
if(fp != stdout) fclose(fp);
|
||||
}
|
||||
|
|
|
|||
124
dictmake.c
124
dictmake.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: dictmake.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:35 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "sj_sysvdef.h"
|
||||
#include <stdio.h>
|
||||
#ifdef SVR4
|
||||
|
|
@ -48,41 +39,40 @@
|
|||
#include "sj3lib.h"
|
||||
#include "sjtool.h"
|
||||
|
||||
#define IsEOL(c) ((c) == '\0')
|
||||
#define IsBlank(c) ((c) == ' ' || (c) == '\t')
|
||||
#define IsEOL(c) ((c) == '\0')
|
||||
#define IsBlank(c) ((c) == ' ' || (c) == '\t')
|
||||
|
||||
extern int force_flag;
|
||||
extern int verbose_flag;
|
||||
extern int _sys_code;
|
||||
extern int force_flag;
|
||||
extern int verbose_flag;
|
||||
extern int _sys_code;
|
||||
|
||||
static void touroku(y, k, h)
|
||||
char *y, *k, *h;
|
||||
static void touroku(y, k, h) char *y, *k, *h;
|
||||
{
|
||||
int err;
|
||||
int grm;
|
||||
int err;
|
||||
int grm;
|
||||
unsigned char buf[BUFSIZ], *hp;
|
||||
|
||||
if (_sys_code == SYS_SJIS) {
|
||||
(void) sjistoeuc(buf, BUFSIZ, h, strlen(h)+1);
|
||||
if(_sys_code == SYS_SJIS) {
|
||||
(void)sjistoeuc(buf, BUFSIZ, h, strlen(h) + 1);
|
||||
hp = buf;
|
||||
} else {
|
||||
hp = (unsigned char *) h;
|
||||
hp = (unsigned char*)h;
|
||||
}
|
||||
if (!(grm = str2hns(hp))) {
|
||||
if(!(grm = str2hns(hp))) {
|
||||
error_out("\311\312\273\354\312\270\273\372\316\363\244\362\262\341\244\303\244\306\244\244\244\336\244\271 %s:%s:%s", y, k, h);
|
||||
if (force_flag) return;
|
||||
if(force_flag) return;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
err = sj3_touroku_mb(y, k, grm);
|
||||
|
||||
switch (err) {
|
||||
switch(err) {
|
||||
case -1:
|
||||
error_out("\245\265\241\274\245\320\244\254\315\356\244\301\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
|
||||
case 0:
|
||||
if (verbose_flag)
|
||||
if(verbose_flag)
|
||||
normal_out("%s:%s:%s \244\362\305\320\317\277\244\267\244\336\244\267\244\277\n", y, k, h);
|
||||
break;
|
||||
|
||||
|
|
@ -95,7 +85,7 @@ char *y, *k, *h;
|
|||
exit(1);
|
||||
|
||||
case SJ3_WORD_EXIST:
|
||||
if (verbose_flag)
|
||||
if(verbose_flag)
|
||||
normal_out("%s:%s:%s \244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\271\n", y, k, h);
|
||||
break;
|
||||
|
||||
|
|
@ -105,22 +95,22 @@ char *y, *k, *h;
|
|||
|
||||
case SJ3_DICT_FULL:
|
||||
error_out("\244\263\244\354\260\312\276\345\274\255\275\361\244\362\302\347\244\255\244\257\244\307\244\255\244\336\244\273\244\363 %s:%s:%s", y, k, h);
|
||||
if (force_flag) break;
|
||||
if(force_flag) break;
|
||||
exit(1);
|
||||
|
||||
case SJ3_BAD_YOMI_STR:
|
||||
error_out("\305\320\317\277\244\307\244\255\244\312\244\244\306\311\244\337\244\307\244\271 %s", y);
|
||||
if (force_flag) break;
|
||||
if(force_flag) break;
|
||||
exit(1);
|
||||
|
||||
case SJ3_BAD_KANJI_STR:
|
||||
error_out("\305\320\317\277\244\307\244\255\244\312\244\244\264\301\273\372\244\307\244\271 %s:%s", y, k);
|
||||
if (force_flag) break;
|
||||
if(force_flag) break;
|
||||
exit(1);
|
||||
|
||||
case SJ3_BAD_HINSI_CODE:
|
||||
case SJ3_BAD_HINSHI_CODE:
|
||||
error_out("\305\320\317\277\244\307\244\255\244\312\244\244\311\312\273\354\244\307\244\271 %s:%s:%s", y, k, h);
|
||||
if (force_flag) break;
|
||||
if(force_flag) break;
|
||||
exit(1);
|
||||
|
||||
case SJ3_INDEX_FULL:
|
||||
|
|
@ -129,94 +119,92 @@ char *y, *k, *h;
|
|||
case SJ3_TOUROKU_FAILED:
|
||||
default:
|
||||
error_out("\305\320\317\277\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277 %s:%s:%s(%d)",
|
||||
y, k, hns2str(h), h);
|
||||
y, k, hns2str(h), h);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dictmake(input)
|
||||
char *input;
|
||||
dictmake(input) char* input;
|
||||
{
|
||||
unsigned char buf[BUFSIZ];
|
||||
FILE *fp;
|
||||
unsigned char *p;
|
||||
unsigned char *yom, *knj, *grm;
|
||||
int c;
|
||||
int flg;
|
||||
static char *FormatErrorString = "\245\325\245\251\241\274\245\336\245\303\245\310\245\250\245\351\241\274:%s";
|
||||
unsigned char buf[BUFSIZ];
|
||||
FILE* fp;
|
||||
unsigned char* p;
|
||||
unsigned char *yom, *knj, *grm;
|
||||
int c;
|
||||
int flg;
|
||||
static char* FormatErrorString = "\245\325\245\251\241\274\245\336\245\303\245\310\245\250\245\351\241\274:%s";
|
||||
|
||||
if (input && *input) {
|
||||
if(input && *input) {
|
||||
fp = fopen(input, "r");
|
||||
if (!fp) {
|
||||
if(!fp) {
|
||||
error_out("%s \244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", input);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
fp = stdin;
|
||||
|
||||
while (fgets((char *)buf, sizeof(buf), fp)) {
|
||||
if ((p = (unsigned char *)strchr((char *)buf, '\n')))
|
||||
while(fgets((char*)buf, sizeof(buf), fp)) {
|
||||
if((p = (unsigned char*)strchr((char*)buf, '\n')))
|
||||
*p = '\0';
|
||||
else {
|
||||
do {
|
||||
c = fgetc(fp);
|
||||
} while (c != '\n' && c != EOF);
|
||||
} while(c != '\n' && c != EOF);
|
||||
}
|
||||
|
||||
yom = buf;
|
||||
while (IsBlank(*yom)) yom++;
|
||||
if (IsEOL(*yom)) {
|
||||
while(IsBlank(*yom)) yom++;
|
||||
if(IsEOL(*yom)) {
|
||||
error_out(FormatErrorString, buf);
|
||||
if (force_flag) continue;
|
||||
if(force_flag) continue;
|
||||
break;
|
||||
}
|
||||
|
||||
knj = yom;
|
||||
while (!IsEOL(*knj) && !IsBlank(*knj)) knj++;
|
||||
if (IsEOL(*knj)) {
|
||||
while(!IsEOL(*knj) && !IsBlank(*knj)) knj++;
|
||||
if(IsEOL(*knj)) {
|
||||
error_out(FormatErrorString, buf);
|
||||
if (force_flag) continue;
|
||||
if(force_flag) continue;
|
||||
break;
|
||||
}
|
||||
*knj++ = '\0';
|
||||
while (IsBlank(*knj)) knj++;
|
||||
if (IsEOL(*knj)) {
|
||||
while(IsBlank(*knj)) knj++;
|
||||
if(IsEOL(*knj)) {
|
||||
error_out(FormatErrorString, buf);
|
||||
if (force_flag) continue;
|
||||
if(force_flag) continue;
|
||||
break;
|
||||
}
|
||||
|
||||
grm = knj;
|
||||
while (!IsEOL(*grm) && !IsBlank(*grm)) grm++;
|
||||
if (IsEOL(*grm)) {
|
||||
while(!IsEOL(*grm) && !IsBlank(*grm)) grm++;
|
||||
if(IsEOL(*grm)) {
|
||||
error_out(FormatErrorString, buf);
|
||||
if (force_flag) continue;
|
||||
if(force_flag) continue;
|
||||
break;
|
||||
}
|
||||
*grm++ = '\0';
|
||||
while (IsBlank(*grm)) grm++;
|
||||
if (IsEOL(*grm)) {
|
||||
while(IsBlank(*grm)) grm++;
|
||||
if(IsEOL(*grm)) {
|
||||
error_out(FormatErrorString, buf);
|
||||
if (force_flag) continue;
|
||||
if(force_flag) continue;
|
||||
break;
|
||||
}
|
||||
|
||||
flg = -1;
|
||||
while (*grm && flg) {
|
||||
while(*grm && flg) {
|
||||
p = grm;
|
||||
while (!IsEOL(*p) && !IsBlank(*p) && (*p != ':')) p++;
|
||||
if (IsEOL(*p))
|
||||
while(!IsEOL(*p) && !IsBlank(*p) && (*p != ':')) p++;
|
||||
if(IsEOL(*p))
|
||||
flg = 0;
|
||||
else
|
||||
*p++ = '\0';
|
||||
|
||||
touroku(yom, knj, grm);
|
||||
|
||||
if (flg) {
|
||||
if(flg) {
|
||||
grm = p;
|
||||
while (IsBlank(*grm)) grm++;
|
||||
while(IsBlank(*grm)) grm++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
103
dicttool.h
103
dicttool.h
|
|
@ -32,84 +32,83 @@
|
|||
*/
|
||||
|
||||
#ifndef _DICTTOOL_H_
|
||||
#define _DICTTOOL_H_ 1
|
||||
#define _DICTTOOL_H_ 1
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "sj_struct2.h"
|
||||
|
||||
/* char.c */
|
||||
int cnvyomi (int code);
|
||||
int h2kcode (int code);
|
||||
int codesize (unsigned char code);
|
||||
void output_knj (FILE* fp, unsigned char* p, int l);
|
||||
void output_str (FILE* fp, char* p);
|
||||
void output_int (FILE* fp, int* p);
|
||||
void output_yomi (FILE* fp, unsigned char* p);
|
||||
int cnvyomi(int code);
|
||||
int h2kcode(int code);
|
||||
int codesize(unsigned char code);
|
||||
void output_knj(FILE* fp, unsigned char* p, int l);
|
||||
void output_str(FILE* fp, char* p);
|
||||
void output_int(FILE* fp, int* p);
|
||||
void output_yomi(FILE* fp, unsigned char* p);
|
||||
|
||||
/* cnvhinsi.c */
|
||||
int cnvhinsi (unsigned char *buf);
|
||||
/* cnvhinshi.c */
|
||||
int cnvhinshi(unsigned char* buf);
|
||||
|
||||
/* file.c */
|
||||
FILE* Fopen (char* filename, char* type);
|
||||
void Fclose (FILE* fp);
|
||||
int Fseek (FILE* fp, long ofs, int ptr);
|
||||
long Ftell (FILE* fp);
|
||||
off_t Fsize (char* filename);
|
||||
int Fread (char* p, int s, int n, FILE* fp);
|
||||
int Fwrite (char* p, int s, int n, FILE* fp);
|
||||
int Fgetc (FILE* fp);
|
||||
void Fflush (FILE* fp);
|
||||
FILE* Fopen(char* filename, char* type);
|
||||
void Fclose(FILE* fp);
|
||||
int Fseek(FILE* fp, long ofs, int ptr);
|
||||
long Ftell(FILE* fp);
|
||||
off_t Fsize(char* filename);
|
||||
int Fread(char* p, int s, int n, FILE* fp);
|
||||
int Fwrite(char* p, int s, int n, FILE* fp);
|
||||
int Fgetc(FILE* fp);
|
||||
void Fflush(FILE* fp);
|
||||
|
||||
/* hindo.c */
|
||||
int check_hindo (unsigned char* ptr, int len);
|
||||
void knjhnd_set (unsigned char* p, int l);
|
||||
void knjhnd_reset (unsigned char* p, int l);
|
||||
int decide_knjask (void);
|
||||
void clear_hindo (void);
|
||||
void clear_assyuku (void);
|
||||
int check_hindo(unsigned char* ptr, int len);
|
||||
void knjhnd_set(unsigned char* p, int l);
|
||||
void knjhnd_reset(unsigned char* p, int l);
|
||||
int decide_knjask(void);
|
||||
void clear_hindo(void);
|
||||
void clear_asshuku(void);
|
||||
|
||||
/* knjcvt.c */
|
||||
unsigned char* knjofscvt (unsigned char* ptr, int len, int* ret);
|
||||
unsigned char* knjcvt (unsigned char* ptr, int len, int* ret);
|
||||
unsigned char* knjofscvt(unsigned char* ptr, int len, int* ret);
|
||||
unsigned char* knjcvt(unsigned char* ptr, int len, int* ret);
|
||||
|
||||
/* makedict.c */
|
||||
void parse (int argc, char** argv);
|
||||
void usage (char* name);
|
||||
int getch (void);
|
||||
void mark_file (FILE* out);
|
||||
void parse(int argc, char** argv);
|
||||
void usage(char* name);
|
||||
int getch(void);
|
||||
void mark_file(FILE* out);
|
||||
|
||||
/* makelist.c */
|
||||
void clear_list (void);
|
||||
void flush_douon (void);
|
||||
void makelist (int* yomi, int* kanji, int hinsi, int* atr);
|
||||
void clear_list(void);
|
||||
void flush_douon(void);
|
||||
void makelist(int* yomi, int* kanji, int hinshi, int* atr);
|
||||
|
||||
/* makeseg.c */
|
||||
size_t make_knjstr (unsigned char* src, int len, unsigned char* dst);
|
||||
void makeseg (void);
|
||||
void makehead (unsigned char* dict_name);
|
||||
size_t make_knjstr(unsigned char* src, int len, unsigned char* dst);
|
||||
void makeseg(void);
|
||||
void makehead(unsigned char* dict_name);
|
||||
|
||||
/* memory.c */
|
||||
void* Malloc (size_t size);
|
||||
void* Zalloc (size_t size);
|
||||
void Free (void *p);
|
||||
void* Malloc(size_t size);
|
||||
void* Zalloc(size_t size);
|
||||
void Free(void* p);
|
||||
|
||||
/* offset.c */
|
||||
void set_ofsrec (unsigned char* ptr, int len, int ofs);
|
||||
int isknjexist (unsigned char* knj, int len);
|
||||
void clear_ofsrec (void);
|
||||
OffsetRec* real_ofsrec (unsigned char* ptr);
|
||||
void set_ofsrec(unsigned char* ptr, int len, int ofs);
|
||||
int isknjexist(unsigned char* knj, int len);
|
||||
void clear_ofsrec(void);
|
||||
OffsetRec* real_ofsrec(unsigned char* ptr);
|
||||
|
||||
/* readline.c */
|
||||
int* readline (void);
|
||||
void setline (void (*func)(int*, int*, int, int*));
|
||||
int* readline(void);
|
||||
void setline(void (*func)(int*, int*, int, int*));
|
||||
|
||||
/* string.c */
|
||||
int bubun_str (unsigned char* p1, int l1, unsigned char* p2, int l2);
|
||||
int overlap_str (unsigned char *p1, int l1, unsigned char* p2, int l2);
|
||||
int top_strcmp (int* src, int* dst);
|
||||
int last_strcmp (int* src, int* dst);
|
||||
int string_cmp (unsigned char* p1, int l1, unsigned char* p2, int l2);
|
||||
int bubun_str(unsigned char* p1, int l1, unsigned char* p2, int l2);
|
||||
int overlap_str(unsigned char* p1, int l1, unsigned char* p2, int l2);
|
||||
int top_strcmp(int* src, int* dst);
|
||||
int last_strcmp(int* src, int* dst);
|
||||
int string_cmp(unsigned char* p1, int l1, unsigned char* p2, int l2);
|
||||
|
||||
#endif /* _DICTTOOL_H_ */
|
||||
|
||||
|
|
|
|||
452
display.c
452
display.c
|
|
@ -27,14 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: display.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:12 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_sysvdef.h"
|
||||
#include <errno.h>
|
||||
#include "common.h"
|
||||
|
|
@ -45,451 +37,399 @@ char bp[TCBUFSIZE];
|
|||
char bpwork[AREASIZE];
|
||||
char cmove[SHORTLENGTH];
|
||||
|
||||
|
||||
|
||||
extern int master;
|
||||
extern int vflag;
|
||||
extern int master;
|
||||
extern int vflag;
|
||||
extern char term_name[];
|
||||
|
||||
int status_line;
|
||||
char *CM,*US,*UE,*SO,*SE,*CE,*CS,*BEL,*RP,*AP,*TS,*FS,*DS,*I2;
|
||||
char *SC,*RC,*SR,*DO;
|
||||
int status_line;
|
||||
char * CM, *US, *UE, *SO, *SE, *CE, *CS, *BEL, *RP, *AP, *TS, *FS, *DS, *I2;
|
||||
char * SC, *RC, *SR, *DO;
|
||||
static int keyboard = OTHER_KB;
|
||||
|
||||
|
||||
|
||||
checkterm ()
|
||||
{
|
||||
char *kb, *area, *tgetstr (), *tmp;
|
||||
int val;
|
||||
Conversion *cv;
|
||||
checkterm() {
|
||||
char * kb, *area, *tgetstr(), *tmp;
|
||||
int val;
|
||||
Conversion* cv;
|
||||
|
||||
cv = current_conversion;
|
||||
|
||||
val = tgetent (bp, term_name);
|
||||
if (val == -1) {
|
||||
aprintf ("Can't open termcap file\n\r");
|
||||
done3 ();
|
||||
} else if (val == 0) {
|
||||
aprintf ("No termcap entry for %s\n\r",term_name);
|
||||
done3 ();
|
||||
val = tgetent(bp, term_name);
|
||||
if(val == -1) {
|
||||
aprintf("Can't open termcap file\n\r");
|
||||
done3();
|
||||
} else if(val == 0) {
|
||||
aprintf("No termcap entry for %s\n\r", term_name);
|
||||
done3();
|
||||
}
|
||||
if ((val = tgetnum("co")) < 0) {
|
||||
cv-> column = 0;
|
||||
if((val = tgetnum("co")) < 0) {
|
||||
cv->column = 0;
|
||||
} else {
|
||||
cv-> column = val;
|
||||
cv->column = val;
|
||||
}
|
||||
if ((val = tgetnum("li")) < 0) {
|
||||
if((val = tgetnum("li")) < 0) {
|
||||
cv->line = 0;
|
||||
} else {
|
||||
cv->line = val;
|
||||
}
|
||||
if (tmp = getenv("ROWS")) {
|
||||
(void) sscanf(tmp, "%d", &val);
|
||||
cv->line = val;
|
||||
if(tmp = getenv("ROWS")) {
|
||||
(void)sscanf(tmp, "%d", &val);
|
||||
cv->line = val;
|
||||
}
|
||||
if (tmp = getenv("COLUMNS")) {
|
||||
(void) sscanf(tmp, "%d", &val);
|
||||
cv->column = val;
|
||||
if(tmp = getenv("COLUMNS")) {
|
||||
(void)sscanf(tmp, "%d", &val);
|
||||
cv->column = val;
|
||||
}
|
||||
area = bpwork;
|
||||
|
||||
if ((CM = tgetstr ("cm", &area)) == (char *)NULL) {
|
||||
aprintf ("No termcap 'cm'\n\r");
|
||||
done3 ();
|
||||
if((CM = tgetstr("cm", &area)) == (char*)NULL) {
|
||||
aprintf("No termcap 'cm'\n\r");
|
||||
done3();
|
||||
}
|
||||
US = tgetstr ("us", &area);
|
||||
UE = tgetstr ("ue", &area);
|
||||
SO = tgetstr ("so", &area);
|
||||
SE = tgetstr ("se", &area);
|
||||
CE = tgetstr ("ce", &area);
|
||||
if ((SC = tgetstr ("sc", &area)) == NULL)
|
||||
US = tgetstr("us", &area);
|
||||
UE = tgetstr("ue", &area);
|
||||
SO = tgetstr("so", &area);
|
||||
SE = tgetstr("se", &area);
|
||||
CE = tgetstr("ce", &area);
|
||||
if((SC = tgetstr("sc", &area)) == NULL)
|
||||
SC = "\0337";
|
||||
if ((RC = tgetstr ("rc", &area)) == NULL)
|
||||
if((RC = tgetstr("rc", &area)) == NULL)
|
||||
RC = "\0338";
|
||||
if ((SR = tgetstr ("sr", &area)) == NULL)
|
||||
if((SR = tgetstr("sr", &area)) == NULL)
|
||||
SR = "\033M";
|
||||
if ((DO = tgetstr ("do", &area)) == NULL)
|
||||
if((DO = tgetstr("do", &area)) == NULL)
|
||||
DO = "\033E";
|
||||
if ((CS = tgetstr ("cs", &area)) == NULL)
|
||||
if((CS = tgetstr("cs", &area)) == NULL)
|
||||
CS = "\033[%i%d;%dr";
|
||||
if ((BEL = tgetstr ("bl", &area)) == NULL) {
|
||||
if((BEL = tgetstr("bl", &area)) == NULL) {
|
||||
BEL = "\007";
|
||||
}
|
||||
if ((RP = tgetstr ("RP", &area)) == NULL) {
|
||||
if((RP = tgetstr("RP", &area)) == NULL) {
|
||||
RP = "\033[6n";
|
||||
}
|
||||
if ((AP = tgetstr ("AP", &area)) == NULL) {
|
||||
if((AP = tgetstr("AP", &area)) == NULL) {
|
||||
AP = "\033[%d;%dR";
|
||||
}
|
||||
if ((status_line = tgetflag("hs")) && tgetflag("es")) {
|
||||
TS = tgetstr ("ts", &area);
|
||||
FS = tgetstr ("fs", &area);
|
||||
DS = tgetstr ("ds", &area);
|
||||
if((status_line = tgetflag("hs")) && tgetflag("es")) {
|
||||
TS = tgetstr("ts", &area);
|
||||
FS = tgetstr("fs", &area);
|
||||
DS = tgetstr("ds", &area);
|
||||
#ifdef SVR4
|
||||
I2 = tgetstr ("i1", &area);
|
||||
I2 = tgetstr("i1", &area);
|
||||
#else
|
||||
I2 = tgetstr ("i2", &area);
|
||||
I2 = tgetstr("i2", &area);
|
||||
#endif
|
||||
} else {
|
||||
status_line = 0;
|
||||
}
|
||||
#ifdef SVR4
|
||||
|
||||
|
||||
if (strstr(term_name, "news") != NULL) {
|
||||
if(strstr(term_name, "news") != NULL) {
|
||||
keyboard = NEWS_KB;
|
||||
set_news();
|
||||
} else
|
||||
keyboard = OTHER_KB;
|
||||
#else
|
||||
|
||||
kb = tgetstr ("KB", &area);
|
||||
if (kb == (char *)NULL || *kb == '\0')
|
||||
kb = tgetstr("KB", &area);
|
||||
if(kb == (char*)NULL || *kb == '\0')
|
||||
keyboard = OTHER_KB;
|
||||
else if (strcmp (kb, "news") == 0) {
|
||||
else if(strcmp(kb, "news") == 0) {
|
||||
keyboard = NEWS_KB;
|
||||
set_news();
|
||||
} else
|
||||
keyboard = OTHER_KB;
|
||||
#endif
|
||||
|
||||
strcpy (cmove, CM);
|
||||
strcpy(cmove, CM);
|
||||
}
|
||||
|
||||
void outc(c)
|
||||
char c;
|
||||
void outc(c) char c;
|
||||
{
|
||||
putchar (c);
|
||||
putchar(c);
|
||||
}
|
||||
|
||||
void erroutc(c)
|
||||
{
|
||||
fputc (c, stderr);
|
||||
void erroutc(c) {
|
||||
fputc(c, stderr);
|
||||
}
|
||||
|
||||
start_guideline ()
|
||||
{
|
||||
if (status_line && I2)
|
||||
start_guideline() {
|
||||
if(status_line && I2)
|
||||
tputs(I2, 1, erroutc);
|
||||
}
|
||||
|
||||
end_guideline ()
|
||||
{
|
||||
if (status_line) {
|
||||
end_guideline() {
|
||||
if(status_line) {
|
||||
tputs(DS, 1, outc);
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
|
||||
put_space (n)
|
||||
int n;
|
||||
put_space(n) int n;
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0 ; i < n ; i ++)
|
||||
putchar (' ');
|
||||
for(i = 0; i < n; i++)
|
||||
putchar(' ');
|
||||
}
|
||||
|
||||
Backspace ()
|
||||
{
|
||||
putchar (BS);
|
||||
Backspace() {
|
||||
putchar(BS);
|
||||
}
|
||||
|
||||
master_flush ()
|
||||
{
|
||||
SELECT_FD ifds;
|
||||
int nc;
|
||||
struct timeval t;
|
||||
master_flush() {
|
||||
SELECT_FD ifds;
|
||||
int nc;
|
||||
struct timeval t;
|
||||
|
||||
do {
|
||||
cont:
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = UsecWeight (1);
|
||||
FD_ZERO (&ifds);
|
||||
FD_SET (STDIN, &ifds);
|
||||
FD_SET (master, &ifds);
|
||||
if (select (master + 1, &ifds, 0, 0, &t) > 0) {
|
||||
if (FD_ISSET (STDIN, &ifds))
|
||||
if (ThroughIntr ())
|
||||
cont:
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = UsecWeight(1);
|
||||
FD_ZERO(&ifds);
|
||||
FD_SET(STDIN, &ifds);
|
||||
FD_SET(master, &ifds);
|
||||
if(select(master + 1, &ifds, 0, 0, &t) > 0) {
|
||||
if(FD_ISSET(STDIN, &ifds))
|
||||
if(ThroughIntr())
|
||||
return 1;
|
||||
if (FD_ISSET (master, &ifds))
|
||||
output_master ();
|
||||
} else if (errno == EINTR) {
|
||||
if(FD_ISSET(master, &ifds))
|
||||
output_master();
|
||||
} else if(errno == EINTR) {
|
||||
errno = 0;
|
||||
goto cont;
|
||||
}
|
||||
if (ioctl (master, TIOCOUTQ, &nc) < 0)
|
||||
if(ioctl(master, TIOCOUTQ, &nc) < 0)
|
||||
return (1);
|
||||
} while (nc > 0);
|
||||
} while(nc > 0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
ThroughIntr ()
|
||||
{
|
||||
wchar16_t s[2];
|
||||
ThroughIntr() {
|
||||
wchar16_t s[2];
|
||||
|
||||
SJ_read (s, 1);
|
||||
SJ_read(s, 1);
|
||||
s[1] = '\0';
|
||||
if (isintr (*s)) {
|
||||
master_out (s, 1);
|
||||
if(isintr(*s)) {
|
||||
master_out(s, 1);
|
||||
return (1);
|
||||
}
|
||||
else {
|
||||
unget_inkey2 (s, 1);
|
||||
} else {
|
||||
unget_inkey2(s, 1);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
under_in ()
|
||||
{
|
||||
under_in() {
|
||||
tputs(US, 1, outc);
|
||||
}
|
||||
|
||||
under_out ()
|
||||
{
|
||||
under_out() {
|
||||
tputs(UE, 1, outc);
|
||||
}
|
||||
|
||||
reverse_in ()
|
||||
{
|
||||
reverse_in() {
|
||||
tputs(SO, 1, outc);
|
||||
}
|
||||
|
||||
reverse_out ()
|
||||
{
|
||||
reverse_out() {
|
||||
tputs(SE, 1, outc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
beep ()
|
||||
{
|
||||
beep() {
|
||||
tputs(BEL, 1, outc);
|
||||
Flush ();
|
||||
Flush();
|
||||
}
|
||||
|
||||
|
||||
|
||||
CursorSet (row, col)
|
||||
unsigned short row, col;
|
||||
CursorSet(row, col) unsigned short row, col;
|
||||
{
|
||||
tputs(tgoto(CM, col - 1, row - 1), 1, outc);
|
||||
Flush ();
|
||||
Flush();
|
||||
}
|
||||
|
||||
|
||||
|
||||
RegionSet (row1, row2)
|
||||
int row1, row2;
|
||||
RegionSet(row1, row2) int row1, row2;
|
||||
{
|
||||
|
||||
|
||||
|
||||
tputs (SC, 1, outc);
|
||||
tputs (tgoto (CS, row2, row1 - 1), 1, outc);
|
||||
tputs (RC, 1, outc);
|
||||
tputs (DO, 1, outc);
|
||||
tputs (SR, 1, outc);
|
||||
tputs (SC, 1, outc);
|
||||
tputs (tgoto (CS, row2 - 1, row1 - 1), 1, outc);
|
||||
tputs (RC, 1, outc);
|
||||
Flush ();
|
||||
tputs(SC, 1, outc);
|
||||
tputs(tgoto(CS, row2, row1 - 1), 1, outc);
|
||||
tputs(RC, 1, outc);
|
||||
tputs(DO, 1, outc);
|
||||
tputs(SR, 1, outc);
|
||||
tputs(SC, 1, outc);
|
||||
tputs(tgoto(CS, row2 - 1, row1 - 1), 1, outc);
|
||||
tputs(RC, 1, outc);
|
||||
Flush();
|
||||
}
|
||||
|
||||
#define SUCC 0
|
||||
#define FAIL 1
|
||||
#define CRLIMIT 4
|
||||
#define SUCC 0
|
||||
#define FAIL 1
|
||||
#define CRLIMIT 4
|
||||
|
||||
int master_flush_flag = 1;
|
||||
int master_flush_flag = 1;
|
||||
|
||||
CursorRead (row, col)
|
||||
unsigned short *row, *col;
|
||||
CursorRead(row, col) unsigned short* row, *col;
|
||||
{
|
||||
|
||||
int count;
|
||||
int row1, col1, row2, col2;
|
||||
int count;
|
||||
int row1, col1, row2, col2;
|
||||
|
||||
row2 = col2 = 0;
|
||||
count = 0;
|
||||
for (;;) {
|
||||
if (++count > CRLIMIT) {
|
||||
count = 0;
|
||||
for(;;) {
|
||||
if(++count > CRLIMIT) {
|
||||
break;
|
||||
}
|
||||
tputs(RP, 1, outc);
|
||||
fflush (stdout);
|
||||
if (CRP (&row1, &col1) == FAIL)
|
||||
fflush(stdout);
|
||||
if(CRP(&row1, &col1) == FAIL)
|
||||
continue;
|
||||
if (master_flush_flag)
|
||||
master_flush ();
|
||||
if(master_flush_flag)
|
||||
master_flush();
|
||||
tputs(RP, 1, outc);
|
||||
fflush (stdout);
|
||||
if (CRP (&row2, &col2) == FAIL)
|
||||
fflush(stdout);
|
||||
if(CRP(&row2, &col2) == FAIL)
|
||||
continue;
|
||||
if (row1 == row2 && col1 == col2)
|
||||
if(row1 == row2 && col1 == col2)
|
||||
break;
|
||||
}
|
||||
*row = row2;
|
||||
*col = col2;
|
||||
}
|
||||
|
||||
#define CRPLIM 4
|
||||
#define BACKLIM 16
|
||||
#define MARKER '%'
|
||||
#define SEPARA ';'
|
||||
|
||||
|
||||
#define CRPLIM 4
|
||||
#define BACKLIM 16
|
||||
#define MARKER '%'
|
||||
#define SEPARA ';'
|
||||
|
||||
CRP (row, col)
|
||||
int *row, *col;
|
||||
CRP(row, col)
|
||||
int *row, *col;
|
||||
{
|
||||
char *sa, *sd;
|
||||
int c;
|
||||
char Rchar[4], Cchar[4];
|
||||
wchar16_t Back[BACKLIM];
|
||||
int Back_count, count;
|
||||
char * sa, *sd;
|
||||
int c;
|
||||
char Rchar[4], Cchar[4];
|
||||
wchar16_t Back[BACKLIM];
|
||||
int Back_count, count;
|
||||
|
||||
|
||||
|
||||
count = 0;
|
||||
count = 0;
|
||||
Back_count = 0;
|
||||
c = '\0';
|
||||
c = '\0';
|
||||
top:
|
||||
sa = AP;
|
||||
sd = Rchar;
|
||||
|
||||
if (++count > CRPLIM)
|
||||
if(++count > CRPLIM)
|
||||
return (FAIL);
|
||||
|
||||
if (Back_count) {
|
||||
unget_inkey2 (Back, Back_count);
|
||||
if(Back_count) {
|
||||
unget_inkey2(Back, Back_count);
|
||||
Back_count = 0;
|
||||
}
|
||||
while ((c != ESC) && ((c = CRI ()) != ESC) && Back_count < BACKLIM)
|
||||
while((c != ESC) && ((c = CRI()) != ESC) && Back_count < BACKLIM)
|
||||
Back[Back_count++] = c;
|
||||
if (Back_count) {
|
||||
unget_inkey2 (Back, Back_count);
|
||||
if(Back_count) {
|
||||
unget_inkey2(Back, Back_count);
|
||||
Back_count = 0;
|
||||
}
|
||||
Back[Back_count++] = c;
|
||||
|
||||
sa ++;
|
||||
while (*sa != '\0') {
|
||||
if (*sa == MARKER) {
|
||||
sa++;
|
||||
while(*sa != '\0') {
|
||||
if(*sa == MARKER) {
|
||||
sa += 2;
|
||||
|
||||
while (c = CRI ()) {
|
||||
if (c == ESC)
|
||||
while(c = CRI()) {
|
||||
if(c == ESC)
|
||||
goto top;
|
||||
Back[Back_count++] = c;
|
||||
if (isdigit (c)) {
|
||||
*(sd ++) = c;
|
||||
*sd = '\0';
|
||||
}
|
||||
else if (c == *sa)
|
||||
if(isdigit(c)) {
|
||||
*(sd++) = c;
|
||||
*sd = '\0';
|
||||
} else if(c == *sa)
|
||||
break;
|
||||
else
|
||||
goto top;
|
||||
}
|
||||
if (c == SEPARA)
|
||||
if(c == SEPARA)
|
||||
sd = Cchar;
|
||||
}
|
||||
else {
|
||||
c = CRI ();
|
||||
if (c == ESC)
|
||||
} else {
|
||||
c = CRI();
|
||||
if(c == ESC)
|
||||
goto top;
|
||||
Back[Back_count++] = c;
|
||||
if (c != *sa)
|
||||
if(c != *sa)
|
||||
goto top;
|
||||
}
|
||||
sa ++;
|
||||
sa++;
|
||||
}
|
||||
*row = atoi (Rchar);
|
||||
*col = atoi (Cchar);
|
||||
*row = atoi(Rchar);
|
||||
*col = atoi(Cchar);
|
||||
|
||||
return (SUCC);
|
||||
}
|
||||
|
||||
|
||||
|
||||
unget_inkey2 (s, n)
|
||||
wchar16_t *s;
|
||||
int n;
|
||||
unget_inkey2(s, n)
|
||||
wchar16_t* s;
|
||||
int n;
|
||||
{
|
||||
extern wchar16_t ibuf[];
|
||||
extern int buf_count;
|
||||
int i;
|
||||
extern wchar16_t ibuf[];
|
||||
extern int buf_count;
|
||||
int i;
|
||||
|
||||
if (buf_count < KEYBUFSIZ - n) {
|
||||
for (i = 0 ; i < n ; i ++)
|
||||
ibuf[buf_count ++] = *(s ++);
|
||||
if(buf_count < KEYBUFSIZ - n) {
|
||||
for(i = 0; i < n; i++)
|
||||
ibuf[buf_count++] = *(s++);
|
||||
}
|
||||
}
|
||||
|
||||
unget_key (c)
|
||||
int c;
|
||||
unget_key(c) int c;
|
||||
{
|
||||
wchar16_t tmp[2];
|
||||
|
||||
tmp[0] = c;
|
||||
unget_inkey2 (tmp, 1);
|
||||
unget_inkey2(tmp, 1);
|
||||
}
|
||||
|
||||
CRI() {
|
||||
wchar16_t c;
|
||||
|
||||
|
||||
CRI ()
|
||||
{
|
||||
wchar16_t c;
|
||||
|
||||
SJ_read (&c, 1);
|
||||
SJ_read(&c, 1);
|
||||
return (c);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Clear_EOL ()
|
||||
{
|
||||
Clear_EOL() {
|
||||
reverse_out();
|
||||
tputs(CE, 1, outc);
|
||||
}
|
||||
|
||||
StartGuide (row, col)
|
||||
unsigned short *row, *col;
|
||||
StartGuide(row, col) unsigned short* row, *col;
|
||||
{
|
||||
Conversion *cv;
|
||||
Conversion* cv;
|
||||
|
||||
cv = current_conversion;
|
||||
cv = current_conversion;
|
||||
master_flush_flag = 0;
|
||||
if (status_line) {
|
||||
tputs (tgoto (TS, 0, 0), 1, outc);
|
||||
if(status_line) {
|
||||
tputs(tgoto(TS, 0, 0), 1, outc);
|
||||
} else {
|
||||
CursorRead(row, col);
|
||||
CursorSet(cv->line + 1, 0);
|
||||
}
|
||||
else {
|
||||
CursorRead (row, col);
|
||||
CursorSet (cv->line + 1, 0);
|
||||
}
|
||||
Flush ();
|
||||
Flush();
|
||||
}
|
||||
|
||||
EndGuide (row, col)
|
||||
unsigned short row, col;
|
||||
EndGuide(row, col) unsigned short row, col;
|
||||
{
|
||||
if (status_line) {
|
||||
tputs (FS, 1, outc);
|
||||
if(status_line) {
|
||||
tputs(FS, 1, outc);
|
||||
} else {
|
||||
CursorSet(row, col);
|
||||
}
|
||||
else {
|
||||
CursorSet (row, col);
|
||||
}
|
||||
Flush ();
|
||||
Flush();
|
||||
master_flush_flag = 1;
|
||||
}
|
||||
|
||||
Flush ()
|
||||
{
|
||||
fflush (stdout);
|
||||
Flush() {
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
Cscroll ()
|
||||
{
|
||||
Cscroll() {
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
|
|
|||
505
douon.c
505
douon.c
|
|
@ -27,504 +27,461 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: douon.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1996/02/23 11:04:02 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "common.h"
|
||||
#include "key.h"
|
||||
#include "wchar16.h"
|
||||
#define DNUM 5
|
||||
#define DNUM 5
|
||||
|
||||
static int Dcount;
|
||||
static int Dpoint;
|
||||
static struct douon_sj3 HenkanDouon[DOUON_N];
|
||||
static wchar16_t Dkanji[BUFFLENGTH * 2];
|
||||
static struct douon_sj3 HenkanDouon[DOUON_N];
|
||||
static wchar16_t Dkanji[BUFFLENGTH * 2];
|
||||
|
||||
void go_gakusyuu();
|
||||
void go_gakushuu();
|
||||
|
||||
SJ_getdouon (s, d, n, choice, reconv)
|
||||
wchar16_t *s;
|
||||
struct douon_sj3 *d;
|
||||
int n;
|
||||
int choice;
|
||||
int reconv;
|
||||
SJ_getdouon(s, d, n, choice, reconv)
|
||||
wchar16_t* s;
|
||||
struct douon_sj3* d;
|
||||
int n;
|
||||
int choice;
|
||||
int reconv;
|
||||
{
|
||||
int len;
|
||||
int len;
|
||||
|
||||
Dcount = SJ2_getdouon (s, d, n, choice, reconv);
|
||||
Dcount = SJ2_getdouon(s, d, n, choice, reconv);
|
||||
|
||||
if(Dcount < 0 && !dconnect(1))
|
||||
Dcount = SJ2_getdouon(s, d, n, choice, reconv);
|
||||
|
||||
if (Dcount < 0 && !dconnect(1))
|
||||
Dcount = SJ2_getdouon (s, d, n, choice, reconv);
|
||||
|
||||
if (Dcount <= 0) {
|
||||
if(Dcount <= 0) {
|
||||
Dcount = 1;
|
||||
len = wslen (s);
|
||||
Strncpy ((char *)d[0].ddata, s, len);
|
||||
len = wslen(s);
|
||||
Strncpy((char*)d[0].ddata, s, len);
|
||||
d[0].dlen = wcbyte(s);
|
||||
d[0].wlen = len;
|
||||
return(0);
|
||||
return (0);
|
||||
} else
|
||||
return(1);
|
||||
return (1);
|
||||
}
|
||||
|
||||
exec_douon() {
|
||||
Conversion* cv;
|
||||
int val;
|
||||
|
||||
|
||||
exec_douon ()
|
||||
{
|
||||
Conversion *cv;
|
||||
int val;
|
||||
|
||||
cv = GetConversion ();
|
||||
if (cv->CurBun == -1) {
|
||||
cv = GetConversion();
|
||||
if(cv->CurBun == -1) {
|
||||
cv->CurBun = 0;
|
||||
Rdisp ();
|
||||
Rdisp();
|
||||
}
|
||||
cv->PreBun = cv->CurBun;
|
||||
if (cv->Bkettei[cv->CurBun] & Bmuhenkan)
|
||||
val = Sdouon (2);
|
||||
if(cv->Bkettei[cv->CurBun] & Bmuhenkan)
|
||||
val = Sdouon(2);
|
||||
else
|
||||
val = Sdouon (1);
|
||||
if (!val)
|
||||
Rdisp ();
|
||||
val = Sdouon(1);
|
||||
if(!val)
|
||||
Rdisp();
|
||||
}
|
||||
|
||||
wrap_douon (back)
|
||||
int back;
|
||||
wrap_douon(back) int back;
|
||||
{
|
||||
Conversion *cv;
|
||||
int val;
|
||||
Conversion* cv;
|
||||
int val;
|
||||
|
||||
cv = current_conversion;
|
||||
if (cv->CurBun == -1) {
|
||||
if(cv->CurBun == -1) {
|
||||
cv->CurBun = 0;
|
||||
Rdisp ();
|
||||
Rdisp();
|
||||
}
|
||||
cv->PreBun = cv->CurBun;
|
||||
if (cv->Dflag == cv->CurBun)
|
||||
val = Rdouon (back);
|
||||
if(cv->Dflag == cv->CurBun)
|
||||
val = Rdouon(back);
|
||||
else {
|
||||
val = Sdouon (2);
|
||||
val = Sdouon(2);
|
||||
cv->Dflag = cv->CurBun;
|
||||
}
|
||||
if (!val)
|
||||
Rdisp ();
|
||||
if(!val)
|
||||
Rdisp();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Cdouon (yomi, gnum)
|
||||
wchar16_t *yomi;
|
||||
int gnum;
|
||||
Cdouon(yomi, gnum)
|
||||
wchar16_t* yomi;
|
||||
int gnum;
|
||||
{
|
||||
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t* s;
|
||||
int dispnum;
|
||||
int num;
|
||||
int displen;
|
||||
int base;
|
||||
char tmp[BUFFLENGTH], tmp2[BUFFLENGTH * 2];
|
||||
wchar16_t wtmp[BUFFLENGTH], wtmp2[BUFFLENGTH * 2];
|
||||
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t *s;
|
||||
int dispnum;
|
||||
int num;
|
||||
int displen;
|
||||
int base;
|
||||
char tmp[BUFFLENGTH], tmp2[BUFFLENGTH * 2];
|
||||
wchar16_t wtmp[BUFFLENGTH], wtmp2[BUFFLENGTH * 2];
|
||||
|
||||
int gakusyuu;
|
||||
unsigned short row, col;
|
||||
Conversion *cv;
|
||||
int gakushuu;
|
||||
unsigned short row, col;
|
||||
Conversion* cv;
|
||||
|
||||
cv = current_conversion;
|
||||
|
||||
gakusyuu = SJ_getdouon (yomi, HenkanDouon, gnum, 0, 0);
|
||||
gakushuu = SJ_getdouon(yomi, HenkanDouon, gnum, 0, 0);
|
||||
|
||||
dispnum = DNUM;
|
||||
if (dispnum > Dcount)
|
||||
if(dispnum > Dcount)
|
||||
j = Dcount;
|
||||
else
|
||||
j = dispnum;
|
||||
len = 0;
|
||||
for (i = 0 ; i < j ; i ++)
|
||||
for(i = 0; i < j; i++)
|
||||
len += HenkanDouon[i].dlen;
|
||||
len /= j;
|
||||
if (len < 1)
|
||||
if(len < 1)
|
||||
len = 1;
|
||||
len += 6;
|
||||
sprintf (tmp, "%d/%d ", Dcount, Dcount);
|
||||
displen = cv->column - strlen (tmp) - 1;
|
||||
if (displen < 1)
|
||||
sprintf(tmp, "%d/%d ", Dcount, Dcount);
|
||||
displen = cv->column - strlen(tmp) - 1;
|
||||
if(displen < 1)
|
||||
displen = 1;
|
||||
num = displen / len;
|
||||
if (num < 1)
|
||||
if(num < 1)
|
||||
num = 1;
|
||||
if (num < dispnum && num > 0)
|
||||
if(num < dispnum && num > 0)
|
||||
dispnum = num;
|
||||
|
||||
for (i = 0 ; ; ) {
|
||||
if (i >= Dcount)
|
||||
for(i = 0;;) {
|
||||
if(i >= Dcount)
|
||||
i = 0;
|
||||
StartGuide (&row, &col);
|
||||
Clear_EOL ();
|
||||
StartGuide(&row, &col);
|
||||
Clear_EOL();
|
||||
base = i;
|
||||
|
||||
sprintf (tmp, "%d/%d", i + 1, Dcount);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
printR (wtmp);
|
||||
put_space (1);
|
||||
sprintf(tmp, "%d/%d", i + 1, Dcount);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
printR(wtmp);
|
||||
put_space(1);
|
||||
|
||||
for (j = 0 ; j < dispnum ; j ++, i ++) {
|
||||
if (i >= Dcount)
|
||||
for(j = 0; j < dispnum; j++, i++) {
|
||||
if(i >= Dcount)
|
||||
break;
|
||||
len = HenkanDouon[i].dlen;
|
||||
|
||||
if (len > displen)
|
||||
if(len > displen)
|
||||
len = displen;
|
||||
|
||||
s = (wchar16_t *)HenkanDouon[i].ddata;
|
||||
Strncpy (wtmp, s, HenkanDouon[i].wlen);
|
||||
s = (wchar16_t*)HenkanDouon[i].ddata;
|
||||
Strncpy(wtmp, s, HenkanDouon[i].wlen);
|
||||
wtmp[HenkanDouon[i].wlen] = '\0';
|
||||
(void) wcstombs(tmp, wtmp, BUFFLENGTH);
|
||||
sprintf (tmp2, "[%d] %s ", j+1, tmp);
|
||||
(void) mbstowcs(wtmp2, tmp2, BUFFLENGTH);
|
||||
SJ_print (wtmp2);
|
||||
(void)wcstombs(tmp, wtmp, BUFFLENGTH);
|
||||
sprintf(tmp2, "[%d] %s ", j + 1, tmp);
|
||||
(void)mbstowcs(wtmp2, tmp2, BUFFLENGTH);
|
||||
SJ_print(wtmp2);
|
||||
}
|
||||
|
||||
EndGuide (row, col);
|
||||
Flush ();
|
||||
num = Dselect (j);
|
||||
EndGuide(row, col);
|
||||
Flush();
|
||||
num = Dselect(j);
|
||||
|
||||
|
||||
if (num == 0)
|
||||
if(num == 0)
|
||||
continue;
|
||||
|
||||
|
||||
else if (num == -1) {
|
||||
if ((i >= Dcount) && ((Dcount % dispnum) != 0))
|
||||
else if(num == -1) {
|
||||
if((i >= Dcount) && ((Dcount % dispnum) != 0))
|
||||
i = Dcount - (Dcount % dispnum);
|
||||
else
|
||||
i -= dispnum;
|
||||
i -= dispnum;
|
||||
if (i < 0) {
|
||||
if (Dcount > dispnum) {
|
||||
if ((Dcount % dispnum) == 0)
|
||||
if(i < 0) {
|
||||
if(Dcount > dispnum) {
|
||||
if((Dcount % dispnum) == 0)
|
||||
i = Dcount - dispnum;
|
||||
else
|
||||
i = Dcount - (Dcount % dispnum);
|
||||
}
|
||||
else
|
||||
} else
|
||||
i = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
else if (num > j) {
|
||||
disp_mode ();
|
||||
else if(num > j) {
|
||||
disp_mode();
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
disp_mode ();
|
||||
disp_mode();
|
||||
|
||||
Dpoint = base + num - 1;
|
||||
len = HenkanDouon[Dpoint].dlen;
|
||||
s = (wchar16_t *)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy (Dkanji, s, HenkanDouon[Dpoint].wlen);
|
||||
len = HenkanDouon[Dpoint].dlen;
|
||||
s = (wchar16_t*)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy(Dkanji, s, HenkanDouon[Dpoint].wlen);
|
||||
Dkanji[HenkanDouon[Dpoint].wlen] = '\0';
|
||||
if (HenkanDouon[Dpoint].valid)
|
||||
PushGD (gnum, &HenkanDouon[Dpoint].dcid);
|
||||
if(HenkanDouon[Dpoint].valid)
|
||||
PushGD(gnum, &HenkanDouon[Dpoint].dcid);
|
||||
|
||||
if (gakusyuu)
|
||||
if (HenkanDouon[Dpoint].valid)
|
||||
SJ2_study (&HenkanDouon[Dpoint].dcid);
|
||||
else
|
||||
SJ2_toroku(yomi, HenkanDouon[Dpoint].ddata, SJ3_H_NRMNOUN);
|
||||
if(gakushuu)
|
||||
if(HenkanDouon[Dpoint].valid)
|
||||
SJ2_study(&HenkanDouon[Dpoint].dcid);
|
||||
else
|
||||
SJ2_toroku(yomi, HenkanDouon[Dpoint].ddata, SJ3_H_NRMNOUN);
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
Dselect (lim)
|
||||
int lim;
|
||||
Dselect(lim) int lim;
|
||||
{
|
||||
extern int keyvalue;
|
||||
int c, num;
|
||||
char s[2];
|
||||
extern int keyvalue;
|
||||
int c, num;
|
||||
char s[2];
|
||||
|
||||
SaveConversion ();
|
||||
while ((c = inkey ()) != EOF) {
|
||||
if (AnotherConversion ()) {
|
||||
unget_key (c);
|
||||
SaveConversion();
|
||||
while((c = inkey()) != EOF) {
|
||||
if(AnotherConversion()) {
|
||||
unget_key(c);
|
||||
break;
|
||||
}
|
||||
if (keyvalue == KEY_KETTEI)
|
||||
if(keyvalue == KEY_KETTEI)
|
||||
break;
|
||||
else if (keyvalue == KEY_HENKAN || keyvalue == KEY_RIGHT)
|
||||
else if(keyvalue == KEY_HENKAN || keyvalue == KEY_RIGHT)
|
||||
return (0);
|
||||
else if (c == ' ')
|
||||
else if(c == ' ')
|
||||
return (0);
|
||||
else if (keyvalue == KEY_MUHENKAN || keyvalue == KEY_LEFT
|
||||
|| is_bsdel (c))
|
||||
else if(keyvalue == KEY_MUHENKAN || keyvalue == KEY_LEFT || is_bsdel(c))
|
||||
return (-1);
|
||||
else if (WcIsASCII(c) && isdigit (WcLowByte(c))) {
|
||||
*s = c;
|
||||
else if(WcIsASCII(c) && isdigit(WcLowByte(c))) {
|
||||
*s = c;
|
||||
s[1] = '\0';
|
||||
num = atoi (s);
|
||||
if (num > 0 && num <= lim)
|
||||
num = atoi(s);
|
||||
if(num > 0 && num <= lim)
|
||||
return (num);
|
||||
}
|
||||
else if (keyvalue != KEY_NORMAL)
|
||||
} else if(keyvalue != KEY_NORMAL)
|
||||
break;
|
||||
else if (keyvalue == KEY_NORMAL && IsESC (c))
|
||||
else if(keyvalue == KEY_NORMAL && IsESC(c))
|
||||
break;
|
||||
}
|
||||
return (lim + 1);
|
||||
}
|
||||
|
||||
|
||||
Gdouon (yomi, num, choice, reconv)
|
||||
wchar16_t *yomi;
|
||||
int num;
|
||||
int choice;
|
||||
int reconv;
|
||||
Gdouon(yomi, num, choice, reconv)
|
||||
wchar16_t* yomi;
|
||||
int num;
|
||||
int choice;
|
||||
int reconv;
|
||||
{
|
||||
|
||||
int len;
|
||||
wchar16_t* s;
|
||||
|
||||
int len;
|
||||
wchar16_t *s;
|
||||
|
||||
SJ_getdouon (yomi, HenkanDouon, num, choice, reconv);
|
||||
SJ_getdouon(yomi, HenkanDouon, num, choice, reconv);
|
||||
|
||||
Dpoint = 0;
|
||||
len = HenkanDouon[Dpoint].wlen;
|
||||
s = (wchar16_t *)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy (Dkanji, s, len);
|
||||
len = HenkanDouon[Dpoint].wlen;
|
||||
s = (wchar16_t*)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy(Dkanji, s, len);
|
||||
Dkanji[len] = '\0';
|
||||
if (HenkanDouon[Dpoint].valid)
|
||||
PushGD (num, &HenkanDouon[Dpoint].dcid);
|
||||
if(HenkanDouon[Dpoint].valid)
|
||||
PushGD(num, &HenkanDouon[Dpoint].dcid);
|
||||
}
|
||||
|
||||
Sdouon (Choice)
|
||||
int Choice;
|
||||
Sdouon(Choice) int Choice;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t yomi[BUFFLENGTH * 2];
|
||||
int count;
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t yomi[BUFFLENGTH * 2];
|
||||
int count;
|
||||
|
||||
cv = current_conversion;
|
||||
cv = current_conversion;
|
||||
count = 0;
|
||||
if (Choice == 0)
|
||||
if(Choice == 0)
|
||||
i = cv->PreBun;
|
||||
else
|
||||
i = cv->CurBun;
|
||||
top:
|
||||
if ((len = load_bun(i, yomi, MODE_ZHIRA)) <= 0) {
|
||||
if((len = load_bun(i, yomi, MODE_ZHIRA)) <= 0) {
|
||||
cv->Bkettei[i] |= Bmuhenkan;
|
||||
cv->Bkettei[i] &= ~Bhenkan;
|
||||
cv->Pkettei[i] = MODE_ZHIRA;
|
||||
*Dkanji = '\0';
|
||||
*Dkanji = '\0';
|
||||
goto null;
|
||||
}
|
||||
else if (len > DLEN) {
|
||||
} else if(len > DLEN) {
|
||||
cv->Bkettei[i] |= Bmuhenkan;
|
||||
cv->Bkettei[i] &= ~Bhenkan;
|
||||
*Dkanji = '\0';
|
||||
goto null;
|
||||
}
|
||||
else if (Choice == 0 && (cv->Bkettei[i] & Bmuhenkan)) {
|
||||
} else if(Choice == 0 && (cv->Bkettei[i] & Bmuhenkan)) {
|
||||
goto tail;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
cv->Bkettei[i] |= Bhenkan;
|
||||
cv->Bkettei[i] &= ~Bmuhenkan;
|
||||
}
|
||||
|
||||
if (Choice == 1) {
|
||||
if (Cdouon (yomi, i) == FALSE)
|
||||
if(Choice == 1) {
|
||||
if(Cdouon(yomi, i) == FALSE)
|
||||
return (1);
|
||||
cv->Pkettei[i] = MODE_ZHIRA;
|
||||
}
|
||||
else if (Choice == 2) {
|
||||
Gdouon (yomi, i, 0, 0);
|
||||
}
|
||||
else if (Choice == 3)
|
||||
Gdouon (yomi, i, count, 1);
|
||||
} else if(Choice == 2) {
|
||||
Gdouon(yomi, i, 0, 0);
|
||||
} else if(Choice == 3)
|
||||
Gdouon(yomi, i, count, 1);
|
||||
else
|
||||
Gdouon (yomi, i, count, 0);
|
||||
Gdouon(yomi, i, count, 0);
|
||||
null:
|
||||
len = wslen (Dkanji);
|
||||
len = wslen(Dkanji);
|
||||
|
||||
if (!(cv->Bkettei[i] & Bedit)) {
|
||||
if (cv->Enum >= MAXENUM)
|
||||
if(!(cv->Bkettei[i] & Bedit)) {
|
||||
if(cv->Enum >= MAXENUM)
|
||||
return (1);
|
||||
j = cv->Enum ++;
|
||||
cv->Edit[i] = j;
|
||||
j = cv->Enum++;
|
||||
cv->Edit[i] = j;
|
||||
cv->Epoint[j] = &(cv->Ebuff[cv->e_point]);
|
||||
cv->e_point += DLEN;
|
||||
}
|
||||
else
|
||||
} else
|
||||
j = cv->Edit[i];
|
||||
if (0 < len && len <= DLEN) {
|
||||
if(0 < len && len <= DLEN) {
|
||||
cv->Bkettei[i] |= Bedit;
|
||||
cv->Pkettei[i] = MODE_ZHIRA;
|
||||
}
|
||||
cv->Elen[j] = len;
|
||||
wscpy (cv->Epoint[j], Dkanji);
|
||||
wscpy(cv->Epoint[j], Dkanji);
|
||||
|
||||
tail:
|
||||
if (Choice == 0 && i != cv->CurBun) {
|
||||
if(Choice == 0 && i != cv->CurBun) {
|
||||
i = cv->CurBun;
|
||||
goto top;
|
||||
}
|
||||
if (cv->PreBun == cv->Bnum)
|
||||
if(cv->PreBun == cv->Bnum)
|
||||
cv->Bkettei[cv->Bnum] = Bend;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Rdouon (back)
|
||||
int back;
|
||||
Rdouon(back) int back;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t *s;
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
int len;
|
||||
wchar16_t* s;
|
||||
|
||||
cv = current_conversion;
|
||||
if (Dcount > 0) {
|
||||
if (back) {
|
||||
Dpoint --;
|
||||
if (Dpoint < 0)
|
||||
if(Dcount > 0) {
|
||||
if(back) {
|
||||
Dpoint--;
|
||||
if(Dpoint < 0)
|
||||
Dpoint = Dcount - 1;
|
||||
}
|
||||
else {
|
||||
Dpoint ++;
|
||||
if (Dpoint >= Dcount)
|
||||
} else {
|
||||
Dpoint++;
|
||||
if(Dpoint >= Dcount)
|
||||
Dpoint = 0;
|
||||
}
|
||||
len = HenkanDouon[Dpoint].wlen;
|
||||
s = (wchar16_t *)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy (Dkanji, s, len);
|
||||
s = (wchar16_t*)HenkanDouon[Dpoint].ddata;
|
||||
Strncpy(Dkanji, s, len);
|
||||
Dkanji[len] = '\0';
|
||||
|
||||
i = cv->CurBun;
|
||||
j = cv->Edit[i];
|
||||
i = cv->CurBun;
|
||||
j = cv->Edit[i];
|
||||
cv->Elen[j] = len;
|
||||
wscpy (cv->Epoint[j], Dkanji);
|
||||
wscpy(cv->Epoint[j], Dkanji);
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
Bkanji (kanji)
|
||||
wchar16_t *kanji;
|
||||
Bkanji(kanji)
|
||||
wchar16_t* kanji;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i;
|
||||
int plen, len;
|
||||
wchar16_t *s;
|
||||
Conversion* cv;
|
||||
int i;
|
||||
int plen, len;
|
||||
wchar16_t* s;
|
||||
|
||||
cv = current_conversion;
|
||||
s = kanji;
|
||||
*s = '\0';
|
||||
cv = current_conversion;
|
||||
s = kanji;
|
||||
*s = '\0';
|
||||
plen = 0;
|
||||
for (i = 0 ; i < cv->Bnum ; i ++) {
|
||||
if ((len = Bstr (i, s)) <= 0)
|
||||
for(i = 0; i < cv->Bnum; i++) {
|
||||
if((len = Bstr(i, s)) <= 0)
|
||||
continue;
|
||||
s += len;
|
||||
plen += len;
|
||||
}
|
||||
return(plen);
|
||||
return (plen);
|
||||
}
|
||||
|
||||
struct studyrec Gdata[BUFFLENGTH];
|
||||
struct studyrec Gdata[BUFFLENGTH];
|
||||
|
||||
PushGD (num, wordid)
|
||||
int num;
|
||||
struct studyrec *wordid;
|
||||
PushGD(num, wordid) int num;
|
||||
struct studyrec* wordid;
|
||||
{
|
||||
Gdata[num] = *wordid;
|
||||
}
|
||||
|
||||
cl_gakusyuu ()
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
int o_point, n_point;
|
||||
cl_gakushuu() {
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
int o_point, n_point;
|
||||
|
||||
cv = current_conversion;
|
||||
for (i = 0 ; i < cv->Bnum ; i ++) {
|
||||
if (cv->OrgPlen[i] != cv->Plen[i]) {
|
||||
for(i = 0; i < cv->Bnum; i++) {
|
||||
if(cv->OrgPlen[i] != cv->Plen[i]) {
|
||||
o_point = n_point = 0;
|
||||
j = i;
|
||||
while (j < cv->Bnum) {
|
||||
j = i;
|
||||
while(j < cv->Bnum) {
|
||||
o_point += cv->OrgPlen[j];
|
||||
n_point += cv->Plen[j];
|
||||
j ++;
|
||||
if (o_point == n_point)
|
||||
j++;
|
||||
if(o_point == n_point)
|
||||
break;
|
||||
}
|
||||
j--;
|
||||
check_and_gakusyuu (i, j);
|
||||
check_and_gakushuu(i, j);
|
||||
i = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
check_and_gakusyuu (m, n)
|
||||
int m, n;
|
||||
check_and_gakushuu(m, n) int m, n;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
|
||||
cv = current_conversion;
|
||||
i = m;
|
||||
j = i + 1;
|
||||
while (j <= n && j < cv->Bnum) {
|
||||
if (cv->Bkettei[i] & Bedit && !(cv->Bkettei[i] & Bmuhenkan))
|
||||
go_gakusyuu (i);
|
||||
i ++;
|
||||
j ++;
|
||||
i = m;
|
||||
j = i + 1;
|
||||
while(j <= n && j < cv->Bnum) {
|
||||
if(cv->Bkettei[i] & Bedit && !(cv->Bkettei[i] & Bmuhenkan))
|
||||
go_gakushuu(i);
|
||||
i++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
go_gakusyuu (n)
|
||||
int n;
|
||||
go_gakushuu(n) int n;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i, j;
|
||||
wchar16_t yomi1[BUFFLENGTH], yomi2[BUFFLENGTH];
|
||||
struct studyrec *gdatap;
|
||||
int len;
|
||||
Conversion* cv;
|
||||
int i, j;
|
||||
wchar16_t yomi1[BUFFLENGTH], yomi2[BUFFLENGTH];
|
||||
struct studyrec* gdatap;
|
||||
int len;
|
||||
|
||||
cv = current_conversion;
|
||||
i = n;
|
||||
j = i + 1;
|
||||
i = n;
|
||||
j = i + 1;
|
||||
|
||||
if (cv->Pedited[i] == 1 || cv->Pedited[j] == 1)
|
||||
if(cv->Pedited[i] == 1 || cv->Pedited[j] == 1)
|
||||
return;
|
||||
|
||||
|
||||
if ((len = load_bun(i, yomi1, MODE_ZHIRA)) <= 0 && len > DLEN)
|
||||
if((len = load_bun(i, yomi1, MODE_ZHIRA)) <= 0 && len > DLEN)
|
||||
return;
|
||||
if ((len = load_bun(j, yomi2, MODE_ZHIRA)) > DLEN)
|
||||
if((len = load_bun(j, yomi2, MODE_ZHIRA)) > DLEN)
|
||||
return;
|
||||
|
||||
|
||||
if (len <= 0)
|
||||
if(len <= 0)
|
||||
gdatap = NULL;
|
||||
else
|
||||
gdatap = &Gdata[j];
|
||||
SJ2_clstudy (yomi1, yomi2, gdatap);
|
||||
SJ2_clstudy(yomi1, yomi2, gdatap);
|
||||
}
|
||||
|
|
|
|||
127
error.c
127
error.c
|
|
@ -27,17 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: error.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:51 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
|
@ -45,43 +34,35 @@
|
|||
#include "sj_typedef.h"
|
||||
#include "server.h"
|
||||
|
||||
extern char program_name[];
|
||||
extern int debug_level;
|
||||
extern int client_fd;
|
||||
extern char program_name[];
|
||||
extern int debug_level;
|
||||
extern int client_fd;
|
||||
|
||||
static char *tty_name = "/dev/tty";
|
||||
static FILE *errfp = NULL;
|
||||
static FILE *logfp = NULL;
|
||||
static FILE *dbgfp = NULL;
|
||||
static char* tty_name = "/dev/tty";
|
||||
static FILE* errfp = NULL;
|
||||
static FILE* logfp = NULL;
|
||||
static FILE* dbgfp = NULL;
|
||||
|
||||
int open_error(void) {
|
||||
extern char* error_file;
|
||||
int flg = 0;
|
||||
|
||||
int
|
||||
open_error(void)
|
||||
{
|
||||
extern char *error_file;
|
||||
int flg = 0;
|
||||
|
||||
if (error_file && *error_file) {
|
||||
if (!strcmp(error_file, tty_name)) {
|
||||
if(error_file && *error_file) {
|
||||
if(!strcmp(error_file, tty_name)) {
|
||||
errfp = stderr;
|
||||
flg = -1;
|
||||
}
|
||||
else if (!(errfp = fopen(error_file, "a")))
|
||||
flg = -1;
|
||||
} else if(!(errfp = fopen(error_file, "a")))
|
||||
fprintf(stderr, "Can't open \"%s\"\r\n", error_file);
|
||||
}
|
||||
else
|
||||
} else
|
||||
errfp = NULL;
|
||||
|
||||
return flg;
|
||||
}
|
||||
|
||||
void error_out(char* s, int p1, int p2, int p3, int p4, int p5) {
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
void
|
||||
error_out(char* s, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
if (errfp) {
|
||||
if(errfp) {
|
||||
sprintf(tmp, s, p1, p2, p3, p4, p5);
|
||||
fprintf(errfp, "%s: %s\r\n", program_name, tmp);
|
||||
fflush(errfp);
|
||||
|
|
@ -89,89 +70,69 @@ error_out(char* s, int p1, int p2, int p3, int p4, int p5)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
void warning_out(char* s, int p1, int p2, int p3, int p4, int p5) {
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
void
|
||||
warning_out(char* s, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
if (errfp) {
|
||||
if(errfp) {
|
||||
sprintf(tmp, s, p1, p2, p3, p4);
|
||||
fprintf(errfp, "%s: warning: %s\r\n", program_name, tmp);
|
||||
fflush(errfp);
|
||||
}
|
||||
}
|
||||
|
||||
int open_log(void) {
|
||||
extern char* log_file;
|
||||
int flg = 0;
|
||||
|
||||
int
|
||||
open_log(void)
|
||||
{
|
||||
extern char *log_file;
|
||||
int flg = 0;
|
||||
|
||||
if (log_file && *log_file) {
|
||||
if (!strcmp(log_file, tty_name)) {
|
||||
if(log_file && *log_file) {
|
||||
if(!strcmp(log_file, tty_name)) {
|
||||
logfp = stderr;
|
||||
flg = -1;
|
||||
}
|
||||
else
|
||||
flg = -1;
|
||||
} else
|
||||
logfp = fopen(log_file, "a");
|
||||
if (logfp) {
|
||||
if(logfp) {
|
||||
time_t t;
|
||||
|
||||
time(&t);
|
||||
fprintf(logfp, "%s: log started at %s\r",
|
||||
program_name, ctime(&t));
|
||||
fflush(logfp);
|
||||
}
|
||||
else
|
||||
} else
|
||||
fprintf(stderr, "Can't open \"%s\"\r\n", log_file);
|
||||
}
|
||||
else
|
||||
} else
|
||||
logfp = NULL;
|
||||
|
||||
return flg;
|
||||
}
|
||||
|
||||
void logging_out(char* s, int p1, int p2, int p3, int p4, int p5) {
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
void
|
||||
logging_out(char* s, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
char tmp[BUFSIZ];
|
||||
|
||||
if (logfp) {
|
||||
if(logfp) {
|
||||
sprintf(tmp, s, p1, p2, p3, p4, p5);
|
||||
fprintf(logfp, "%s\r\n", tmp);
|
||||
fflush(logfp);
|
||||
}
|
||||
}
|
||||
|
||||
int open_debug(void) {
|
||||
extern char* debug_file;
|
||||
int flg = 0;
|
||||
|
||||
int
|
||||
open_debug(void)
|
||||
{
|
||||
extern char *debug_file;
|
||||
int flg = 0;
|
||||
|
||||
if (debug_file && *debug_file) {
|
||||
if (!strcmp(debug_file, tty_name)) {
|
||||
if(debug_file && *debug_file) {
|
||||
if(!strcmp(debug_file, tty_name)) {
|
||||
dbgfp = stderr;
|
||||
flg = -1;
|
||||
}
|
||||
else if (!(dbgfp = fopen(debug_file, "a")))
|
||||
flg = -1;
|
||||
} else if(!(dbgfp = fopen(debug_file, "a")))
|
||||
fprintf(stderr, "Can't open \"%s\"\r\n", debug_file);
|
||||
}
|
||||
else
|
||||
} else
|
||||
dbgfp = NULL;
|
||||
|
||||
return flg;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
debug_out(int lvl, char* s, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
if (lvl <= debug_level && dbgfp) {
|
||||
void debug_out(int lvl, char* s, int p1, int p2, int p3, int p4, int p5) {
|
||||
if(lvl <= debug_level && dbgfp) {
|
||||
fprintf(dbgfp, s, p1, p2, p3, p4, p5);
|
||||
fflush(dbgfp);
|
||||
}
|
||||
|
|
|
|||
452
etc.c
452
etc.c
|
|
@ -27,147 +27,136 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: etc.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:15 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "common.h"
|
||||
#include "key.h"
|
||||
|
||||
extern int keyvalue;
|
||||
static char rehname[SHORTLENGTH * 2];
|
||||
extern char *cur_serv;
|
||||
static int dcflag = 0;
|
||||
extern int keyvalue;
|
||||
static char rehname[SHORTLENGTH * 2];
|
||||
extern char* cur_serv;
|
||||
static int dcflag = 0;
|
||||
|
||||
void disp_version();
|
||||
|
||||
exec_etc (key)
|
||||
int key;
|
||||
exec_etc(key) int key;
|
||||
{
|
||||
unsigned short row, col;
|
||||
int inc;
|
||||
int chbun;
|
||||
int edited;
|
||||
int etckey;
|
||||
Conversion *cv;
|
||||
unsigned short row, col;
|
||||
int inc;
|
||||
int chbun;
|
||||
int edited;
|
||||
int etckey;
|
||||
Conversion* cv;
|
||||
|
||||
cv = GetConversion ();
|
||||
cv = GetConversion();
|
||||
|
||||
edited = 0;
|
||||
chbun = 0;
|
||||
StartGuide (&row, &col);
|
||||
if (key == KEY_ETC) {
|
||||
printR (WCGEtc);
|
||||
if (cv->column >= MINCOL)
|
||||
spaceR (WCGetc);
|
||||
Clear_EOL ();
|
||||
EndGuide (row, col);
|
||||
SaveConversion ();
|
||||
inc = inkey ();
|
||||
if (AnotherConversion ())
|
||||
return(KEY_NORMAL);
|
||||
cv = GetConversion ();
|
||||
etckey = etc_map (keyvalue);
|
||||
}
|
||||
else {
|
||||
EndGuide (row, col);
|
||||
chbun = 0;
|
||||
StartGuide(&row, &col);
|
||||
if(key == KEY_ETC) {
|
||||
printR(WCGEtc);
|
||||
if(cv->column >= MINCOL)
|
||||
spaceR(WCGetc);
|
||||
Clear_EOL();
|
||||
EndGuide(row, col);
|
||||
SaveConversion();
|
||||
inc = inkey();
|
||||
if(AnotherConversion())
|
||||
return (KEY_NORMAL);
|
||||
cv = GetConversion();
|
||||
etckey = etc_map(keyvalue);
|
||||
} else {
|
||||
EndGuide(row, col);
|
||||
etckey = key;
|
||||
}
|
||||
|
||||
switch (etckey) {
|
||||
switch(etckey) {
|
||||
case KEY_NORMAL:
|
||||
normal:
|
||||
switch (inc) {
|
||||
normal:
|
||||
switch(inc) {
|
||||
case 'h':
|
||||
helplevel ();
|
||||
helplevel();
|
||||
break;
|
||||
case 't':
|
||||
if (!IsCflag ())
|
||||
chbun = exec_toroku ();
|
||||
if(!IsCflag())
|
||||
chbun = exec_toroku();
|
||||
break;
|
||||
case 's':
|
||||
if (!IsCflag ())
|
||||
chbun = exec_syoukyo ();
|
||||
if(!IsCflag())
|
||||
chbun = exec_shoukyo();
|
||||
break;
|
||||
case 'v':
|
||||
case 'd':
|
||||
disp_version (inc);
|
||||
disp_version(inc);
|
||||
break;
|
||||
case 'w':
|
||||
change_weight ();
|
||||
change_weight();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case KEY_HELP:
|
||||
helplevel ();
|
||||
helplevel();
|
||||
break;
|
||||
case KEY_TOROKU:
|
||||
if (!IsCflag ())
|
||||
chbun = exec_toroku ();
|
||||
if(!IsCflag())
|
||||
chbun = exec_toroku();
|
||||
break;
|
||||
case KEY_SYOUKYO:
|
||||
if (!IsCflag ())
|
||||
chbun = exec_syoukyo ();
|
||||
case KEY_SHOUKYO:
|
||||
if(!IsCflag())
|
||||
chbun = exec_shoukyo();
|
||||
break;
|
||||
case KEY_SJRC:
|
||||
if (IsCflag ())
|
||||
exec_sjrc ();
|
||||
if(IsCflag())
|
||||
exec_sjrc();
|
||||
break;
|
||||
case KEY_EDIT:
|
||||
if (IsHenkan ()) {
|
||||
if (cv->CurBun < 0) {
|
||||
if(IsHenkan()) {
|
||||
if(cv->CurBun < 0) {
|
||||
cv->CurBun = 0;
|
||||
Bdisp (1);
|
||||
Bdisp(1);
|
||||
}
|
||||
edited = exec_edit ();
|
||||
edited = exec_edit();
|
||||
}
|
||||
break;
|
||||
case KEY_RECONNECT:
|
||||
if (reconnect() && IsHenkan()) {
|
||||
EndGuide (row, col);
|
||||
Clear_EOL();
|
||||
Ccheck();
|
||||
Cclear(1);
|
||||
ResetHenkan();
|
||||
vprintU(cv->out_buf, 1);
|
||||
cv->Kanji = 0;
|
||||
return(KEY_NORMAL);
|
||||
}
|
||||
if(reconnect() && IsHenkan()) {
|
||||
EndGuide(row, col);
|
||||
Clear_EOL();
|
||||
Ccheck();
|
||||
Cclear(1);
|
||||
ResetHenkan();
|
||||
vprintU(cv->out_buf, 1);
|
||||
cv->Kanji = 0;
|
||||
return (KEY_NORMAL);
|
||||
}
|
||||
break;
|
||||
case KEY_ETC:
|
||||
break;
|
||||
default:
|
||||
if ((inc = write_pseq (2)) != 0)
|
||||
if((inc = write_pseq(2)) != 0)
|
||||
goto normal;
|
||||
return(etckey);
|
||||
return (etckey);
|
||||
break;
|
||||
}
|
||||
|
||||
EndGuide (row, col);
|
||||
if (edited) {
|
||||
if (!Sdouon (3))
|
||||
Rdisp ();
|
||||
EndGuide(row, col);
|
||||
if(edited) {
|
||||
if(!Sdouon(3))
|
||||
Rdisp();
|
||||
}
|
||||
if (chbun)
|
||||
if(chbun)
|
||||
Ssbun(1);
|
||||
return(KEY_NORMAL);
|
||||
return (KEY_NORMAL);
|
||||
}
|
||||
|
||||
Ssbun(flag)
|
||||
int flag;
|
||||
Ssbun(flag) int flag;
|
||||
{
|
||||
Conversion *cv;
|
||||
Conversion* cv;
|
||||
static short ScurBun, SpreBun;
|
||||
|
||||
cv = GetConversion();
|
||||
if (flag) {
|
||||
if (cv->CurBun != ScurBun || cv->PreBun != SpreBun) {
|
||||
if(flag) {
|
||||
if(cv->CurBun != ScurBun || cv->PreBun != SpreBun) {
|
||||
cv->CurBun = ScurBun;
|
||||
cv->PreBun = SpreBun;
|
||||
Bdisp();
|
||||
|
|
@ -178,25 +167,24 @@ int flag;
|
|||
}
|
||||
}
|
||||
|
||||
etc_map (key)
|
||||
int key;
|
||||
etc_map(key) int key;
|
||||
{
|
||||
extern int u_etckeys;
|
||||
extern int Uetckey[], Uetcval[];
|
||||
int i;
|
||||
int val;
|
||||
extern int u_etckeys;
|
||||
extern int Uetckey[], Uetcval[];
|
||||
int i;
|
||||
int val;
|
||||
|
||||
for (i = 0 ; i < u_etckeys ; i ++) {
|
||||
if (key == Uetckey[i])
|
||||
for(i = 0; i < u_etckeys; i++) {
|
||||
if(key == Uetckey[i])
|
||||
return (Uetcval[i]);
|
||||
}
|
||||
|
||||
switch (key) {
|
||||
switch(key) {
|
||||
case KEY_HENKAN:
|
||||
val = KEY_TOROKU;
|
||||
break;
|
||||
case KEY_MUHENKAN:
|
||||
val = KEY_SYOUKYO;
|
||||
val = KEY_SHOUKYO;
|
||||
break;
|
||||
case KEY_ETC:
|
||||
val = KEY_HELP;
|
||||
|
|
@ -217,170 +205,153 @@ int key;
|
|||
return (val);
|
||||
}
|
||||
|
||||
helplevel ()
|
||||
{
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
unsigned char mtmp[BUFFLENGTH];
|
||||
unsigned char tmp[BUFFLENGTH];
|
||||
Conversion *cv;
|
||||
helplevel() {
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
unsigned char mtmp[BUFFLENGTH];
|
||||
unsigned char tmp[BUFFLENGTH];
|
||||
Conversion* cv;
|
||||
|
||||
cv = GetConversion ();
|
||||
cv = GetConversion();
|
||||
|
||||
if (Hlevel == 1 && cv->column >= MINCOL) {
|
||||
if(Hlevel == 1 && cv->column >= MINCOL) {
|
||||
HHlevel = 2;
|
||||
Hlevel = 2;
|
||||
(void) wcstombs((char *)mtmp, WCMHelp, BUFFLENGTH);
|
||||
sprintf ((char *)tmp, (char *)mtmp, "on");
|
||||
(void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH);
|
||||
}
|
||||
else {
|
||||
Hlevel = 2;
|
||||
(void)wcstombs((char*)mtmp, WCMHelp, BUFFLENGTH);
|
||||
sprintf((char*)tmp, (char*)mtmp, "on");
|
||||
(void)mbstowcs(wtmp, (char*)tmp, BUFFLENGTH);
|
||||
} else {
|
||||
HHlevel = 1;
|
||||
Hlevel = 1;
|
||||
(void) wcstombs((char *)mtmp, WCMHelp, BUFFLENGTH);
|
||||
sprintf ((char *)tmp, (char *)mtmp, "off");
|
||||
(void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH);
|
||||
Hlevel = 1;
|
||||
(void)wcstombs((char*)mtmp, WCMHelp, BUFFLENGTH);
|
||||
sprintf((char*)tmp, (char*)mtmp, "off");
|
||||
(void)mbstowcs(wtmp, (char*)tmp, BUFFLENGTH);
|
||||
}
|
||||
guide_print_pause (WCGHelp, wtmp);
|
||||
guide_print_pause(WCGHelp, wtmp);
|
||||
}
|
||||
|
||||
void
|
||||
disp_version (c)
|
||||
int c;
|
||||
disp_version(c) int c;
|
||||
{
|
||||
extern char *Version, *Copyright, *Date;
|
||||
char tmp[BUFFLENGTH];
|
||||
extern char *Version, *Copyright, *Date;
|
||||
char tmp[BUFFLENGTH];
|
||||
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
|
||||
if (c == 'v')
|
||||
sprintf (tmp, "%s, %s ", Version, Copyright);
|
||||
else if (c == 'd')
|
||||
sprintf (tmp, "%s ", Date);
|
||||
if(c == 'v')
|
||||
sprintf(tmp, "%s, %s ", Version, Copyright);
|
||||
else if(c == 'd')
|
||||
sprintf(tmp, "%s ", Date);
|
||||
else
|
||||
return;
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
guide_print_pause (0, wtmp);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
guide_print_pause(0, wtmp);
|
||||
}
|
||||
|
||||
exec_sjrc ()
|
||||
{
|
||||
extern char RCfile[];
|
||||
char tmp[BUFFLENGTH];
|
||||
unsigned char SUCCorFAIL[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
exec_sjrc() {
|
||||
extern char RCfile[];
|
||||
char tmp[BUFFLENGTH];
|
||||
unsigned char SUCCorFAIL[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
|
||||
|
||||
if (*RCfile == (char)NULL) {
|
||||
if(*RCfile == (char)NULL) {
|
||||
getsjrc();
|
||||
if (*RCfile == (char)NULL)
|
||||
{
|
||||
(void) wcstombs((char *)SUCCorFAIL, WCNOTHsjrc, BUFFLENGTH);
|
||||
sprintf((char *)tmp, (char *)SUCCorFAIL);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
}
|
||||
else
|
||||
{
|
||||
(void) wcstombs((char *)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH);
|
||||
sprintf (tmp, "%s %s ", RCfile, SUCCorFAIL);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
if(*RCfile == (char)NULL) {
|
||||
(void)wcstombs((char*)SUCCorFAIL, WCNOTHsjrc, BUFFLENGTH);
|
||||
sprintf((char*)tmp, (char*)SUCCorFAIL);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
} else {
|
||||
(void)wcstombs((char*)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH);
|
||||
sprintf(tmp, "%s %s ", RCfile, SUCCorFAIL);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
}
|
||||
} else {
|
||||
if (setrc () == TRUE)
|
||||
{
|
||||
(void) wcstombs((char *)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH);
|
||||
if(setrc() == TRUE) {
|
||||
(void)wcstombs((char*)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH);
|
||||
} else {
|
||||
(void) wcstombs((char *)SUCCorFAIL, WCFAILsjrc, BUFFLENGTH);
|
||||
(void)wcstombs((char*)SUCCorFAIL, WCFAILsjrc, BUFFLENGTH);
|
||||
}
|
||||
sprintf (tmp, "%s %s ", RCfile, SUCCorFAIL);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
sprintf(tmp, "%s %s ", RCfile, SUCCorFAIL);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
}
|
||||
guide_print_pause (0, wtmp);
|
||||
guide_print_pause(0, wtmp);
|
||||
}
|
||||
|
||||
static int weight = 3;
|
||||
static int seed = 100000;
|
||||
static int weight = 3;
|
||||
static int seed = 100000;
|
||||
|
||||
change_weight ()
|
||||
{
|
||||
int c;
|
||||
char s[2];
|
||||
char tmp[BUFFLENGTH];
|
||||
unsigned char mtmp[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
change_weight() {
|
||||
int c;
|
||||
char s[2];
|
||||
char tmp[BUFFLENGTH];
|
||||
unsigned char mtmp[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
|
||||
(void) wcstombs((char *)mtmp, WCWeight_mes, BUFFLENGTH);
|
||||
sprintf(tmp, (char *)mtmp, weight);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
c = guide_print_pause (0, wtmp);
|
||||
(void)wcstombs((char*)mtmp, WCWeight_mes, BUFFLENGTH);
|
||||
sprintf(tmp, (char*)mtmp, weight);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
c = guide_print_pause(0, wtmp);
|
||||
|
||||
if (isdigit (c) && (c != '0')) {
|
||||
s[0] = c;
|
||||
s[1] = '\0';
|
||||
weight = atoi (s);
|
||||
if(isdigit(c) && (c != '0')) {
|
||||
s[0] = c;
|
||||
s[1] = '\0';
|
||||
weight = atoi(s);
|
||||
}
|
||||
}
|
||||
|
||||
UsecWeight (sw)
|
||||
int sw;
|
||||
UsecWeight(sw) int sw;
|
||||
{
|
||||
|
||||
|
||||
if (sw)
|
||||
if(sw)
|
||||
return (seed);
|
||||
else
|
||||
return (seed * weight);
|
||||
}
|
||||
|
||||
dconnect(aflag)
|
||||
int aflag;
|
||||
dconnect(aflag) int aflag;
|
||||
{
|
||||
int err;
|
||||
char tmp[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
unsigned char dtmp[BUFFLENGTH];
|
||||
int err;
|
||||
char tmp[BUFFLENGTH];
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
unsigned char dtmp[BUFFLENGTH];
|
||||
|
||||
if (!dcflag) {
|
||||
(void) wcstombs((char *)dtmp, WCDiscon, BUFFLENGTH);
|
||||
sprintf(tmp, (char *)dtmp, cur_serv);
|
||||
if(!dcflag) {
|
||||
(void)wcstombs((char*)dtmp, WCDiscon, BUFFLENGTH);
|
||||
sprintf(tmp, (char*)dtmp, cur_serv);
|
||||
beep();
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
guide_print_pause (0, wtmp);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
guide_print_pause(0, wtmp);
|
||||
|
||||
|
||||
if (aflag && keyvalue == KEY_HENKAN) {
|
||||
if ((err = sj3_autocon()) == 0) {
|
||||
(void) wcstombs((char *)dtmp, WCRserv_OK, BUFFLENGTH);
|
||||
sprintf(tmp, (char *)dtmp, cur_serv);
|
||||
(void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH);
|
||||
if(aflag && keyvalue == KEY_HENKAN) {
|
||||
if((err = sj3_autocon()) == 0) {
|
||||
(void)wcstombs((char*)dtmp, WCRserv_OK, BUFFLENGTH);
|
||||
sprintf(tmp, (char*)dtmp, cur_serv);
|
||||
(void)mbstowcs(wtmp, (char*)tmp, BUFFLENGTH);
|
||||
guide_print_pause(0, wtmp);
|
||||
} else {
|
||||
guide_print_pause(WCSpace, WCNconnect);
|
||||
dcflag = 1;
|
||||
}
|
||||
} else
|
||||
dcflag = 1;
|
||||
} else {
|
||||
guide_print_pause(WCSpace, WCNconnect);
|
||||
dcflag = 1;
|
||||
}
|
||||
} else
|
||||
dcflag = 1;
|
||||
disp_mode();
|
||||
}
|
||||
return(dcflag);
|
||||
return (dcflag);
|
||||
}
|
||||
|
||||
set_dcflag(flag)
|
||||
int flag;
|
||||
set_dcflag(flag) int flag;
|
||||
{
|
||||
dcflag = flag;
|
||||
}
|
||||
|
||||
IsDcflag()
|
||||
{
|
||||
return(dcflag);
|
||||
IsDcflag() {
|
||||
return (dcflag);
|
||||
}
|
||||
|
||||
reconnect ()
|
||||
{
|
||||
int inc, err;
|
||||
char tmp[BUFFLENGTH], *hp;
|
||||
char newserv[SHORTLENGTH * 2], *nsp;
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
reconnect() {
|
||||
int inc, err;
|
||||
char tmp[BUFFLENGTH], *hp;
|
||||
char newserv[SHORTLENGTH * 2], *nsp;
|
||||
wchar16_t wtmp[BUFFLENGTH];
|
||||
unsigned char rtmp[BUFFLENGTH];
|
||||
|
||||
strncpy(newserv, cur_serv, SHORTLENGTH * 2 - 1);
|
||||
|
|
@ -389,55 +360,55 @@ reconnect ()
|
|||
SaveConversion();
|
||||
TopGuide();
|
||||
printR(WCGrcon);
|
||||
(void) wcstombs((char *)rtmp, WCRserv, BUFFLENGTH);
|
||||
sprintf(tmp, (char *)rtmp, newserv);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
SJ_print (wtmp);
|
||||
(void)wcstombs((char*)rtmp, WCRserv, BUFFLENGTH);
|
||||
sprintf(tmp, (char*)rtmp, newserv);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
SJ_print(wtmp);
|
||||
Clear_EOL();
|
||||
Flush();
|
||||
nsp = newserv;
|
||||
while ((inc = inkey()) != EOF) {
|
||||
if (AnotherConversion()) {
|
||||
while((inc = inkey()) != EOF) {
|
||||
if(AnotherConversion()) {
|
||||
unget_key(inc);
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
if (keyvalue != KEY_NORMAL && keyvalue != KEY_FLUSH)
|
||||
return(0);
|
||||
if (inc == '\n' || inc == '\r' || IsESC(inc))
|
||||
if(keyvalue != KEY_NORMAL && keyvalue != KEY_FLUSH)
|
||||
return (0);
|
||||
if(inc == '\n' || inc == '\r' || IsESC(inc))
|
||||
break;
|
||||
if (is_bs (inc) && nsp > newserv) {
|
||||
if(is_bs(inc) && nsp > newserv) {
|
||||
nsp--;
|
||||
*nsp = '\0';
|
||||
backspace(1);
|
||||
Flush();
|
||||
} else if (isgraph(inc) &&
|
||||
nsp < &newserv[SHORTLENGTH * 2 - 1]) {
|
||||
} else if(isgraph(inc) &&
|
||||
nsp < &newserv[SHORTLENGTH * 2 - 1]) {
|
||||
*nsp++ = inc;
|
||||
printf("%c", inc);
|
||||
Flush();
|
||||
} else
|
||||
beep();
|
||||
}
|
||||
if (nsp > newserv) {
|
||||
if(nsp > newserv) {
|
||||
*nsp = '\0';
|
||||
strcpy(rehname, newserv);
|
||||
cur_serv = rehname;
|
||||
} else if (newserv[0] == '\0') {
|
||||
strncpy(newserv, cur_serv, SHORTLENGTH * 2 - 1);
|
||||
strcpy(rehname, newserv);
|
||||
cur_serv = rehname;
|
||||
} else if(newserv[0] == '\0') {
|
||||
strncpy(newserv, cur_serv, SHORTLENGTH * 2 - 1);
|
||||
newserv[SHORTLENGTH * 2 - 1] = '\0';
|
||||
}
|
||||
if ((err = SJ2_reconnect()) == 0) {
|
||||
if((err = SJ2_reconnect()) == 0) {
|
||||
TopGuide();
|
||||
printR(WCGrcon);
|
||||
(void) wcstombs((char *)rtmp, WCRserv_OK, BUFFLENGTH);
|
||||
sprintf(tmp, (char *)rtmp, newserv);
|
||||
(void) mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
(void)wcstombs((char*)rtmp, WCRserv_OK, BUFFLENGTH);
|
||||
sprintf(tmp, (char*)rtmp, newserv);
|
||||
(void)mbstowcs(wtmp, tmp, BUFFLENGTH);
|
||||
SJ_print(wtmp);
|
||||
Clear_EOL();
|
||||
Flush();
|
||||
set_dcflag(0);
|
||||
inc = inkey();
|
||||
if (AnotherConversion ())
|
||||
if(AnotherConversion())
|
||||
unget_key(inc);
|
||||
break;
|
||||
} else {
|
||||
|
|
@ -450,33 +421,32 @@ reconnect ()
|
|||
Backspace();
|
||||
Flush();
|
||||
inc = inkey();
|
||||
if (AnotherConversion()) {
|
||||
if(AnotherConversion()) {
|
||||
unget_key(inc);
|
||||
set_dcflag(1);
|
||||
break;
|
||||
}
|
||||
if (inc == 'n' || inc == 'N' || inc == EOF) {
|
||||
if(inc == 'n' || inc == 'N' || inc == EOF) {
|
||||
set_dcflag(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(1);
|
||||
return (1);
|
||||
}
|
||||
|
||||
guide_print_pause (s1, s2)
|
||||
wchar16_t *s1, *s2;
|
||||
guide_print_pause(s1, s2)
|
||||
wchar16_t* s1,
|
||||
*s2;
|
||||
{
|
||||
int c;
|
||||
int c;
|
||||
|
||||
guide_print (s1, s2);
|
||||
SaveConversion ();
|
||||
c = inkey ();
|
||||
if (AnotherConversion ()) {
|
||||
unget_key (c);
|
||||
guide_print(s1, s2);
|
||||
SaveConversion();
|
||||
c = inkey();
|
||||
if(AnotherConversion()) {
|
||||
unget_key(c);
|
||||
return (EOF);
|
||||
}
|
||||
return (c);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
697
eucmessage.c
697
eucmessage.c
|
|
@ -27,276 +27,245 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: eucmessage.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/12/09 11:27:08 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "wchar16.h"
|
||||
#include <locale.h>
|
||||
#include "kctype.h"
|
||||
#include "sj3libsj3.h"
|
||||
#include "sj2.h"
|
||||
|
||||
unsigned char *EucMessages[] = {
|
||||
(unsigned char *)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
unsigned char* EucMessages[] = {
|
||||
(unsigned char*)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
|
||||
(unsigned char *)"Buffer\241\241\241\241",
|
||||
(unsigned char *)"Unbuffer\241\241",
|
||||
(unsigned char*)"Buffer\241\241\241\241",
|
||||
(unsigned char*)"Unbuffer\241\241",
|
||||
|
||||
(unsigned char *)"\301\264\244\322\244\351\244\254\244\312",
|
||||
(unsigned char *)"\301\264\245\253\245\277\245\253\245\312",
|
||||
(unsigned char *)"\310\276\245\253\245\277\245\253\245\312",
|
||||
(unsigned char *)"\301\264\245\242\245\353\245\325\245\241",
|
||||
(unsigned char *)"\310\276\245\242\245\353\245\325\245\241",
|
||||
(unsigned char*)"\301\264\244\322\244\351\244\254\244\312",
|
||||
(unsigned char*)"\301\264\245\253\245\277\245\253\245\312",
|
||||
(unsigned char*)"\310\276\245\253\245\277\245\253\245\312",
|
||||
(unsigned char*)"\301\264\245\242\245\353\245\325\245\241",
|
||||
(unsigned char*)"\310\276\245\242\245\353\245\325\245\241",
|
||||
|
||||
(unsigned char*)" \312\321\264\271 \314\265\312\321 etc. \267\350\304\352 code \310\276\245\242 \301\264\245\242 \310\276\245\253 \301\264\245\253 \244\253\244\312",
|
||||
(unsigned char*)"\244\275\244\316\302\276\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
|
||||
(unsigned char *)" \312\321\264\271 \314\265\312\321 etc. \267\350\304\352 code \310\276\245\242 \301\264\245\242 \310\276\245\253 \301\264\245\253 \244\253\244\312",
|
||||
(unsigned char *)"\244\275\244\316\302\276\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
(unsigned char*)" \305\320\317\277 \276\303\265\356 Help sjrc \312\324\275\270 \272\306\300\334 \241\241\241\241 \241\241\241\241 \241\241\241\241 \241\241\241\241",
|
||||
|
||||
(unsigned char *)" \305\320\317\277 \276\303\265\356 Help sjrc \312\324\275\270 \272\306\300\334 \241\241\241\241 \241\241\241\241 \241\241\241\241 \241\241\241\241",
|
||||
(unsigned char*)"Help\241\241Mode",
|
||||
(unsigned char*)" \245\254\245\244\245\311\241\246\245\351\245\244\245\363 %s \244\313\244\312\244\352\244\336\244\267\244\277 ",
|
||||
|
||||
(unsigned char *)"Help\241\241Mode",
|
||||
(unsigned char *)" \245\254\245\244\245\311\241\246\245\351\245\244\245\363 %s \244\313\244\312\244\352\244\336\244\267\244\277 ",
|
||||
(unsigned char*)"ShiftJIS\241\241",
|
||||
(unsigned char*)"\241\241\243\305\243\325\243\303\241\241",
|
||||
(unsigned char*)"\243\305\243\325\243\303\312\344\275\365",
|
||||
(unsigned char*)"\241\241\243\312\243\311\243\323\241\241",
|
||||
(unsigned char*)"\243\312\243\311\243\323\312\344\275\365",
|
||||
(unsigned char*)"\241\241\241\241\266\350\305\300\241\241",
|
||||
(unsigned char*)"\266\350\305\300\241\241\312\344\275\365",
|
||||
|
||||
(unsigned char*)"\305\320\317\277",
|
||||
(unsigned char*)" \310\317\260\317\244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
|
||||
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337\306\376\316\317 ",
|
||||
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s] (y/n)? ",
|
||||
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] (y/n)? ",
|
||||
(unsigned char*)" \312\270\313\241\276\360\312\363 : 1.\314\276\273\354 2.\314\276\273\372 3.\314\276\301\260 4.\303\317\314\276 5.\245\265\312\321\306\260\273\354",
|
||||
(unsigned char*)" \305\320\317\277\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char*)" \306\311\244\337\306\376\316\317 ",
|
||||
(unsigned char*)" 1",
|
||||
(unsigned char*)"y",
|
||||
(unsigned char*)" \306\261\260\354\244\316\303\261\270\354\244\254\244\271\244\307\244\313\302\270\272\337\244\267\244\306\244\244\244\336\244\271",
|
||||
(unsigned char*)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \244\263\244\354\260\312\276\345\306\261\244\270\306\311\244\337\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \244\263\244\354\260\312\276\345\245\346\241\274\245\266\274\255\275\361\244\313\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
|
||||
(unsigned char*)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)",",
|
||||
|
||||
(unsigned char*)"\276\303\265\356",
|
||||
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s]\244\362\276\303\265\356\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char*)" \273\330\304\352\244\265\244\354\244\277\306\311\244\337\241\246\264\301\273\372\244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\273\244\363",
|
||||
(unsigned char*)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
|
||||
(unsigned char*)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
|
||||
(unsigned char *)"ShiftJIS\241\241",
|
||||
(unsigned char *)"\241\241\243\305\243\325\243\303\241\241",
|
||||
(unsigned char *)"\243\305\243\325\243\303\312\344\275\365",
|
||||
(unsigned char *)"\241\241\243\312\243\311\243\323\241\241",
|
||||
(unsigned char *)"\243\312\243\311\243\323\312\344\275\365",
|
||||
(unsigned char *)"\241\241\241\241\266\350\305\300\241\241",
|
||||
(unsigned char *)"\266\350\305\300\241\241\312\344\275\365",
|
||||
(unsigned char*)"\244\362\306\311\244\337\271\376\244\337\244\336\244\267\244\277",
|
||||
(unsigned char*)"\244\362\306\311\244\337\271\376\244\341\244\336\244\273\244\363\244\307\244\267\244\277",
|
||||
(unsigned char*)"\245\273\245\303\245\310\245\242\245\303\245\327\245\325\245\241\245\244\245\353\244\254\244\242\244\352\244\336\244\273\244\363 ",
|
||||
|
||||
(unsigned char*)"Change weight (1-9) current weight %d ",
|
||||
|
||||
(unsigned char*)"\272\306\300\334\302\263 ",
|
||||
(unsigned char*)" \245\265\241\274\245\320\314\276 [%s] \244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
|
||||
(unsigned char*)" \245\265\241\274\245\320 [%s] \244\313\300\334\302\263\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char*)"\245\265\241\274\245\320 [%s] \244\310\244\316\300\334\302\263\244\254\300\332\244\354\244\336\244\267\244\277",
|
||||
|
||||
(unsigned char *)"\305\320\317\277",
|
||||
(unsigned char *)" \310\317\260\317\244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
|
||||
(unsigned char *)" \264\301\273\372 [%s] : \306\311\244\337\306\376\316\317 ",
|
||||
(unsigned char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s] (y/n)? ",
|
||||
(unsigned char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] (y/n)? ",
|
||||
(unsigned char *)" \312\270\313\241\276\360\312\363 : 1.\314\276\273\354 2.\314\276\273\372 3.\314\276\301\260 4.\303\317\314\276 5.\245\265\312\321\306\260\273\354",
|
||||
(unsigned char *)" \305\320\317\277\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char *)" \306\311\244\337\306\376\316\317 ",
|
||||
(unsigned char *)" 1",
|
||||
(unsigned char *)"y",
|
||||
(unsigned char *)" \306\261\260\354\244\316\303\261\270\354\244\254\244\271\244\307\244\313\302\270\272\337\244\267\244\306\244\244\244\336\244\271",
|
||||
(unsigned char *)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \244\263\244\354\260\312\276\345\306\261\244\270\306\311\244\337\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \244\263\244\354\260\312\276\345\245\346\241\274\245\266\274\255\275\361\244\313\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
|
||||
(unsigned char *)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)",",
|
||||
(unsigned char*)" ",
|
||||
(unsigned char*)" ",
|
||||
(unsigned char*)" \302\263\244\261\244\336\244\271\244\253? y",
|
||||
|
||||
(unsigned char*)"\245\265\241\274\245\320\241\274\244\254\273\340\244\313\244\336\244\267\244\277\241\243",
|
||||
(unsigned char*)"\245\265\241\274\245\320\241\274\244\313\300\334\302\263\272\321\244\307\244\271\241\243",
|
||||
(unsigned char*)"\245\265\241\274\245\320\241\274\244\330\244\316\300\334\302\263\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char*)"\245\341\245\244\245\363\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
(unsigned char*)"\245\346\241\274\245\266\241\246\245\307\245\243\245\354\245\257\245\310\245\352\244\316\272\356\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char*)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char*)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
(unsigned char*)"\263\330\275\254\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char*)"\263\330\275\254\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
|
||||
(unsigned char *)"\276\303\265\356",
|
||||
(unsigned char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s]\244\362\276\303\265\356\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char *)" \273\330\304\352\244\265\244\354\244\277\306\311\244\337\241\246\264\301\273\372\244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\273\244\363",
|
||||
(unsigned char *)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
|
||||
(unsigned char *)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char *)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
|
||||
(unsigned char*)"\312\324\275\270 ",
|
||||
(unsigned char*)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
|
||||
(unsigned char*)" \312\324\275\270\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271",
|
||||
(unsigned char*)"$$",
|
||||
|
||||
(unsigned char*)"on",
|
||||
(unsigned char*)"off",
|
||||
|
||||
(unsigned char *)"\244\362\306\311\244\337\271\376\244\337\244\336\244\267\244\277",
|
||||
(unsigned char *)"\244\362\306\311\244\337\271\376\244\341\244\336\244\273\244\363\244\307\244\267\244\277",
|
||||
(unsigned char *)"\245\273\245\303\245\310\245\242\245\303\245\327\245\325\245\241\245\244\245\353\244\254\244\242\244\352\244\336\244\273\244\363 ",
|
||||
(unsigned char*)"\314\276\273\354",
|
||||
(unsigned char*)"\314\276\273\372",
|
||||
(unsigned char*)"\314\276\301\260",
|
||||
(unsigned char*)"\303\317\314\276",
|
||||
(unsigned char*)"\245\265\312\321\306\260\273\354",
|
||||
|
||||
(unsigned char*)"",
|
||||
(unsigned char*)"F1",
|
||||
(unsigned char*)"F2",
|
||||
(unsigned char*)"F3",
|
||||
(unsigned char*)"F4",
|
||||
(unsigned char*)"F5",
|
||||
(unsigned char*)"F6",
|
||||
(unsigned char*)"F7",
|
||||
(unsigned char*)"F8",
|
||||
(unsigned char*)"F9",
|
||||
(unsigned char*)"F10",
|
||||
(unsigned char*)"F11",
|
||||
(unsigned char*)"F12",
|
||||
(unsigned char*)"F13",
|
||||
(unsigned char*)"F14",
|
||||
(unsigned char*)"F15",
|
||||
(unsigned char*)"F16",
|
||||
(unsigned char*)"F17",
|
||||
(unsigned char*)"F18",
|
||||
(unsigned char*)"F19",
|
||||
(unsigned char*)"F20",
|
||||
(unsigned char*)"Select",
|
||||
(unsigned char*)"Kanji",
|
||||
(unsigned char*)"Cancel",
|
||||
(unsigned char*)"Execute",
|
||||
(unsigned char*)"Up",
|
||||
(unsigned char*)"Down",
|
||||
(unsigned char*)"Right",
|
||||
(unsigned char*)"Left",
|
||||
|
||||
(unsigned char *)"Change weight (1-9) current weight %d ",
|
||||
(unsigned char*)"start",
|
||||
(unsigned char*)"henkan",
|
||||
(unsigned char*)"muhen",
|
||||
(unsigned char*)"kettei",
|
||||
(unsigned char*)"hira",
|
||||
(unsigned char*)"halpha",
|
||||
(unsigned char*)"zalpha",
|
||||
(unsigned char*)"hkata",
|
||||
(unsigned char*)"zkata",
|
||||
(unsigned char*)"code",
|
||||
(unsigned char*)"etc",
|
||||
(unsigned char*)"right",
|
||||
(unsigned char*)"left",
|
||||
(unsigned char*)"kaku",
|
||||
(unsigned char*)"shuku",
|
||||
(unsigned char*)"edit",
|
||||
(unsigned char*)"toggle",
|
||||
(unsigned char*)"wrapback",
|
||||
(unsigned char*)"wrap",
|
||||
(unsigned char*)"sjrc",
|
||||
(unsigned char*)"buffer",
|
||||
(unsigned char*)"toroku",
|
||||
(unsigned char*)"shoukyo",
|
||||
(unsigned char*)"help",
|
||||
(unsigned char*)"ha-kettei",
|
||||
(unsigned char*)"flush",
|
||||
(unsigned char*)"debug",
|
||||
(unsigned char*)"cancel",
|
||||
(unsigned char*)"saihenkan",
|
||||
(unsigned char*)"ignore",
|
||||
(unsigned char*)"top",
|
||||
(unsigned char*)"end",
|
||||
(unsigned char*)"reconnect",
|
||||
(unsigned char*)"kill",
|
||||
|
||||
(unsigned char*)"key",
|
||||
(unsigned char*)"escape",
|
||||
(unsigned char*)"sjxkey",
|
||||
(unsigned char*)"etckey",
|
||||
(unsigned char*)"intr",
|
||||
(unsigned char*)"bskey",
|
||||
(unsigned char*)"delkey",
|
||||
(unsigned char*)"setnormal",
|
||||
(unsigned char*)"throughnext",
|
||||
(unsigned char*)"initialmode",
|
||||
(unsigned char*)"helpmode",
|
||||
(unsigned char*)"defaultcode",
|
||||
(unsigned char*)"muhenkanmode",
|
||||
(unsigned char*)"muhenkaninedit",
|
||||
(unsigned char*)"muhenkantoggle",
|
||||
(unsigned char*)"guide",
|
||||
(unsigned char*)"forkshell",
|
||||
(unsigned char*)"execshell",
|
||||
(unsigned char*)"dictionary",
|
||||
(unsigned char*)"userdic",
|
||||
(unsigned char*)"maindic",
|
||||
(unsigned char*)"romaji",
|
||||
(unsigned char*)"bstudy",
|
||||
(unsigned char*)"silent",
|
||||
(unsigned char*)"flushafterconversion",
|
||||
(unsigned char*)"rkerrbell",
|
||||
(unsigned char*)"server",
|
||||
|
||||
(unsigned char*)"shiftjis",
|
||||
(unsigned char*)"sjis",
|
||||
(unsigned char*)"euc",
|
||||
(unsigned char*)"euc2",
|
||||
(unsigned char*)"jis",
|
||||
(unsigned char*)"jis2",
|
||||
(unsigned char*)"kuten",
|
||||
(unsigned char*)"kuten2",
|
||||
|
||||
(unsigned char *)"\272\306\300\334\302\263 ",
|
||||
(unsigned char *)" \245\265\241\274\245\320\314\276 [%s] \244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
|
||||
(unsigned char *)" \245\265\241\274\245\320 [%s] \244\313\300\334\302\263\244\267\244\336\244\267\244\277 ",
|
||||
(unsigned char *)"\245\265\241\274\245\320 [%s] \244\310\244\316\300\334\302\263\244\254\300\332\244\354\244\336\244\267\244\277",
|
||||
(unsigned char*)"buff",
|
||||
(unsigned char*)"unbuff",
|
||||
(unsigned char*)"direct",
|
||||
|
||||
(unsigned char *)" ",
|
||||
(unsigned char *)" ",
|
||||
(unsigned char *)" \302\263\244\261\244\336\244\271\244\253? y",
|
||||
(unsigned char*)"sj2",
|
||||
(unsigned char*)"shift",
|
||||
|
||||
(unsigned char*)"function",
|
||||
|
||||
(unsigned char *)"\245\265\241\274\245\320\241\274\244\254\273\340\244\313\244\336\244\267\244\277\241\243",
|
||||
(unsigned char *)"\245\265\241\274\245\320\241\274\244\313\300\334\302\263\272\321\244\307\244\271\241\243",
|
||||
(unsigned char *)"\245\265\241\274\245\320\241\274\244\330\244\316\300\334\302\263\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char *)"\245\341\245\244\245\363\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
(unsigned char *)"\245\346\241\274\245\266\241\246\245\307\245\243\245\354\245\257\245\310\245\352\244\316\272\356\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char *)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char *)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
(unsigned char *)"\263\330\275\254\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
|
||||
(unsigned char *)"\263\330\275\254\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
|
||||
|
||||
|
||||
|
||||
(unsigned char *)"\312\324\275\270 ",
|
||||
(unsigned char *)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
|
||||
|
||||
(unsigned char *)" \312\324\275\270\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271",
|
||||
(unsigned char *)"$$",
|
||||
|
||||
|
||||
(unsigned char *)"on",
|
||||
(unsigned char *)"off",
|
||||
|
||||
|
||||
(unsigned char *)"\314\276\273\354",
|
||||
(unsigned char *)"\314\276\273\372",
|
||||
(unsigned char *)"\314\276\301\260",
|
||||
(unsigned char *)"\303\317\314\276",
|
||||
(unsigned char *)"\245\265\312\321\306\260\273\354",
|
||||
|
||||
|
||||
(unsigned char *)"",
|
||||
(unsigned char *)"F1",
|
||||
(unsigned char *)"F2",
|
||||
(unsigned char *)"F3",
|
||||
(unsigned char *)"F4",
|
||||
(unsigned char *)"F5",
|
||||
(unsigned char *)"F6",
|
||||
(unsigned char *)"F7",
|
||||
(unsigned char *)"F8",
|
||||
(unsigned char *)"F9",
|
||||
(unsigned char *)"F10",
|
||||
(unsigned char *)"F11",
|
||||
(unsigned char *)"F12",
|
||||
(unsigned char *)"F13",
|
||||
(unsigned char *)"F14",
|
||||
(unsigned char *)"F15",
|
||||
(unsigned char *)"F16",
|
||||
(unsigned char *)"F17",
|
||||
(unsigned char *)"F18",
|
||||
(unsigned char *)"F19",
|
||||
(unsigned char *)"F20",
|
||||
(unsigned char *)"Select",
|
||||
(unsigned char *)"Kanji",
|
||||
(unsigned char *)"Cancel",
|
||||
(unsigned char *)"Execute",
|
||||
(unsigned char *)"Up",
|
||||
(unsigned char *)"Down",
|
||||
(unsigned char *)"Right",
|
||||
(unsigned char *)"Left",
|
||||
|
||||
(unsigned char *)"start",
|
||||
(unsigned char *)"henkan",
|
||||
(unsigned char *)"muhen",
|
||||
(unsigned char *)"kettei",
|
||||
(unsigned char *)"hira",
|
||||
(unsigned char *)"halpha",
|
||||
(unsigned char *)"zalpha",
|
||||
(unsigned char *)"hkata",
|
||||
(unsigned char *)"zkata",
|
||||
(unsigned char *)"code",
|
||||
(unsigned char *)"etc",
|
||||
(unsigned char *)"right",
|
||||
(unsigned char *)"left",
|
||||
(unsigned char *)"kaku",
|
||||
(unsigned char *)"syuku",
|
||||
(unsigned char *)"edit",
|
||||
(unsigned char *)"toggle",
|
||||
(unsigned char *)"wrapback",
|
||||
(unsigned char *)"wrap",
|
||||
(unsigned char *)"sjrc",
|
||||
(unsigned char *)"buffer",
|
||||
(unsigned char *)"toroku",
|
||||
(unsigned char *)"syoukyo",
|
||||
(unsigned char *)"help",
|
||||
(unsigned char *)"ha-kettei",
|
||||
(unsigned char *)"flush",
|
||||
(unsigned char *)"debug",
|
||||
(unsigned char *)"cancel",
|
||||
(unsigned char *)"saihenkan",
|
||||
(unsigned char *)"ignore",
|
||||
(unsigned char *)"top",
|
||||
(unsigned char *)"end",
|
||||
(unsigned char *)"reconnect",
|
||||
(unsigned char *)"kill",
|
||||
|
||||
|
||||
(unsigned char *)"key",
|
||||
(unsigned char *)"escape",
|
||||
(unsigned char *)"sjxkey",
|
||||
(unsigned char *)"etckey",
|
||||
(unsigned char *)"intr",
|
||||
(unsigned char *)"bskey",
|
||||
(unsigned char *)"delkey",
|
||||
(unsigned char *)"setnormal",
|
||||
(unsigned char *)"throughnext",
|
||||
(unsigned char *)"initialmode",
|
||||
(unsigned char *)"helpmode",
|
||||
(unsigned char *)"defaultcode",
|
||||
(unsigned char *)"muhenkanmode",
|
||||
(unsigned char *)"muhenkaninedit",
|
||||
(unsigned char *)"muhenkantoggle",
|
||||
(unsigned char *)"guide",
|
||||
(unsigned char *)"forkshell",
|
||||
(unsigned char *)"execshell",
|
||||
(unsigned char *)"dictionary",
|
||||
(unsigned char *)"userdic",
|
||||
(unsigned char *)"maindic",
|
||||
(unsigned char *)"romaji",
|
||||
(unsigned char *)"bstudy",
|
||||
(unsigned char *)"silent",
|
||||
(unsigned char *)"flushafterconversion",
|
||||
(unsigned char *)"rkerrbell",
|
||||
(unsigned char *)"server",
|
||||
|
||||
(unsigned char *)"shiftjis",
|
||||
(unsigned char *)"sjis",
|
||||
(unsigned char *)"euc",
|
||||
(unsigned char *)"euc2",
|
||||
(unsigned char *)"jis",
|
||||
(unsigned char *)"jis2",
|
||||
(unsigned char *)"kuten",
|
||||
(unsigned char *)"kuten2",
|
||||
|
||||
(unsigned char *)"buff",
|
||||
(unsigned char *)"unbuff",
|
||||
(unsigned char *)"direct",
|
||||
|
||||
(unsigned char *)"sj2",
|
||||
(unsigned char *)"shift",
|
||||
|
||||
(unsigned char *)"function",
|
||||
|
||||
(unsigned char *)"unbuffer",
|
||||
(unsigned char *)"funcetc"
|
||||
(unsigned char*)"unbuffer",
|
||||
(unsigned char*)"funcetc"
|
||||
|
||||
};
|
||||
|
||||
|
||||
#define CURMESSAGES 182
|
||||
wchar16_t *WcMessages[CURMESSAGES];
|
||||
wchar16_t* WcMessages[CURMESSAGES];
|
||||
|
||||
#define CURWCVTKEY 29
|
||||
struct wcvtkey wcvtkeytbl[CURWCVTKEY];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_wcvtkey()
|
||||
{
|
||||
int init_wcvtkey() {
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < CURWCVTKEY; i++) {
|
||||
for(i = 0; i < CURWCVTKEY; i++) {
|
||||
wcvtkeytbl[i].key_seq[0] = 0;
|
||||
}
|
||||
wcvtkeytbl[0].key_word = WCF1;
|
||||
wcvtkeytbl[1].key_word = WCF2;
|
||||
wcvtkeytbl[2].key_word = WCF3;
|
||||
wcvtkeytbl[3].key_word = WCF4;
|
||||
wcvtkeytbl[4].key_word = WCF5;
|
||||
wcvtkeytbl[5].key_word = WCF6;
|
||||
wcvtkeytbl[6].key_word = WCF7;
|
||||
wcvtkeytbl[7].key_word = WCF8;
|
||||
wcvtkeytbl[8].key_word = WCF9;
|
||||
wcvtkeytbl[9].key_word = WCF10;
|
||||
wcvtkeytbl[0].key_word = WCF1;
|
||||
wcvtkeytbl[1].key_word = WCF2;
|
||||
wcvtkeytbl[2].key_word = WCF3;
|
||||
wcvtkeytbl[3].key_word = WCF4;
|
||||
wcvtkeytbl[4].key_word = WCF5;
|
||||
wcvtkeytbl[5].key_word = WCF6;
|
||||
wcvtkeytbl[6].key_word = WCF7;
|
||||
wcvtkeytbl[7].key_word = WCF8;
|
||||
wcvtkeytbl[8].key_word = WCF9;
|
||||
wcvtkeytbl[9].key_word = WCF10;
|
||||
wcvtkeytbl[10].key_word = WCF11;
|
||||
wcvtkeytbl[11].key_word = WCF12;
|
||||
wcvtkeytbl[12].key_word = WCF13;
|
||||
|
|
@ -318,150 +287,191 @@ init_wcvtkey()
|
|||
wcvtkeytbl[28].key_word = NULL;
|
||||
}
|
||||
|
||||
wchar16_t *comstr[KEY_OTHER];
|
||||
wchar16_t* comstr[KEY_OTHER];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_comstr()
|
||||
{
|
||||
comstr[0] = WCStart; comstr[1] = WCHenkan; comstr[2] = WCMuhen;
|
||||
comstr[3] = WCKettei; comstr[4] = WCHira; comstr[5] = WCHalpha;
|
||||
comstr[6] = WCZalpha; comstr[7] = WCHkata; comstr[8] = WCZkata;
|
||||
comstr[9] = WCCode; comstr[10] = WCEtc; comstr[11] = WCRightl;
|
||||
comstr[12] = WCLeftl; comstr[13] = WCKaku; comstr[14] = WCSyuku;
|
||||
comstr[15] = WCEdit; comstr[16] = WCToggle; comstr[17] = WCWrapback;
|
||||
comstr[18] = WCWrap; comstr[19] = WCSjrc; comstr[20] = WCBuffer;
|
||||
comstr[21] = WCToroku; comstr[22] = WCSyoukyo; comstr[23] = WCHelp;
|
||||
comstr[24] = WCHaKettei; comstr[25] = WCFlush; comstr[26] = WCDebug;
|
||||
comstr[27] = WCCancell; comstr[28] = WCSaihenkan; comstr[29] = WCIgnore;
|
||||
comstr[30] = WCTop; comstr[31] = WCEnd; comstr[32] = WCReconnect;
|
||||
comstr[33] = WCKill; comstr[34] = WCKara;
|
||||
int init_comstr() {
|
||||
comstr[0] = WCStart;
|
||||
comstr[1] = WCHenkan;
|
||||
comstr[2] = WCMuhen;
|
||||
comstr[3] = WCKettei;
|
||||
comstr[4] = WCHira;
|
||||
comstr[5] = WCHalpha;
|
||||
comstr[6] = WCZalpha;
|
||||
comstr[7] = WCHkata;
|
||||
comstr[8] = WCZkata;
|
||||
comstr[9] = WCCode;
|
||||
comstr[10] = WCEtc;
|
||||
comstr[11] = WCRightl;
|
||||
comstr[12] = WCLeftl;
|
||||
comstr[13] = WCKaku;
|
||||
comstr[14] = WCSyuku;
|
||||
comstr[15] = WCEdit;
|
||||
comstr[16] = WCToggle;
|
||||
comstr[17] = WCWrapback;
|
||||
comstr[18] = WCWrap;
|
||||
comstr[19] = WCSjrc;
|
||||
comstr[20] = WCBuffer;
|
||||
comstr[21] = WCToroku;
|
||||
comstr[22] = WCShoukyo;
|
||||
comstr[23] = WCHelp;
|
||||
comstr[24] = WCHaKettei;
|
||||
comstr[25] = WCFlush;
|
||||
comstr[26] = WCDebug;
|
||||
comstr[27] = WCCancell;
|
||||
comstr[28] = WCSaihenkan;
|
||||
comstr[29] = WCIgnore;
|
||||
comstr[30] = WCTop;
|
||||
comstr[31] = WCEnd;
|
||||
comstr[32] = WCReconnect;
|
||||
comstr[33] = WCKill;
|
||||
comstr[34] = WCKara;
|
||||
}
|
||||
|
||||
struct valtbl hin_val[5];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_hin_val()
|
||||
{
|
||||
hin_val[0].keyword = WCMeishi; hin_val[0].ivalue = SJ3_H_NRMNOUN;
|
||||
hin_val[1].keyword = WCMyouji; hin_val[1].ivalue = SJ3_H_LNAME;
|
||||
hin_val[2].keyword = WCNamae; hin_val[2].ivalue = SJ3_H_FNAME;
|
||||
hin_val[3].keyword = WCTimei; hin_val[3].ivalue = SJ3_H_LOCNAME;
|
||||
hin_val[4].keyword = WCSahen; hin_val[4].ivalue = SJ3_H_SILVERB;
|
||||
int init_hin_val() {
|
||||
hin_val[0].keyword = WCMeishi;
|
||||
hin_val[0].ivalue = SJ3_H_NRMNOUN;
|
||||
hin_val[1].keyword = WCMyouji;
|
||||
hin_val[1].ivalue = SJ3_H_LNAME;
|
||||
hin_val[2].keyword = WCNamae;
|
||||
hin_val[2].ivalue = SJ3_H_FNAME;
|
||||
hin_val[3].keyword = WCTimei;
|
||||
hin_val[3].ivalue = SJ3_H_LOCNAME;
|
||||
hin_val[4].keyword = WCSahen;
|
||||
hin_val[4].ivalue = SJ3_H_SILVERB;
|
||||
}
|
||||
|
||||
|
||||
extern int set_func(), set_etckeys(), set_intr(),
|
||||
set_delkey(), set_goto(), set_trap(), set_init_mode(),
|
||||
set_helpmenu(), set_defcode(), set_muhenkan(), set_muedit(),
|
||||
set_m_toggle(), set_guide(), set_forkshell(), set_bstudy(),
|
||||
set_silent(), set_flush_conversion(), set_rkebell(), set_server(),
|
||||
set_dict();
|
||||
extern int set_func(), set_etckeys(), set_intr(),
|
||||
set_delkey(), set_goto(), set_trap(), set_init_mode(),
|
||||
set_helpmenu(), set_defcode(), set_muhenkan(), set_muedit(),
|
||||
set_m_toggle(), set_guide(), set_forkshell(), set_bstudy(),
|
||||
set_silent(), set_flush_conversion(), set_rkebell(), set_server(),
|
||||
set_dict();
|
||||
#define CURFUNCS 29
|
||||
struct functbl funcs[CURFUNCS];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_funcs()
|
||||
{
|
||||
funcs[0].keyword = WCKey; funcs[0].func = set_func;
|
||||
funcs[1].keyword = WCEscape; funcs[1].func = set_func;
|
||||
funcs[2].keyword = WCEtckey; funcs[2].func = set_etckeys;
|
||||
funcs[3].keyword = WCIntr; funcs[3].func = set_intr;
|
||||
funcs[4].keyword = WCDelkey; funcs[4].func = set_delkey;
|
||||
funcs[5].keyword = WCSetnormal; funcs[5].func = set_goto;
|
||||
funcs[6].keyword = WCThroughnext; funcs[6].func = set_trap;
|
||||
funcs[7].keyword = WCInitialmode; funcs[7].func = set_init_mode;
|
||||
funcs[8].keyword = WCHelpmode; funcs[8].func = set_helpmenu;
|
||||
funcs[9].keyword = WCDefaultcode; funcs[9].func = set_defcode;
|
||||
funcs[10].keyword = WCMuhenkanmode; funcs[10].func = set_muhenkan;
|
||||
funcs[11].keyword = WCMuhenkaninedit; funcs[11].func = set_muedit;
|
||||
funcs[12].keyword = WCMuhenkantoggle; funcs[12].func = set_m_toggle;
|
||||
funcs[13].keyword = WCGuide; funcs[13].func = set_guide;
|
||||
funcs[14].keyword = WCForkshell; funcs[14].func = set_forkshell;
|
||||
funcs[15].keyword = WCExecshell; funcs[15].func = set_forkshell;
|
||||
funcs[16].keyword = WCBstudy; funcs[16].func = set_bstudy;
|
||||
funcs[17].keyword = WCSilent; funcs[17].func = set_silent;
|
||||
funcs[18].keyword = WCFlushafterconversion; funcs[18].func = set_flush_conversion;
|
||||
funcs[19].keyword = WCRkerrbell; funcs[19].func = set_rkebell;
|
||||
funcs[20].keyword = WCServer; funcs[20].func = set_server;
|
||||
funcs[21].keyword = WCDictionary; funcs[21].func = set_dict;
|
||||
funcs[22].keyword = NULL; funcs[22].func = NULL;
|
||||
int init_funcs() {
|
||||
funcs[0].keyword = WCKey;
|
||||
funcs[0].func = set_func;
|
||||
funcs[1].keyword = WCEscape;
|
||||
funcs[1].func = set_func;
|
||||
funcs[2].keyword = WCEtckey;
|
||||
funcs[2].func = set_etckeys;
|
||||
funcs[3].keyword = WCIntr;
|
||||
funcs[3].func = set_intr;
|
||||
funcs[4].keyword = WCDelkey;
|
||||
funcs[4].func = set_delkey;
|
||||
funcs[5].keyword = WCSetnormal;
|
||||
funcs[5].func = set_goto;
|
||||
funcs[6].keyword = WCThroughnext;
|
||||
funcs[6].func = set_trap;
|
||||
funcs[7].keyword = WCInitialmode;
|
||||
funcs[7].func = set_init_mode;
|
||||
funcs[8].keyword = WCHelpmode;
|
||||
funcs[8].func = set_helpmenu;
|
||||
funcs[9].keyword = WCDefaultcode;
|
||||
funcs[9].func = set_defcode;
|
||||
funcs[10].keyword = WCMuhenkanmode;
|
||||
funcs[10].func = set_muhenkan;
|
||||
funcs[11].keyword = WCMuhenkaninedit;
|
||||
funcs[11].func = set_muedit;
|
||||
funcs[12].keyword = WCMuhenkantoggle;
|
||||
funcs[12].func = set_m_toggle;
|
||||
funcs[13].keyword = WCGuide;
|
||||
funcs[13].func = set_guide;
|
||||
funcs[14].keyword = WCForkshell;
|
||||
funcs[14].func = set_forkshell;
|
||||
funcs[15].keyword = WCExecshell;
|
||||
funcs[15].func = set_forkshell;
|
||||
funcs[16].keyword = WCBstudy;
|
||||
funcs[16].func = set_bstudy;
|
||||
funcs[17].keyword = WCSilent;
|
||||
funcs[17].func = set_silent;
|
||||
funcs[18].keyword = WCFlushafterconversion;
|
||||
funcs[18].func = set_flush_conversion;
|
||||
funcs[19].keyword = WCRkerrbell;
|
||||
funcs[19].func = set_rkebell;
|
||||
funcs[20].keyword = WCServer;
|
||||
funcs[20].func = set_server;
|
||||
funcs[21].keyword = WCDictionary;
|
||||
funcs[21].func = set_dict;
|
||||
funcs[22].keyword = NULL;
|
||||
funcs[22].func = NULL;
|
||||
}
|
||||
|
||||
struct valtbl mode_val[5];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_mode_val()
|
||||
{
|
||||
mode_val[0].keyword = WCHalpha; mode_val[0].ivalue = MODE_HALPHA;
|
||||
mode_val[1].keyword = WCZalpha; mode_val[1].ivalue = MODE_ZALPHA;
|
||||
mode_val[2].keyword = WCHkata; mode_val[2].ivalue = MODE_HKATA;
|
||||
mode_val[3].keyword = WCZkata; mode_val[3].ivalue = MODE_ZKATA;
|
||||
mode_val[4].keyword = WCHira; mode_val[4].ivalue = MODE_ZHIRA;
|
||||
int init_mode_val() {
|
||||
mode_val[0].keyword = WCHalpha;
|
||||
mode_val[0].ivalue = MODE_HALPHA;
|
||||
mode_val[1].keyword = WCZalpha;
|
||||
mode_val[1].ivalue = MODE_ZALPHA;
|
||||
mode_val[2].keyword = WCHkata;
|
||||
mode_val[2].ivalue = MODE_HKATA;
|
||||
mode_val[3].keyword = WCZkata;
|
||||
mode_val[3].ivalue = MODE_ZKATA;
|
||||
mode_val[4].keyword = WCHira;
|
||||
mode_val[4].ivalue = MODE_ZHIRA;
|
||||
}
|
||||
|
||||
struct valtbl code_val[8];
|
||||
|
||||
|
||||
|
||||
int
|
||||
init_code_val()
|
||||
{
|
||||
code_val[0].keyword = WCShiftjis; code_val[0].ivalue = CODE_SJIS;
|
||||
code_val[1].keyword = WCSjis; code_val[1].ivalue = CODE_SJIS;
|
||||
code_val[2].keyword = WCEuc; code_val[2].ivalue = CODE_EUC;
|
||||
code_val[3].keyword = WCEuc2; code_val[3].ivalue = CODE_EUC2;
|
||||
code_val[4].keyword = WCJis; code_val[4].ivalue = CODE_JIS;
|
||||
code_val[5].keyword = WCJis2; code_val[5].ivalue = CODE_JIS2;
|
||||
code_val[6].keyword = WCKuten; code_val[6].ivalue = CODE_KUTEN;
|
||||
code_val[7].keyword = WCKuten2; code_val[7].ivalue = CODE_KUTEN2;
|
||||
int init_code_val() {
|
||||
code_val[0].keyword = WCShiftjis;
|
||||
code_val[0].ivalue = CODE_SJIS;
|
||||
code_val[1].keyword = WCSjis;
|
||||
code_val[1].ivalue = CODE_SJIS;
|
||||
code_val[2].keyword = WCEuc;
|
||||
code_val[2].ivalue = CODE_EUC;
|
||||
code_val[3].keyword = WCEuc2;
|
||||
code_val[3].ivalue = CODE_EUC2;
|
||||
code_val[4].keyword = WCJis;
|
||||
code_val[4].ivalue = CODE_JIS;
|
||||
code_val[5].keyword = WCJis2;
|
||||
code_val[5].ivalue = CODE_JIS2;
|
||||
code_val[6].keyword = WCKuten;
|
||||
code_val[6].ivalue = CODE_KUTEN;
|
||||
code_val[7].keyword = WCKuten2;
|
||||
code_val[7].ivalue = CODE_KUTEN2;
|
||||
}
|
||||
|
||||
int
|
||||
init_messages()
|
||||
{
|
||||
int init_messages() {
|
||||
#define LOCALELEN 20
|
||||
char cur_loc[LOCALELEN];
|
||||
char *loc;
|
||||
short message_len[CURMESSAGES];
|
||||
int ret;
|
||||
int i;
|
||||
int all_len = 0;
|
||||
int saved_locale = 0;
|
||||
char cur_loc[LOCALELEN];
|
||||
char* loc;
|
||||
short message_len[CURMESSAGES];
|
||||
int ret;
|
||||
int i;
|
||||
int all_len = 0;
|
||||
int saved_locale = 0;
|
||||
extern int current_locale;
|
||||
|
||||
if (current_locale != LC_CTYPE_EUC) {
|
||||
saved_locale = current_locale;
|
||||
if(current_locale != LC_CTYPE_EUC) {
|
||||
saved_locale = current_locale;
|
||||
current_locale = LC_CTYPE_EUC;
|
||||
#ifdef __sony_news
|
||||
strncpy((char *)cur_loc, setlocale(LC_CTYPE, NULL), LOCALELEN);
|
||||
strncpy((char*)cur_loc, setlocale(LC_CTYPE, NULL), LOCALELEN);
|
||||
loc = setlocale(LC_CTYPE, "ja_JP.EUC");
|
||||
#endif
|
||||
}
|
||||
for (i = 0; i < CURMESSAGES; i++) {
|
||||
message_len[i] = jstrlen((char *)EucMessages[i]) + 1;
|
||||
for(i = 0; i < CURMESSAGES; i++) {
|
||||
message_len[i] = jstrlen((char*)EucMessages[i]) + 1;
|
||||
all_len += message_len[i];
|
||||
}
|
||||
|
||||
WcMessages[0] = (wchar16_t *) malloc(all_len * sizeof(wchar16_t));
|
||||
if (WcMessages[0] == NULL)
|
||||
goto Fail;
|
||||
WcMessages[0] = (wchar16_t*)malloc(all_len * sizeof(wchar16_t));
|
||||
if(WcMessages[0] == NULL)
|
||||
goto Fail;
|
||||
|
||||
ret = (int) mbstowcs(WcMessages[0], (char *)EucMessages[0], message_len[0]);
|
||||
if (ret < -1)
|
||||
goto Fail;
|
||||
for (i = 1; i < CURMESSAGES; i++) {
|
||||
WcMessages[i] = WcMessages[i-1] + message_len[i-1];
|
||||
ret = mbstowcs(WcMessages[i], (char *)EucMessages[i], message_len[i]);
|
||||
if (ret < -1)
|
||||
goto Fail;
|
||||
ret = (int)mbstowcs(WcMessages[0], (char*)EucMessages[0], message_len[0]);
|
||||
if(ret < -1)
|
||||
goto Fail;
|
||||
for(i = 1; i < CURMESSAGES; i++) {
|
||||
WcMessages[i] = WcMessages[i - 1] + message_len[i - 1];
|
||||
ret = mbstowcs(WcMessages[i], (char*)EucMessages[i], message_len[i]);
|
||||
if(ret < -1)
|
||||
goto Fail;
|
||||
}
|
||||
|
||||
init_wcvtkey();
|
||||
|
|
@ -471,20 +481,19 @@ init_messages()
|
|||
init_mode_val();
|
||||
init_code_val();
|
||||
|
||||
if (saved_locale) {
|
||||
if(saved_locale) {
|
||||
current_locale = saved_locale;
|
||||
#ifdef __sony_news
|
||||
setlocale(LC_CTYPE, cur_loc);
|
||||
setlocale(LC_CTYPE, cur_loc);
|
||||
#endif
|
||||
}
|
||||
return TRUE;
|
||||
Fail:
|
||||
if (saved_locale) {
|
||||
if(saved_locale) {
|
||||
current_locale = saved_locale;
|
||||
#ifdef __sony_news
|
||||
setlocale(LC_CTYPE, cur_loc);
|
||||
setlocale(LC_CTYPE, cur_loc);
|
||||
#endif
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
105
file.c
105
file.c
|
|
@ -27,13 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: file.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1995/02/03 07:38:32 $
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
|
@ -41,123 +34,105 @@
|
|||
#include <sys/stat.h>
|
||||
#include "dicttool.h"
|
||||
|
||||
typedef struct filelist {
|
||||
FILE *fp;
|
||||
char *fname;
|
||||
struct filelist *next;
|
||||
typedef struct filelist {
|
||||
FILE* fp;
|
||||
char* fname;
|
||||
struct filelist* next;
|
||||
} FileList;
|
||||
|
||||
static FileList *flist = NULL;
|
||||
static FileList* flist = NULL;
|
||||
|
||||
static char*
|
||||
get_fname(FILE* fp)
|
||||
{
|
||||
FileList *p;
|
||||
get_fname(FILE* fp) {
|
||||
FileList* p;
|
||||
|
||||
for (p = flist ; p ; p = p -> next)
|
||||
if (p -> fp == fp) return p -> fname;
|
||||
for(p = flist; p; p = p->next)
|
||||
if(p->fp == fp) return p->fname;
|
||||
return "some file";
|
||||
}
|
||||
|
||||
FILE*
|
||||
Fopen(char* filename, char* type)
|
||||
{
|
||||
FILE *fp;
|
||||
FileList *fl;
|
||||
FILE* Fopen(char* filename, char* type) {
|
||||
FILE* fp;
|
||||
FileList* fl;
|
||||
|
||||
if (!(fp = fopen(filename, type))) {
|
||||
if(!(fp = fopen(filename, type))) {
|
||||
fprintf(stderr, "Can't open %s mode \"%s\"\n", filename, type);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fl = (FileList *)Malloc(sizeof(*fl));
|
||||
fl -> fname = Malloc(strlen(filename) + 1);
|
||||
strcpy(fl -> fname, filename);
|
||||
fl -> fp = fp;
|
||||
fl -> next = flist;
|
||||
fl = (FileList*)Malloc(sizeof(*fl));
|
||||
fl->fname = Malloc(strlen(filename) + 1);
|
||||
strcpy(fl->fname, filename);
|
||||
fl->fp = fp;
|
||||
fl->next = flist;
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
void
|
||||
Fclose(FILE* fp)
|
||||
{
|
||||
void Fclose(FILE* fp) {
|
||||
FileList *p, *q;
|
||||
|
||||
if (fclose(fp) == EOF) {
|
||||
if(fclose(fp) == EOF) {
|
||||
fprintf(stderr, "Close error in %s\n", get_fname(fp));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
for (p = flist, q = NULL ; p ; q = p, p = p -> next) {
|
||||
if (p -> fp == fp) {
|
||||
if (q)
|
||||
q -> next = p -> next;
|
||||
for(p = flist, q = NULL; p; q = p, p = p->next) {
|
||||
if(p->fp == fp) {
|
||||
if(q)
|
||||
q->next = p->next;
|
||||
else
|
||||
flist = p -> next;
|
||||
free(p -> fname);
|
||||
flist = p->next;
|
||||
free(p->fname);
|
||||
free(p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
Fseek(FILE* fp, long ofs, int ptr)
|
||||
{
|
||||
if (fseek(fp, ofs, ptr) == 0) return 0;
|
||||
int Fseek(FILE* fp, long ofs, int ptr) {
|
||||
if(fseek(fp, ofs, ptr) == 0) return 0;
|
||||
|
||||
fprintf(stderr, "Seek error in %s\n", get_fname(fp));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
long
|
||||
Ftell(FILE* fp)
|
||||
{
|
||||
long Ftell(FILE* fp) {
|
||||
return ftell(fp);
|
||||
}
|
||||
|
||||
off_t /* XXX: just looked in FreeBSD's sys/stat.h, need to check SUS spec. */
|
||||
Fsize(char* filename)
|
||||
{
|
||||
struct stat buf;
|
||||
Fsize(char* filename) {
|
||||
struct stat buf;
|
||||
|
||||
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
if (stat(filename, &buf) == 0) return (long)buf.st_size;
|
||||
if(stat(filename, &buf) == 0) return (long)buf.st_size;
|
||||
#else
|
||||
if (stat(filename, &buf) == 0) return buf.st_size;
|
||||
if(stat(filename, &buf) == 0) return buf.st_size;
|
||||
#endif
|
||||
|
||||
fprintf(stderr, "Stat error in %s\n", filename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int
|
||||
Fread(char* p, int s, int n, FILE* fp)
|
||||
{
|
||||
if (fread(p, s, n, fp) == n) return n;
|
||||
int Fread(char* p, int s, int n, FILE* fp) {
|
||||
if(fread(p, s, n, fp) == n) return n;
|
||||
|
||||
fprintf(stderr, "Read error in %s\n", get_fname(fp));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int
|
||||
Fwrite(char* p, int s, int n, FILE* fp)
|
||||
{
|
||||
if (fwrite(p, s, n, fp) == n) return n;
|
||||
int Fwrite(char* p, int s, int n, FILE* fp) {
|
||||
if(fwrite(p, s, n, fp) == n) return n;
|
||||
|
||||
fprintf(stderr, "Write error in %s\n", get_fname(fp));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int
|
||||
Fgetc(FILE* fp)
|
||||
{
|
||||
int Fgetc(FILE* fp) {
|
||||
return fgetc(fp);
|
||||
}
|
||||
|
||||
void
|
||||
Fflush(FILE* fp)
|
||||
{
|
||||
fflush(fp);
|
||||
void Fflush(FILE* fp) {
|
||||
fflush(fp);
|
||||
}
|
||||
|
|
|
|||
2
format.sh
Executable file
2
format.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
clang-format --verbose -i *.c *.h
|
||||
330
funckey.c
330
funckey.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: funckey.c,v $
|
||||
* $SonyRevision: 1.3 $
|
||||
* $SonyDate: 1997/01/23 11:20:53 $
|
||||
*
|
||||
* $Id: funckey.c,v 1.3 2004/07/04 08:38:33 hiroo Exp $
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include "wchar16.h"
|
||||
#include "sj2.h"
|
||||
|
|
@ -44,109 +35,103 @@
|
|||
#include "sj3.h"
|
||||
|
||||
struct cvtkey {
|
||||
char *key_word;
|
||||
char key_seq[SEQLEN];
|
||||
char* key_word;
|
||||
char key_seq[SEQLEN];
|
||||
} cvtkeytbl[] = {
|
||||
{ "F1", "" },
|
||||
{ "F2", "" },
|
||||
{ "F3", "" },
|
||||
{ "F4", "" },
|
||||
{ "F5", "" },
|
||||
{ "F6", "" },
|
||||
{ "F7", "" },
|
||||
{ "F8", "" },
|
||||
{ "F9", "" },
|
||||
{ "F10", "" },
|
||||
{ "F11", "" },
|
||||
{ "F12", "" },
|
||||
{ "F13", "" },
|
||||
{ "F14", "" },
|
||||
{ "F15", "" },
|
||||
{ "F16", "" },
|
||||
{ "F17", "" },
|
||||
{ "F18", "" },
|
||||
{ "F19", "" },
|
||||
{ "F20", "" },
|
||||
{ "Select", "" },
|
||||
{ "Kanji", "" },
|
||||
{ "Cancel", "" },
|
||||
{ "Execute", "" },
|
||||
{ "Up", "" },
|
||||
{ "Down", "" },
|
||||
{ "Right", "" },
|
||||
{ "Left", "" },
|
||||
{ NULL, "" }
|
||||
};
|
||||
{"F1", ""},
|
||||
{"F2", ""},
|
||||
{"F3", ""},
|
||||
{"F4", ""},
|
||||
{"F5", ""},
|
||||
{"F6", ""},
|
||||
{"F7", ""},
|
||||
{"F8", ""},
|
||||
{"F9", ""},
|
||||
{"F10", ""},
|
||||
{"F11", ""},
|
||||
{"F12", ""},
|
||||
{"F13", ""},
|
||||
{"F14", ""},
|
||||
{"F15", ""},
|
||||
{"F16", ""},
|
||||
{"F17", ""},
|
||||
{"F18", ""},
|
||||
{"F19", ""},
|
||||
{"F20", ""},
|
||||
{"Select", ""},
|
||||
{"Kanji", ""},
|
||||
{"Cancel", ""},
|
||||
{"Execute", ""},
|
||||
{"Up", ""},
|
||||
{"Down", ""},
|
||||
{"Right", ""},
|
||||
{"Left", ""},
|
||||
{NULL, ""}};
|
||||
|
||||
extern struct wcvtkey wcvtkeytbl[];
|
||||
|
||||
int Uvalue[UKEYNUM];
|
||||
wchar16_t Ukey[UKEYNUM][SEQLEN + 1];
|
||||
int Unumber = 0;
|
||||
int Uvalue[UKEYNUM];
|
||||
wchar16_t Ukey[UKEYNUM][SEQLEN + 1];
|
||||
int Unumber = 0;
|
||||
|
||||
int comvalue[COMNUM];
|
||||
wchar16_t comkey[COMNUM];
|
||||
int comnumber = 0;
|
||||
int comvalue[COMNUM];
|
||||
wchar16_t comkey[COMNUM];
|
||||
int comnumber = 0;
|
||||
|
||||
#define ETCKEYS 10
|
||||
int u_etckeys = 0;
|
||||
int Uetckey[ETCKEYS];
|
||||
int Uetcval[ETCKEYS];
|
||||
#define ETCKEYS 10
|
||||
int u_etckeys = 0;
|
||||
int Uetckey[ETCKEYS];
|
||||
int Uetcval[ETCKEYS];
|
||||
|
||||
extern wchar16_t* comstr[];
|
||||
|
||||
extern wchar16_t *comstr[];
|
||||
int comstrvalue[KEY_OTHER] = {
|
||||
KEY_CONV, KEY_HENKAN, KEY_MUHENKAN,
|
||||
KEY_KETTEI, KEY_ZHIRA, KEY_HALPHA,
|
||||
KEY_ZALPHA, KEY_HKATA, KEY_ZKATA,
|
||||
KEY_CODE, KEY_ETC, KEY_RIGHT,
|
||||
KEY_LEFT, KEY_UP, KEY_DOWN,
|
||||
KEY_EDIT, KEY_TOGGLE, KEY_WRAPBACK,
|
||||
KEY_WRAP, KEY_SJRC, KEY_BUFFER,
|
||||
KEY_TOROKU, KEY_SHOUKYO, KEY_HELP,
|
||||
KEY_HA_KET, KEY_FLUSH, KEY_DEBUG,
|
||||
KEY_CANCEL, KEY_RECONV, KEY_IGNORE,
|
||||
KEY_TOP, KEY_END, KEY_RECONNECT,
|
||||
KEY_KILL,
|
||||
KEY_OTHER};
|
||||
|
||||
int comstrvalue[KEY_OTHER] = {
|
||||
KEY_CONV, KEY_HENKAN, KEY_MUHENKAN,
|
||||
KEY_KETTEI, KEY_ZHIRA, KEY_HALPHA,
|
||||
KEY_ZALPHA, KEY_HKATA, KEY_ZKATA,
|
||||
KEY_CODE, KEY_ETC, KEY_RIGHT,
|
||||
KEY_LEFT, KEY_UP, KEY_DOWN,
|
||||
KEY_EDIT, KEY_TOGGLE, KEY_WRAPBACK,
|
||||
KEY_WRAP, KEY_SJRC, KEY_BUFFER,
|
||||
KEY_TOROKU, KEY_SYOUKYO, KEY_HELP,
|
||||
KEY_HA_KET, KEY_FLUSH, KEY_DEBUG,
|
||||
KEY_CANCEL, KEY_RECONV, KEY_IGNORE,
|
||||
KEY_TOP, KEY_END, KEY_RECONNECT,
|
||||
KEY_KILL,
|
||||
KEY_OTHER
|
||||
};
|
||||
void mk_cvtkey(char* term) {
|
||||
char* p;
|
||||
char line[MAXLINE], rstr[16];
|
||||
FILE* fd;
|
||||
char cvtkey_file[LONGLENGTH];
|
||||
struct cvtkey* ckeyp;
|
||||
struct wcvtkey* wckeyp;
|
||||
|
||||
|
||||
void
|
||||
mk_cvtkey(char* term)
|
||||
{
|
||||
char *p;
|
||||
char line[MAXLINE], rstr[16];
|
||||
FILE *fd;
|
||||
char cvtkey_file[LONGLENGTH];
|
||||
struct cvtkey *ckeyp;
|
||||
struct wcvtkey *wckeyp;
|
||||
|
||||
/*
|
||||
* Change a default value.
|
||||
* Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
|
||||
*/
|
||||
/*
|
||||
* Change a default value.
|
||||
* Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
|
||||
*/
|
||||
strcpy(cvtkey_file, DEFKEYFILE);
|
||||
strcpy(line, term);
|
||||
if((p = strchr(line, '-')) != NULL)
|
||||
*p = '\0';
|
||||
strcat(cvtkey_file, line);
|
||||
|
||||
if ((fd = fopen(cvtkey_file, "r")) != NULL) {
|
||||
while ((p = fgets(line, MAXLINE, fd)) != NULL) {
|
||||
if (*p == '#' ||*p == '\n' ||*p == '\0')
|
||||
if((fd = fopen(cvtkey_file, "r")) != NULL) {
|
||||
while((p = fgets(line, MAXLINE, fd)) != NULL) {
|
||||
if(*p == '#' || *p == '\n' || *p == '\0')
|
||||
continue;
|
||||
if ((p = getkey2(p, rstr)) == NULL)
|
||||
if((p = getkey2(p, rstr)) == NULL)
|
||||
continue;
|
||||
ckeyp = cvtkeytbl;
|
||||
wckeyp = wcvtkeytbl;
|
||||
ckeyp = cvtkeytbl;
|
||||
wckeyp = wcvtkeytbl;
|
||||
while(ckeyp->key_word != NULL) {
|
||||
if (strcmp(ckeyp->key_word, rstr) == 0) {
|
||||
if(strcmp(ckeyp->key_word, rstr) == 0) {
|
||||
p = getkey2(p, ckeyp->key_seq);
|
||||
|
||||
(void) mbstowcs(wckeyp->key_seq,
|
||||
ckeyp->key_seq, SEQLEN);
|
||||
(void)mbstowcs(wckeyp->key_seq,
|
||||
ckeyp->key_seq, SEQLEN);
|
||||
break;
|
||||
}
|
||||
ckeyp++;
|
||||
|
|
@ -157,57 +142,49 @@ mk_cvtkey(char* term)
|
|||
}
|
||||
}
|
||||
|
||||
char *
|
||||
getkey2(char* istr, char* ostr)
|
||||
{
|
||||
char *p;
|
||||
int i;
|
||||
char* getkey2(char* istr, char* ostr) {
|
||||
char* p;
|
||||
int i;
|
||||
|
||||
while (*istr == ' ' || *istr == '\t')
|
||||
while(*istr == ' ' || *istr == '\t')
|
||||
istr++;
|
||||
|
||||
p = istr;
|
||||
i = 0;
|
||||
while (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\0') {
|
||||
while(*p != ' ' && *p != '\t' && *p != '\n' && *p != '\0') {
|
||||
*ostr++ = *p;
|
||||
if (++i > SEQLEN) {
|
||||
if(++i > SEQLEN) {
|
||||
i = 0;
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*ostr = '\0';
|
||||
if (i > 0)
|
||||
return(p);
|
||||
return(NULL);
|
||||
if(i > 0)
|
||||
return (p);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
clear_ukeys (void)
|
||||
{
|
||||
void clear_ukeys(void) {
|
||||
Unumber = 0;
|
||||
}
|
||||
|
||||
void set_func(struct wordent word[]) {
|
||||
int i, num;
|
||||
wchar16_t * p, *s;
|
||||
struct wcvtkey* ckeyp;
|
||||
|
||||
void
|
||||
set_func (struct wordent word[])
|
||||
{
|
||||
int i, num;
|
||||
wchar16_t *p, *s;
|
||||
struct wcvtkey *ckeyp;
|
||||
|
||||
if (Unumber >= UKEYNUM)
|
||||
if(Unumber >= UKEYNUM)
|
||||
return;
|
||||
for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) {
|
||||
if (match (word[1].word_str, comstr[i])) {
|
||||
for(i = 0; i < KEY_OTHER && *comstr[i] != '\0'; i++) {
|
||||
if(match(word[1].word_str, comstr[i])) {
|
||||
p = word[2].word_str;
|
||||
if (iswupper(*p)) {
|
||||
if(iswupper(*p)) {
|
||||
ckeyp = wcvtkeytbl;
|
||||
while(ckeyp->key_word != NULL) {
|
||||
if (wscmp(p, ckeyp->key_word) == 0) {
|
||||
p = ckeyp->key_seq;
|
||||
if (*p == '\0')
|
||||
if(wscmp(p, ckeyp->key_word) == 0) {
|
||||
p = ckeyp->key_seq;
|
||||
if(*p == '\0')
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
|
@ -215,12 +192,12 @@ set_func (struct wordent word[])
|
|||
}
|
||||
}
|
||||
s = Ukey[Unumber];
|
||||
if ((num = eval_keys (p, s)) > 1) {
|
||||
if (Unumber < UKEYNUM)
|
||||
if((num = eval_keys(p, s)) > 1) {
|
||||
if(Unumber < UKEYNUM)
|
||||
Uvalue[Unumber++] = comstrvalue[i];
|
||||
} else if (num >= 0) {
|
||||
if (comnumber < COMNUM) {
|
||||
comkey[comnumber] = *s;
|
||||
} else if(num >= 0) {
|
||||
if(comnumber < COMNUM) {
|
||||
comkey[comnumber] = *s;
|
||||
comvalue[comnumber++] = comstrvalue[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -229,127 +206,106 @@ set_func (struct wordent word[])
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
wchar16_t
|
||||
eval_keys (wchar16_t* s, wchar16_t* p)
|
||||
{
|
||||
wchar16_t c, i;
|
||||
eval_keys(wchar16_t* s, wchar16_t* p) {
|
||||
wchar16_t c, i;
|
||||
|
||||
if (wslen (s) > SEQLEN)
|
||||
if(wslen(s) > SEQLEN)
|
||||
return (-1);
|
||||
i = 0;
|
||||
while ((c = *(s ++)) != '\0') {
|
||||
if (c == '^') {
|
||||
c = *(s ++);
|
||||
if ('@' <= c && c <= '_')
|
||||
while((c = *(s++)) != '\0') {
|
||||
if(c == '^') {
|
||||
c = *(s++);
|
||||
if('@' <= c && c <= '_')
|
||||
c = c - '@';
|
||||
else if (c == '?')
|
||||
else if(c == '?')
|
||||
c = DEL;
|
||||
else
|
||||
c = *(--s);
|
||||
}
|
||||
i++;
|
||||
*(p ++) = c;
|
||||
*(p++) = c;
|
||||
}
|
||||
*p = '\0';
|
||||
return (i);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
clear_key (void)
|
||||
{
|
||||
clear_commkeys ();
|
||||
clear_etckeys ();
|
||||
clear_ukeys ();
|
||||
void clear_key(void) {
|
||||
clear_commkeys();
|
||||
clear_etckeys();
|
||||
clear_ukeys();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
clear_commkeys (void)
|
||||
{
|
||||
void clear_commkeys(void) {
|
||||
comnumber = 0;
|
||||
}
|
||||
|
||||
int
|
||||
eval_key (wchar16_t* s)
|
||||
{
|
||||
wchar16_t c;
|
||||
int eval_key(wchar16_t* s) {
|
||||
wchar16_t c;
|
||||
|
||||
c = *s;
|
||||
|
||||
|
||||
if (c == '^') {
|
||||
if(c == '^') {
|
||||
c = s[1];
|
||||
if ('@' <= c && c <= '_')
|
||||
if('@' <= c && c <= '_')
|
||||
return (c - '@');
|
||||
else if (c == '?')
|
||||
else if(c == '?')
|
||||
return (DEL);
|
||||
}
|
||||
|
||||
|
||||
else if (c <= '~')
|
||||
else if(c <= '~')
|
||||
return (c);
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
clear_etckeys (void)
|
||||
{
|
||||
void clear_etckeys(void) {
|
||||
u_etckeys = 0;
|
||||
}
|
||||
|
||||
int set_etckeys(struct wordent word[]) {
|
||||
int i;
|
||||
|
||||
int
|
||||
set_etckeys (struct wordent word[])
|
||||
{
|
||||
int i;
|
||||
|
||||
if (u_etckeys >= ETCKEYS)
|
||||
if(u_etckeys >= ETCKEYS)
|
||||
return (1);
|
||||
for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) {
|
||||
if (match (word[1].word_str, comstr[i])) {
|
||||
for(i = 0; i < KEY_OTHER && *comstr[i] != '\0'; i++) {
|
||||
if(match(word[1].word_str, comstr[i])) {
|
||||
Uetcval[u_etckeys] = comstrvalue[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= KEY_OTHER)
|
||||
if(i >= KEY_OTHER)
|
||||
return (1);
|
||||
for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) {
|
||||
if (match (word[2].word_str, comstr[i])) {
|
||||
for(i = 0; i < KEY_OTHER && *comstr[i] != '\0'; i++) {
|
||||
if(match(word[2].word_str, comstr[i])) {
|
||||
Uetckey[u_etckeys] = comstrvalue[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= KEY_OTHER)
|
||||
if(i >= KEY_OTHER)
|
||||
return (1);
|
||||
u_etckeys ++;
|
||||
u_etckeys++;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
wchar16_t
|
||||
parse_command (wchar16_t* s, int* count)
|
||||
{
|
||||
extern wchar16_t pars_seq[];
|
||||
extern int pars_n;
|
||||
int i, j;
|
||||
wchar16_t c;
|
||||
parse_command(wchar16_t* s, int* count) {
|
||||
extern wchar16_t pars_seq[];
|
||||
extern int pars_n;
|
||||
int i, j;
|
||||
wchar16_t c;
|
||||
|
||||
c = *s;
|
||||
for (i = 0; i < comnumber ; i ++) {
|
||||
if (c == comkey[i]) {
|
||||
for (j = 1 ; j < *count ; j ++)
|
||||
for(i = 0; i < comnumber; i++) {
|
||||
if(c == comkey[i]) {
|
||||
for(j = 1; j < *count; j++)
|
||||
s[j - 1] = s[j];
|
||||
(*count)--;
|
||||
*pars_seq = c;
|
||||
*pars_seq = c;
|
||||
pars_seq[1] = 0;
|
||||
pars_n = 1;
|
||||
pars_n = 1;
|
||||
return (comvalue[i]);
|
||||
}
|
||||
}
|
||||
return (KEY_NORMAL);
|
||||
}
|
||||
|
||||
|
|
|
|||
58
functbl.c
58
functbl.c
|
|
@ -27,52 +27,36 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: functbl.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:46 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_rename.h"
|
||||
#include "sj_func.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
VFuncNT cvtnum_func[] = {
|
||||
num_type00, num_type01, num_type02, num_type03,
|
||||
num_type04, num_type05, num_type06, num_type07,
|
||||
num_type08, num_type09, num_type10, num_type11,
|
||||
num_type12, num_type13, num_type14
|
||||
};
|
||||
VFuncNT cvtnum_func[] = {
|
||||
num_type00, num_type01, num_type02, num_type03,
|
||||
num_type04, num_type05, num_type06, num_type07,
|
||||
num_type08, num_type09, num_type10, num_type11,
|
||||
num_type12, num_type13, num_type14};
|
||||
|
||||
UCPFuncGK getkan_func[] = {
|
||||
getkan_norm, getkan_norm, getkan_hira, getkan_kata,
|
||||
getkan_knj, getkan_ofs, getkan_norm, getkan_none,
|
||||
getkan_norm, getkan_norm, getkan_hira, getkan_kata,
|
||||
getkan_knj, getkan_ofs, getkan_norm, getkan_none
|
||||
};
|
||||
getkan_norm, getkan_norm, getkan_hira, getkan_kata,
|
||||
getkan_knj, getkan_ofs, getkan_norm, getkan_none,
|
||||
getkan_norm, getkan_norm, getkan_hira, getkan_kata,
|
||||
getkan_knj, getkan_ofs, getkan_norm, getkan_none};
|
||||
|
||||
IFuncSetj setjrec_func[] = {
|
||||
setj_norm2, setj_norm2, setj_norm1, setj_norm1,
|
||||
setj_knj, setj_ofs, setj_norm2, setj_atrb,
|
||||
setj_norm2, setj_norm2, setj_norm1, setj_norm1,
|
||||
setj_knj, setj_ofs, setj_norm2, setj_atrb
|
||||
};
|
||||
setj_norm2, setj_norm2, setj_norm1, setj_norm1,
|
||||
setj_knj, setj_ofs, setj_norm2, setj_atrb,
|
||||
setj_norm2, setj_norm2, setj_norm1, setj_norm1,
|
||||
setj_knj, setj_ofs, setj_norm2, setj_atrb};
|
||||
|
||||
IFuncHira hiraknj_func[] = {
|
||||
hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask,
|
||||
hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb,
|
||||
hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask,
|
||||
hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb
|
||||
};
|
||||
|
||||
hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask,
|
||||
hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb,
|
||||
hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask,
|
||||
hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb};
|
||||
|
||||
UCPFuncMK makekan_func[] = {
|
||||
makekan_norm, makekan_norm, makekan_1byte, makekan_1byte,
|
||||
makekan_knj, makekan_ofs, makekan_norm, makekan_none,
|
||||
makekan_norm, makekan_norm, makekan_1byte, makekan_1byte,
|
||||
makekan_knj, makekan_ofs, makekan_norm, makekan_none
|
||||
};
|
||||
makekan_norm, makekan_norm, makekan_1byte, makekan_1byte,
|
||||
makekan_knj, makekan_ofs, makekan_norm, makekan_none,
|
||||
makekan_norm, makekan_norm, makekan_1byte, makekan_1byte,
|
||||
makekan_knj, makekan_ofs, makekan_norm, makekan_none};
|
||||
|
|
|
|||
259
fuzoku.c
259
fuzoku.c
|
|
@ -27,61 +27,42 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: fuzoku.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:47 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_hinsi.h"
|
||||
#include "sj_hinshi.h"
|
||||
#include "sj_right.h"
|
||||
#include "sj_yomi.h"
|
||||
|
||||
CLREC* argclrec();
|
||||
int terminate();
|
||||
|
||||
|
||||
CLREC *argclrec();
|
||||
int terminate();
|
||||
|
||||
|
||||
|
||||
static int fzkstrcmp(yptr, fzkp, saml)
|
||||
unsigned char *yptr;
|
||||
unsigned char *fzkp;
|
||||
int *saml;
|
||||
static int fzkstrcmp(yptr, fzkp, saml)
|
||||
unsigned char* yptr;
|
||||
unsigned char* fzkp;
|
||||
int* saml;
|
||||
{
|
||||
int asklen, nkrlen;
|
||||
int asklen, nkrlen;
|
||||
|
||||
asklen = FzkAskLen(fzkp);
|
||||
|
||||
if(*saml < asklen) return CONT;
|
||||
|
||||
if (*saml < asklen) return CONT;
|
||||
|
||||
|
||||
if (*saml > asklen) return OVER;
|
||||
|
||||
if(*saml > asklen) return OVER;
|
||||
|
||||
nkrlen = FzkNkrLen(fzkp);
|
||||
|
||||
|
||||
yptr += asklen;
|
||||
fzkp ++;
|
||||
fzkp++;
|
||||
|
||||
|
||||
while (nkrlen--) {
|
||||
if (*yptr > *fzkp)
|
||||
while(nkrlen--) {
|
||||
if(*yptr > *fzkp)
|
||||
return CONT;
|
||||
|
||||
else if (*yptr < *fzkp) {
|
||||
if (!*yptr) return PARTLY;
|
||||
else if(*yptr < *fzkp) {
|
||||
if(!*yptr) return PARTLY;
|
||||
return OVER;
|
||||
}
|
||||
|
||||
else{
|
||||
else {
|
||||
yptr++;
|
||||
fzkp++;
|
||||
(*saml)++;
|
||||
|
|
@ -91,201 +72,189 @@ int *saml;
|
|||
return MATCH;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void setclrec(jrec, yptr, right)
|
||||
JREC *jrec;
|
||||
unsigned char *yptr;
|
||||
TypeCnct right;
|
||||
void setclrec(jrec, yptr, right)
|
||||
JREC* jrec;
|
||||
unsigned char* yptr;
|
||||
TypeCnct right;
|
||||
{
|
||||
CLREC *new;
|
||||
TypeGram hinsi;
|
||||
int len;
|
||||
CLREC* new;
|
||||
TypeGram hinshi;
|
||||
int len;
|
||||
|
||||
if(!(len = yptr - cnvstart)) return;
|
||||
|
||||
if (!(len = yptr - cnvstart)) return;
|
||||
if(len > MaxClInputLen) return;
|
||||
|
||||
if(!(new = argclrec(len))) return;
|
||||
|
||||
if (len > MaxClInputLen) return;
|
||||
new->jnode = jrec;
|
||||
new->gobiln = gobilen;
|
||||
new->right = right;
|
||||
new->fzk_ka = fzk_ka_flg;
|
||||
(jrec->count)++;
|
||||
|
||||
hinshi = jrec->hinshi;
|
||||
|
||||
if (!(new = argclrec(len))) return;
|
||||
if(hinshi >= DO_SAHEN && hinshi <= SP_KA_ONB)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
|
||||
new -> jnode = jrec;
|
||||
new -> gobiln = gobilen;
|
||||
new -> right = right;
|
||||
new -> fzk_ka = fzk_ka_flg;
|
||||
(jrec -> count)++;
|
||||
|
||||
|
||||
hinsi = jrec -> hinsi;
|
||||
|
||||
if (hinsi >= DO_SAHEN && hinsi <= SP_KA_ONB)
|
||||
new -> kubun = K_DOUSHI;
|
||||
|
||||
else if ((hinsi >= KEIYOUSI_1 && hinsi <= KE_DOUSI_9) ||
|
||||
(hinsi == SP_KEIYOUSI)){
|
||||
if(right == R_FZKMEISI)
|
||||
new -> kubun = K_TAIGEN;
|
||||
else if((hinshi >= KEIYOUSHI_1 && hinshi <= KE_DOUSHI_9) ||
|
||||
(hinshi == SP_KEIYOUSHI)) {
|
||||
if(right == R_FZKMEISHI)
|
||||
new->kubun = K_TAIGEN;
|
||||
else
|
||||
new -> kubun = K_YOUGEN;
|
||||
new->kubun = K_YOUGEN;
|
||||
}
|
||||
|
||||
else if (hinsi == RENTAISI)
|
||||
new -> kubun = K_RENTAISI;
|
||||
else if(hinshi == RENTAISHI)
|
||||
new->kubun = K_RENTAISHI;
|
||||
|
||||
else if ((hinsi >= FUKUSI_1 && hinsi <= FUKUSI_9) ||
|
||||
(hinsi == SP_FUKUSI))
|
||||
new -> kubun = K_FUKUSI;
|
||||
else if((hinshi >= FUKUSHI_1 && hinshi <= FUKUSHI_9) ||
|
||||
(hinshi == SP_FUKUSHI))
|
||||
new->kubun = K_FUKUSHI;
|
||||
|
||||
else if (hinsi == SETUZOKU || hinsi==KANDOUSI ||
|
||||
hinsi == TANKANJI || hinsi==AISATU)
|
||||
new -> kubun = K_SONOTA;
|
||||
else if(hinshi == SETSUZOKU || hinshi == KANDOUSHI ||
|
||||
hinshi == TANKANJI || hinshi == AISATSU)
|
||||
new->kubun = K_SONOTA;
|
||||
|
||||
else if (gobilen) {
|
||||
if (hinsi >= MEISI_5 && hinsi <= MEISI_7)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(gobilen) {
|
||||
if(hinshi >= MEISHI_5 && hinshi <= MEISHI_7)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if (hinsi == D_MEISI_4)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(hinshi == D_MEISHI_4)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if (hinsi == SETUBI_7 || hinsi == SETUBI_8)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(hinshi == SETSUBI_7 || hinshi == SETSUBI_8)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if(hinshi == D_MEISHI_5)
|
||||
new->kubun = K_YOUGEN;
|
||||
|
||||
else if (hinsi == D_MEISI_5)
|
||||
new -> kubun = K_YOUGEN;
|
||||
|
||||
else if (hinsi == SETUBI_5 || hinsi == SETUBI_6)
|
||||
new -> kubun = K_YOUGEN;
|
||||
else if(hinshi == SETSUBI_5 || hinshi == SETSUBI_6)
|
||||
new->kubun = K_YOUGEN;
|
||||
else
|
||||
new -> kubun = K_TAIGEN;
|
||||
}
|
||||
else if (hinsi >= MEISI_5 && hinsi <= MEISI_7) {
|
||||
if (right >= R_I && right <= R_ITADAKE)
|
||||
new -> kubun = K_DOUSHI;
|
||||
new->kubun = K_TAIGEN;
|
||||
} else if(hinshi >= MEISHI_5 && hinshi <= MEISHI_7) {
|
||||
if(right >= R_I && right <= R_ITADAKE)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if (right >= R_DESHI && right <= R_TAI)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(right >= R_DESHI && right <= R_TAI)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if (right >= R_NAI && right <= R_MEIREI2)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(right >= R_NAI && right <= R_MEIREI2)
|
||||
new->kubun = K_DOUSHI;
|
||||
|
||||
else if (right == R_TE2 || right == R_TERU)
|
||||
new -> kubun = K_DOUSHI;
|
||||
else if(right == R_TE2 || right == R_TERU)
|
||||
new->kubun = K_DOUSHI;
|
||||
else
|
||||
new -> kubun = K_TAIGEN;
|
||||
}
|
||||
else
|
||||
new -> kubun = K_TAIGEN;
|
||||
new->kubun = K_TAIGEN;
|
||||
} else
|
||||
new->kubun = K_TAIGEN;
|
||||
}
|
||||
|
||||
static int fzkcnct(right, left)
|
||||
TypeCnct right;
|
||||
TypeCnct left;
|
||||
static int fzkcnct(right, left)
|
||||
TypeCnct right;
|
||||
TypeCnct left;
|
||||
{
|
||||
unsigned char *cncttbl;
|
||||
unsigned char* cncttbl;
|
||||
|
||||
if (right && left) {
|
||||
if(right && left) {
|
||||
cncttbl = Rigtadr(right);
|
||||
left--;
|
||||
if (cncttbl[left >> 3] << (left & 0x07) & 0x80)
|
||||
if(cncttbl[left >> 3] << (left & 0x07) & 0x80)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void srchfzk(jrec, yptr, right, level)
|
||||
JREC *jrec;
|
||||
unsigned char *yptr;
|
||||
TypeCnct right;
|
||||
int level;
|
||||
void srchfzk(jrec, yptr, right, level)
|
||||
JREC* jrec;
|
||||
unsigned char* yptr;
|
||||
TypeCnct right;
|
||||
int level;
|
||||
{
|
||||
unsigned char *fzk;
|
||||
int len = 0;
|
||||
int cmp;
|
||||
unsigned char *next;
|
||||
FREC *fzkrec;
|
||||
int i;
|
||||
int nlen;
|
||||
TypeCnct rt;
|
||||
unsigned char* fzk;
|
||||
int len = 0;
|
||||
int cmp;
|
||||
unsigned char* next;
|
||||
FREC* fzkrec;
|
||||
int i;
|
||||
int nlen;
|
||||
TypeCnct rt;
|
||||
|
||||
if ((level >= MAXFLVL) && !(Chrtbl[*yptr] & FZK_KGU)) return;
|
||||
if((level >= MAXFLVL) && !(Chrtbl[*yptr] & FZK_KGU)) return;
|
||||
|
||||
if (terminate(right, yptr) && Chrtbl[*yptr] & FZK_KGU){
|
||||
if (!level) fzk_ka_flg = 0;
|
||||
if(terminate(right, yptr) && Chrtbl[*yptr] & FZK_KGU) {
|
||||
if(!level) fzk_ka_flg = 0;
|
||||
yptr++;
|
||||
while (Chrtbl[*yptr] & FZK_KGU) yptr++;
|
||||
while(Chrtbl[*yptr] & FZK_KGU) yptr++;
|
||||
setclrec(jrec, yptr, (TypeCnct)R_FZKKGU);
|
||||
return;
|
||||
}
|
||||
|
||||
if (right == R_CUT) return;
|
||||
if(right == R_CUT) return;
|
||||
|
||||
if (!*yptr) return;
|
||||
if(!*yptr) return;
|
||||
|
||||
if (!(*yptr >= _XA && *yptr <= _NN)) return;
|
||||
if(!(*yptr >= _XA && *yptr <= _NN)) return;
|
||||
|
||||
fzkrec = fzktbl;
|
||||
|
||||
for (i = fzkcount ; i ; i--, fzkrec++) {
|
||||
for(i = fzkcount; i; i--, fzkrec++) {
|
||||
|
||||
if (yptr != fzkrec -> yomip) continue;
|
||||
if(yptr != fzkrec->yomip) continue;
|
||||
|
||||
fzk = fzkrec -> fzkp;
|
||||
fzk = fzkrec->fzkp;
|
||||
|
||||
len = FzkAskLen(fzk) + (nlen = FzkNkrLen(fzk)) + 1;
|
||||
|
||||
if (!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue;
|
||||
if(!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue;
|
||||
|
||||
if (!level) fzk_ka_flg = FzkStrKa(fzk);
|
||||
if(!level) fzk_ka_flg = FzkStrKa(fzk);
|
||||
|
||||
next = yptr + len;
|
||||
|
||||
if (terminate(rt = FzkRight(fzk), next)) {
|
||||
if(terminate(rt = FzkRight(fzk), next)) {
|
||||
setclrec(jrec, next, rt);
|
||||
}
|
||||
|
||||
srchfzk(jrec, next, rt, level + 1);
|
||||
}
|
||||
|
||||
if (len) return;
|
||||
if(len) return;
|
||||
|
||||
|
||||
if (!(fzk = Fzkadr(*yptr - _XA))) return;
|
||||
if(!(fzk = Fzkadr(*yptr - _XA))) return;
|
||||
|
||||
yptr++;
|
||||
|
||||
for ( ; *fzk != FZKEND ; fzk += nlen + (i ? 4 : 3)) {
|
||||
for(; *fzk != FZKEND; fzk += nlen + (i ? 4 : 3)) {
|
||||
|
||||
nlen = FzkNkrLen(fzk);
|
||||
i = FzkHasCode(fzk);
|
||||
|
||||
cmp = fzkstrcmp(yptr, fzk, &len);
|
||||
|
||||
if (cmp == OVER)
|
||||
if(cmp == OVER)
|
||||
break;
|
||||
|
||||
else if (cmp == PARTLY)
|
||||
else if(cmp == PARTLY)
|
||||
break;
|
||||
|
||||
else if ((cmp != MATCH) || isdpnd(*(yptr + len)))
|
||||
else if((cmp != MATCH) || isdpnd(*(yptr + len)))
|
||||
continue;
|
||||
|
||||
|
||||
fzktbl[fzkcount].yomip = yptr - 1;
|
||||
fzktbl[fzkcount].fzkp = fzk;
|
||||
fzktbl[fzkcount].yomip = yptr - 1;
|
||||
fzktbl[fzkcount].fzkp = fzk;
|
||||
fzkcount++;
|
||||
|
||||
if (!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue;
|
||||
if(!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue;
|
||||
|
||||
if (!level) fzk_ka_flg = FzkStrKa(fzk);
|
||||
if(!level) fzk_ka_flg = FzkStrKa(fzk);
|
||||
|
||||
next = yptr + len;
|
||||
|
||||
if (terminate(rt = FzkRight(fzk), next)) {
|
||||
if(terminate(rt = FzkRight(fzk), next)) {
|
||||
setclrec(jrec, next, rt);
|
||||
}
|
||||
|
||||
|
|
|
|||
172
getkanji.c
172
getkanji.c
|
|
@ -27,78 +27,57 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: getkanji.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:49 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
static unsigned char*
|
||||
code2kanji(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
|
||||
unsigned char*
|
||||
getkan_none(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
getkan_none(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_hira(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
int cnt, csize;
|
||||
getkan_hira(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
int cnt, csize;
|
||||
|
||||
csize = codesize(*s);
|
||||
|
||||
cnt = (*s & KanjiCodeMask) + 1;
|
||||
|
||||
|
||||
if (flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2;
|
||||
cnt = (*s & KanjiCodeMask) + 1;
|
||||
|
||||
if(flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2;
|
||||
|
||||
cnt *= 2;
|
||||
while (cnt-- > 0) *d++ = *ym++;
|
||||
while(cnt-- > 0) *d++ = *ym++;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_kata(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
int cnt, csize;
|
||||
unsigned char ch;
|
||||
getkan_kata(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
int cnt, csize;
|
||||
unsigned char ch;
|
||||
|
||||
csize = codesize(*s);
|
||||
|
||||
cnt = (*s & KanjiCodeMask) + 1;
|
||||
cnt = (*s & KanjiCodeMask) + 1;
|
||||
|
||||
if(flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2;
|
||||
|
||||
if (flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2;
|
||||
while(cnt-- > 0) {
|
||||
|
||||
|
||||
while (cnt-- > 0) {
|
||||
|
||||
if (*ym == 0xa4) {
|
||||
if(*ym == 0xa4) {
|
||||
ch = *++ym;
|
||||
if (0xa1 <= ch && ch <= 0xf3) {
|
||||
if(0xa1 <= ch && ch <= 0xf3) {
|
||||
*d++ = 0xa5;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*d++ = 0xa4;
|
||||
}
|
||||
*d++ = ch;
|
||||
ym++;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*d++ = *ym++;
|
||||
*d++ = *ym++;
|
||||
}
|
||||
|
|
@ -107,109 +86,110 @@ getkan_kata(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int f
|
|||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_knj(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
getkan_knj(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
|
||||
return code2kanji(askknj[*s & KnjAssyukuMask], d, ym, yl, flg);
|
||||
return code2kanji(askknj[*s & KnjAsshukuMask], d, ym, yl, flg);
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_ofs(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
getkan_ofs(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
|
||||
return code2kanji(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1),
|
||||
d, ym, yl, flg);
|
||||
return code2kanji(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1),
|
||||
d, ym, yl, flg);
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_norm(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
getkan_norm(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
unsigned char c;
|
||||
|
||||
if (*s != 0) {
|
||||
if(*s != 0) {
|
||||
c = s[1];
|
||||
if (c & 0x80)
|
||||
*d++ = SS3;
|
||||
if(c & 0x80)
|
||||
*d++ = SS3;
|
||||
*d++ = *s | 0x80;
|
||||
*d++ = c | 0x80;
|
||||
*d++ = c | 0x80;
|
||||
} else {
|
||||
*d++ = *s;
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
getkan_ascii(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
getkan_ascii(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
unsigned char c;
|
||||
|
||||
c = s[1];
|
||||
if (c & 0x80)
|
||||
*d++ = SS2;
|
||||
if(c & 0x80)
|
||||
*d++ = SS2;
|
||||
*d++ = c;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
static unsigned char*
|
||||
code2kanji(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg)
|
||||
{
|
||||
code2kanji(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg) {
|
||||
int csize;
|
||||
|
||||
for ( ; ; ) {
|
||||
for(;;) {
|
||||
csize = codesize(*s);
|
||||
if (s[csize] == KanjiStrEnd) {
|
||||
if(s[csize] == KanjiStrEnd) {
|
||||
switch(*s & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
d = getkan_hira(s, d, ym, yl, flg); break;
|
||||
case ZenHiraAsshuku:
|
||||
d = getkan_hira(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
case ZenKataAssyuku:
|
||||
d = getkan_kata(s, d, ym, yl, flg); break;
|
||||
case ZenKataAsshuku:
|
||||
d = getkan_kata(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
case OffsetAssyuku:
|
||||
d = getkan_ofs(s, d, ym, yl, flg); break;
|
||||
case OffsetAsshuku:
|
||||
d = getkan_ofs(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
case AiAttribute:
|
||||
d = getkan_none(s, d, ym, yl, flg); break;
|
||||
case AiAttribute:
|
||||
d = getkan_none(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
case LeadingHankaku:
|
||||
d = getkan_ascii(s, d, ym, yl, flg); break;
|
||||
case LeadingHankaku:
|
||||
d = getkan_ascii(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
case KanjiAssyuku:
|
||||
d = getkan_knj(s, d, ym, yl, flg); break;
|
||||
case KanjiAsshuku:
|
||||
d = getkan_knj(s, d, ym, yl, flg);
|
||||
break;
|
||||
|
||||
default:
|
||||
d = getkan_norm(s, d, ym, yl, flg);
|
||||
default:
|
||||
d = getkan_norm(s, d, ym, yl, flg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
} else
|
||||
switch(*s & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
d = getkan_hira(s, d, ym, yl, FALSE); break;
|
||||
case ZenHiraAsshuku:
|
||||
d = getkan_hira(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
case ZenKataAssyuku:
|
||||
d = getkan_kata(s, d, ym, yl, FALSE); break;
|
||||
case ZenKataAsshuku:
|
||||
d = getkan_kata(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
case OffsetAssyuku:
|
||||
d = getkan_ofs(s, d, ym, yl, FALSE); break;
|
||||
case OffsetAsshuku:
|
||||
d = getkan_ofs(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
case AiAttribute:
|
||||
d = getkan_none(s, d, ym, yl, FALSE); break;
|
||||
case AiAttribute:
|
||||
d = getkan_none(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
case LeadingHankaku:
|
||||
d = getkan_ascii(s, d, ym, yl, FALSE); break;
|
||||
case LeadingHankaku:
|
||||
d = getkan_ascii(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
case KanjiAssyuku:
|
||||
d = getkan_knj(s, d, ym, yl, FALSE); break;
|
||||
case KanjiAsshuku:
|
||||
d = getkan_knj(s, d, ym, yl, FALSE);
|
||||
break;
|
||||
|
||||
default:
|
||||
default:
|
||||
d = getkan_norm(s, d, ym, yl, FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -219,14 +199,10 @@ code2kanji(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int fl
|
|||
return d;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
getkanji(unsigned char* ym, int yl, unsigned char* ptr, unsigned char* buf)
|
||||
{
|
||||
unsigned char *q;
|
||||
int getkanji(unsigned char* ym, int yl, unsigned char* ptr, unsigned char* buf) {
|
||||
unsigned char* q;
|
||||
|
||||
q = code2kanji(ptr, buf, ym, yl, TRUE);
|
||||
|
||||
return q - buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
131
getrank.c
131
getrank.c
|
|
@ -27,123 +27,94 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: getrank.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:50 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
static void setstynum(void);
|
||||
static void setnspr(KHREC* kptr, STDYIN* sptr);
|
||||
static void regetrank(void);
|
||||
|
||||
static void setstynum (void);
|
||||
static void setnspr (KHREC *kptr, STDYIN *sptr);
|
||||
static void regetrank (void);
|
||||
|
||||
|
||||
|
||||
void
|
||||
getrank (void)
|
||||
{
|
||||
void getrank(void) {
|
||||
trank = nrank = 1;
|
||||
|
||||
setstynum();
|
||||
regetrank();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
setstynum (void)
|
||||
{
|
||||
KHREC *kptr;
|
||||
STDYIN *sptr;
|
||||
static void
|
||||
setstynum(void) {
|
||||
KHREC* kptr;
|
||||
STDYIN* sptr;
|
||||
int count;
|
||||
|
||||
for (kptr = kouhotbl, count = khcount ; count-- ; kptr++) {
|
||||
sptr = srchstdy(kptr -> clrec -> jnode -> jseg, kptr -> offs,
|
||||
kptr -> clrec -> jnode -> dicid);
|
||||
if (!sptr) continue;
|
||||
for(kptr = kouhotbl, count = khcount; count--; kptr++) {
|
||||
sptr = srchstdy(kptr->clrec->jnode->jseg, kptr->offs,
|
||||
kptr->clrec->jnode->dicid);
|
||||
if(!sptr) continue;
|
||||
setnspr(kptr, sptr);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
setnspr(KHREC* kptr, STDYIN* sptr) {
|
||||
KHREC* ptr;
|
||||
int keepnm;
|
||||
TypeStyNum styno;
|
||||
|
||||
styno = kptr->styno = sptr->styno;
|
||||
keepnm = trank;
|
||||
|
||||
static void
|
||||
setnspr (KHREC *kptr, STDYIN *sptr)
|
||||
{
|
||||
KHREC *ptr;
|
||||
int keepnm;
|
||||
TypeStyNum styno;
|
||||
|
||||
styno = kptr -> styno = sptr -> styno;
|
||||
keepnm = trank;
|
||||
|
||||
for (ptr = kouhotbl ; ptr < kptr ; ptr++) {
|
||||
if (styno < ptr -> styno) {
|
||||
ptr -> rank++;
|
||||
for(ptr = kouhotbl; ptr < kptr; ptr++) {
|
||||
if(styno < ptr->styno) {
|
||||
ptr->rank++;
|
||||
keepnm--;
|
||||
}
|
||||
else if (styno == ptr -> styno) {
|
||||
if (kptr -> sttfg && kptr -> ka_fg) {
|
||||
if ((sptr -> sttkj == kptr -> sttkj) &&
|
||||
(sptr -> ka_kj == kptr -> ka_kj)) {
|
||||
ptr -> rank++;
|
||||
} else if(styno == ptr->styno) {
|
||||
if(kptr->sttfg && kptr->ka_fg) {
|
||||
if((sptr->sttkj == kptr->sttkj) &&
|
||||
(sptr->ka_kj == kptr->ka_kj)) {
|
||||
ptr->rank++;
|
||||
keepnm--;
|
||||
}
|
||||
}
|
||||
else if (kptr -> sttfg) {
|
||||
if (sptr -> sttkj == kptr -> sttkj) {
|
||||
ptr -> rank++;
|
||||
} else if(kptr->sttfg) {
|
||||
if(sptr->sttkj == kptr->sttkj) {
|
||||
ptr->rank++;
|
||||
keepnm--;
|
||||
}
|
||||
}
|
||||
else if (kptr -> ka_fg) {
|
||||
if (sptr -> ka_kj == kptr -> ka_kj) {
|
||||
ptr -> rank++;
|
||||
} else if(kptr->ka_fg) {
|
||||
if(sptr->ka_kj == kptr->ka_kj) {
|
||||
ptr->rank++;
|
||||
keepnm--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
kptr -> rank = (unsigned char)keepnm;
|
||||
kptr->rank = (unsigned char)keepnm;
|
||||
trank++;
|
||||
if (keepnm <= nrank) nrank++;
|
||||
if (sptr -> nmflg && (nrank > keepnm)) nrank = keepnm;
|
||||
if(keepnm <= nrank) nrank++;
|
||||
if(sptr->nmflg && (nrank > keepnm)) nrank = keepnm;
|
||||
}
|
||||
|
||||
static void
|
||||
regetrank(void) {
|
||||
KHREC* kptr;
|
||||
int count;
|
||||
int tmp;
|
||||
|
||||
|
||||
static void
|
||||
regetrank (void)
|
||||
{
|
||||
KHREC *kptr;
|
||||
int count;
|
||||
int tmp;
|
||||
|
||||
if (nrank < trank) {
|
||||
if(nrank < trank) {
|
||||
tmp = nrank;
|
||||
trank += nkhcount;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
nkhcount = tmp = 0;
|
||||
}
|
||||
|
||||
for (count = khcount, kptr = kouhotbl ; count-- ; kptr++) {
|
||||
if (!(kptr -> rank)) {
|
||||
if (tmp && kptr -> mode && !(kptr -> offs)) {
|
||||
kptr -> rank = (unsigned char)tmp++;
|
||||
}
|
||||
else
|
||||
kptr -> rank = (unsigned char)trank++;
|
||||
}
|
||||
else if ((short)kptr -> rank >= nrank)
|
||||
kptr -> rank += (unsigned char)nkhcount;
|
||||
for(count = khcount, kptr = kouhotbl; count--; kptr++) {
|
||||
if(!(kptr->rank)) {
|
||||
if(tmp && kptr->mode && !(kptr->offs)) {
|
||||
kptr->rank = (unsigned char)tmp++;
|
||||
} else
|
||||
kptr->rank = (unsigned char)trank++;
|
||||
} else if((short)kptr->rank >= nrank)
|
||||
kptr->rank += (unsigned char)nkhcount;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
33
global.c
33
global.c
|
|
@ -27,32 +27,25 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: global.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:00:35 $
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "sj_struct2.h"
|
||||
|
||||
DouonRec *douon_ptr = NULL;
|
||||
int douon_num = 0;
|
||||
int yomi_len = 0;
|
||||
int hinsi_num = 0;
|
||||
int kanji_len = 0;
|
||||
DouonRec* douon_ptr = NULL;
|
||||
int douon_num = 0;
|
||||
int yomi_len = 0;
|
||||
int hinshi_num = 0;
|
||||
int kanji_len = 0;
|
||||
|
||||
HindoRec *hindo[MaxHindoNumber];
|
||||
int hindo_num = 0;
|
||||
HindoRec* hindo[MaxHindoNumber];
|
||||
int hindo_num = 0;
|
||||
|
||||
OffsetRec *ofsrec[MaxOffsetNumber];
|
||||
int ofsrec_num = 0;
|
||||
OffsetRec* ofsrec[MaxOffsetNumber];
|
||||
int ofsrec_num = 0;
|
||||
|
||||
AssyukuRec *assyuku = NULL;
|
||||
AsshukuRec* asshuku = NULL;
|
||||
|
||||
HindoRec *askknj[MaxKnjAskNumber];
|
||||
int askknj_num = 0;
|
||||
HindoRec* askknj[MaxKnjAskNumber];
|
||||
int askknj_num = 0;
|
||||
|
||||
int kanji_num = 0;
|
||||
int kanji_num = 0;
|
||||
|
|
|
|||
16
global2.c
16
global2.c
|
|
@ -27,13 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: global.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/12/09 11:27:06 $
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
|
@ -46,11 +39,10 @@
|
|||
#include "sj_typedef.h"
|
||||
#include "sj_var.h"
|
||||
|
||||
Global *global_work_base;
|
||||
Global* global_work_base;
|
||||
|
||||
Global *work_base;
|
||||
Global* work_base;
|
||||
|
||||
STDY *stdy_base;
|
||||
|
||||
int serv_errno;
|
||||
STDY* stdy_base;
|
||||
|
||||
int serv_errno;
|
||||
|
|
|
|||
30
henkan.h
30
henkan.h
|
|
@ -27,24 +27,16 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: henkan.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:43 $
|
||||
*/
|
||||
#define ObjEnd 0
|
||||
#define ObjHenkan 1
|
||||
#define ObjMuhenkan 2
|
||||
|
||||
#define Bend 0
|
||||
#define Bhenkan 1
|
||||
#define Bmuhenkan 2
|
||||
#define Bedit 4
|
||||
#define BEDIT 8
|
||||
|
||||
|
||||
#define ObjEnd 0
|
||||
#define ObjHenkan 1
|
||||
#define ObjMuhenkan 2
|
||||
|
||||
#define Bend 0
|
||||
#define Bhenkan 1
|
||||
#define Bmuhenkan 2
|
||||
#define Bedit 4
|
||||
#define BEDIT 8
|
||||
|
||||
#define DLEN (DOUONLEN*2)
|
||||
#define EDITLEN (BUFFLENGTH*DLEN)
|
||||
#define MAXENUM (EDITLEN/DLEN)
|
||||
#define DLEN (DOUONLEN * 2)
|
||||
#define EDITLEN (BUFFLENGTH * DLEN)
|
||||
#define MAXENUM (EDITLEN / DLEN)
|
||||
|
|
|
|||
574
hindo.c
574
hindo.c
|
|
@ -27,323 +27,260 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: hindo.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/08/17 01:50:26 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include "sj_struct.h"
|
||||
#include "dicttool.h"
|
||||
|
||||
extern HindoRec *hindo[];
|
||||
extern int hindo_num;
|
||||
extern AssyukuRec *assyuku;
|
||||
extern HindoRec *askknj[];
|
||||
extern int askknj_num;
|
||||
extern int kanji_num;
|
||||
extern HindoRec* hindo[];
|
||||
extern int hindo_num;
|
||||
extern AsshukuRec* asshuku;
|
||||
extern HindoRec* askknj[];
|
||||
extern int askknj_num;
|
||||
extern int kanji_num;
|
||||
|
||||
int check_hindo(unsigned char* ptr, int len) {
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
int
|
||||
check_hindo(unsigned char* ptr, int len)
|
||||
{
|
||||
int low, high, mid;
|
||||
int i;
|
||||
if(hindo_num <= 0) return 0;
|
||||
|
||||
|
||||
if (hindo_num <= 0) return 0;
|
||||
|
||||
|
||||
low = 0; high = hindo_num - 1;
|
||||
while (low <= high) {
|
||||
low = 0;
|
||||
high = hindo_num - 1;
|
||||
while(low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len);
|
||||
if (i > 0)
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len);
|
||||
if(i > 0)
|
||||
high = mid - 1;
|
||||
else if (i < 0)
|
||||
else if(i < 0)
|
||||
low = ++mid;
|
||||
else
|
||||
return(hindo[mid]->exist + hindo[mid]->hindo);
|
||||
return (hindo[mid]->exist + hindo[mid]->hindo);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static AsshukuRec*
|
||||
makeasshuku(int num) {
|
||||
AsshukuRec* arec;
|
||||
|
||||
|
||||
static AssyukuRec*
|
||||
makeassyuku (int num)
|
||||
{
|
||||
AssyukuRec *arec;
|
||||
|
||||
|
||||
arec = (AssyukuRec *)Malloc(sizeof(AssyukuRec));
|
||||
if (!arec) {
|
||||
arec = (AsshukuRec*)Malloc(sizeof(AsshukuRec));
|
||||
if(!arec) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
arec -> len = num;
|
||||
arec -> nrec = NULL;
|
||||
arec -> anext = NULL;
|
||||
arec->len = num;
|
||||
arec->nrec = NULL;
|
||||
arec->anext = NULL;
|
||||
|
||||
return arec;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
assyuku_len(HindoRec* hrec)
|
||||
{
|
||||
int org;
|
||||
int old;
|
||||
int new;
|
||||
OffsetRec *p;
|
||||
asshuku_len(HindoRec* hrec) {
|
||||
int org;
|
||||
int old;
|
||||
int new;
|
||||
OffsetRec* p;
|
||||
|
||||
if(((*(hrec->kptr) & KanjiModeMask) == OffsetAsshuku) &&
|
||||
(hrec->klen == 2)) {
|
||||
|
||||
if (((*(hrec->kptr) & KanjiModeMask) == OffsetAssyuku) &&
|
||||
(hrec->klen == 2)) {
|
||||
|
||||
p = real_ofsrec(hrec -> kptr);
|
||||
|
||||
|
||||
org = check_hindo(p -> kptr, p -> klen);
|
||||
|
||||
p = real_ofsrec(hrec->kptr);
|
||||
|
||||
org = check_hindo(p->kptr, p->klen);
|
||||
|
||||
old = p->klen * org + 2 * (hrec->exist + hrec->hindo);
|
||||
|
||||
|
||||
|
||||
new = p->klen + (hrec->exist + hrec->hindo + org);
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
old = hrec -> klen * (hrec -> exist + hrec -> hindo);
|
||||
old = hrec->klen * (hrec->exist + hrec->hindo);
|
||||
|
||||
|
||||
new = hrec -> klen + (hrec -> exist + hrec -> hindo);
|
||||
new = hrec->klen + (hrec->exist + hrec->hindo);
|
||||
}
|
||||
|
||||
|
||||
return (old - new);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
set_assyuku(HindoRec* hrec)
|
||||
{
|
||||
AssyukuRec *arec;
|
||||
AssyukuRec *aprev;
|
||||
int len;
|
||||
set_asshuku(HindoRec* hrec) {
|
||||
AsshukuRec* arec;
|
||||
AsshukuRec* aprev;
|
||||
int len;
|
||||
|
||||
len = asshuku_len(hrec);
|
||||
|
||||
len = assyuku_len(hrec);
|
||||
if(len <= 0) return;
|
||||
|
||||
arec = asshuku;
|
||||
aprev = NULL;
|
||||
while(arec) {
|
||||
|
||||
if (len <= 0) return;
|
||||
if(arec->len == len) {
|
||||
|
||||
|
||||
arec = assyuku; aprev = NULL;
|
||||
while (arec) {
|
||||
|
||||
if (arec -> len == len) {
|
||||
|
||||
hrec -> arec = arec;
|
||||
hrec -> anext = arec -> nrec;
|
||||
arec -> nrec = hrec;
|
||||
hrec->arec = arec;
|
||||
hrec->anext = arec->nrec;
|
||||
arec->nrec = hrec;
|
||||
return;
|
||||
}
|
||||
|
||||
else if (arec -> len < len)
|
||||
else if(arec->len < len)
|
||||
break;
|
||||
|
||||
aprev = arec;
|
||||
arec = arec -> anext;
|
||||
arec = arec->anext;
|
||||
}
|
||||
|
||||
arec = makeasshuku(len);
|
||||
|
||||
arec = makeassyuku(len);
|
||||
hrec->anext = NULL;
|
||||
hrec->arec = arec;
|
||||
arec->nrec = hrec;
|
||||
|
||||
|
||||
hrec -> anext = NULL;
|
||||
hrec -> arec = arec;
|
||||
arec -> nrec = hrec;
|
||||
|
||||
|
||||
if (aprev) {
|
||||
arec -> anext = aprev -> anext;
|
||||
aprev -> anext = arec;
|
||||
}
|
||||
else {
|
||||
arec -> anext = assyuku;
|
||||
assyuku = arec;
|
||||
if(aprev) {
|
||||
arec->anext = aprev->anext;
|
||||
aprev->anext = arec;
|
||||
} else {
|
||||
arec->anext = asshuku;
|
||||
asshuku = arec;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
reset_assyuku(HindoRec* hrec)
|
||||
{
|
||||
AssyukuRec *arec;
|
||||
AssyukuRec *aptr;
|
||||
AssyukuRec *aprev;
|
||||
HindoRec *hptr;
|
||||
HindoRec *hprev;
|
||||
reset_asshuku(HindoRec* hrec) {
|
||||
AsshukuRec* arec;
|
||||
AsshukuRec* aptr;
|
||||
AsshukuRec* aprev;
|
||||
HindoRec* hptr;
|
||||
HindoRec* hprev;
|
||||
|
||||
arec = hrec -> arec;
|
||||
arec = hrec->arec;
|
||||
|
||||
if(!arec) return;
|
||||
hrec->arec = NULL;
|
||||
|
||||
if (!arec) return;
|
||||
hrec -> arec = NULL;
|
||||
|
||||
|
||||
hptr = arec -> nrec; hprev = NULL;
|
||||
while (hptr) {
|
||||
if (hptr == hrec) break;
|
||||
hptr = arec->nrec;
|
||||
hprev = NULL;
|
||||
while(hptr) {
|
||||
if(hptr == hrec) break;
|
||||
hprev = hptr;
|
||||
hptr = hptr -> anext;
|
||||
hptr = hptr->anext;
|
||||
}
|
||||
|
||||
if(!hptr) return;
|
||||
|
||||
if (!hptr) return;
|
||||
|
||||
|
||||
if (hprev) {
|
||||
hprev -> anext = hrec -> anext;
|
||||
hrec -> anext = NULL;
|
||||
if(hprev) {
|
||||
hprev->anext = hrec->anext;
|
||||
hrec->anext = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (hrec -> anext) {
|
||||
arec -> nrec = hrec -> anext;
|
||||
hrec -> anext = NULL;
|
||||
if(hrec->anext) {
|
||||
arec->nrec = hrec->anext;
|
||||
hrec->anext = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (!assyuku) return;
|
||||
aptr = assyuku; aprev = NULL;
|
||||
while (aptr) {
|
||||
if (aptr == arec) break;
|
||||
if(!asshuku) return;
|
||||
aptr = asshuku;
|
||||
aprev = NULL;
|
||||
while(aptr) {
|
||||
if(aptr == arec) break;
|
||||
aprev = aptr;
|
||||
aptr = aptr -> anext;
|
||||
aptr = aptr->anext;
|
||||
}
|
||||
|
||||
if(!aptr) return;
|
||||
|
||||
if (!aptr) return;
|
||||
|
||||
|
||||
if (aprev)
|
||||
aprev -> anext = arec -> anext;
|
||||
if(aprev)
|
||||
aprev->anext = arec->anext;
|
||||
|
||||
else
|
||||
assyuku = arec -> anext;
|
||||
|
||||
asshuku = arec->anext;
|
||||
|
||||
Free(arec);
|
||||
|
||||
|
||||
hrec -> anext = NULL;
|
||||
hrec->anext = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static HindoRec*
|
||||
makehindo(unsigned char* ptr, int len, int alen)
|
||||
{
|
||||
HindoRec *hrec;
|
||||
unsigned char *p;
|
||||
makehindo(unsigned char* ptr, int len, int alen) {
|
||||
HindoRec* hrec;
|
||||
unsigned char* p;
|
||||
|
||||
|
||||
hrec = (HindoRec *)Malloc(sizeof(HindoRec));
|
||||
if (!hrec) {
|
||||
hrec = (HindoRec*)Malloc(sizeof(HindoRec));
|
||||
if(!hrec) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n");
|
||||
exit(1);
|
||||
}
|
||||
p = (unsigned char *)Malloc(len);
|
||||
if (!p) {
|
||||
p = (unsigned char*)Malloc(len);
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
hrec -> klen = len;
|
||||
hrec -> kptr = p;
|
||||
if (len == alen && len > 2) {
|
||||
hrec -> hindo = 0;
|
||||
hrec -> exist = 1;
|
||||
hrec -> offset = ++kanji_num;
|
||||
hrec->klen = len;
|
||||
hrec->kptr = p;
|
||||
if(len == alen && len > 2) {
|
||||
hrec->hindo = 0;
|
||||
hrec->exist = 1;
|
||||
hrec->offset = ++kanji_num;
|
||||
} else {
|
||||
hrec->hindo = 1;
|
||||
hrec->exist = 0;
|
||||
hrec->offset = 0;
|
||||
}
|
||||
else {
|
||||
hrec -> hindo = 1;
|
||||
hrec -> exist = 0;
|
||||
hrec -> offset = 0;
|
||||
}
|
||||
while (len-- > 0) *p++ = *ptr++;
|
||||
hrec -> anext = NULL;
|
||||
hrec -> arec = NULL;
|
||||
while(len-- > 0) *p++ = *ptr++;
|
||||
hrec->anext = NULL;
|
||||
hrec->arec = NULL;
|
||||
|
||||
return hrec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
set_hindo(unsigned char* ptr, int len, int alen)
|
||||
{
|
||||
HindoRec *hrec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
set_hindo(unsigned char* ptr, int len, int alen) {
|
||||
HindoRec* hrec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
|
||||
if (hindo_num <= 0) {
|
||||
hrec = makehindo(ptr, len, alen);
|
||||
hindo[0]= hrec;
|
||||
if(hindo_num <= 0) {
|
||||
hrec = makehindo(ptr, len, alen);
|
||||
hindo[0] = hrec;
|
||||
hindo_num = 1;
|
||||
|
||||
|
||||
set_assyuku(hrec);
|
||||
set_asshuku(hrec);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
low = 0; high = hindo_num - 1;
|
||||
while (low <= high) {
|
||||
low = 0;
|
||||
high = hindo_num - 1;
|
||||
while(low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len);
|
||||
if (i > 0)
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len);
|
||||
if(i > 0)
|
||||
high = mid - 1;
|
||||
else if (i < 0)
|
||||
else if(i < 0)
|
||||
low = ++mid;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (i) {
|
||||
if (hindo_num >= MaxHindoNumber) {
|
||||
if(i) {
|
||||
if(hindo_num >= MaxHindoNumber) {
|
||||
fprintf(stderr, "\311\321\305\331\245\306\241\274\245\326\245\353\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
hrec = makehindo(ptr, len, alen);
|
||||
|
||||
|
||||
for (i = hindo_num ; i > mid ; i--) hindo[i] = hindo[i - 1];
|
||||
for(i = hindo_num; i > mid; i--) hindo[i] = hindo[i - 1];
|
||||
hindo[mid] = hrec;
|
||||
hindo_num++;
|
||||
}
|
||||
|
|
@ -351,73 +288,61 @@ set_hindo(unsigned char* ptr, int len, int alen)
|
|||
else {
|
||||
hrec = hindo[mid];
|
||||
|
||||
reset_asshuku(hrec);
|
||||
|
||||
reset_assyuku(hrec);
|
||||
if(hrec->exist > 0)
|
||||
hrec->exist += 1;
|
||||
|
||||
|
||||
if (hrec -> exist > 0)
|
||||
hrec -> exist += 1;
|
||||
|
||||
|
||||
else if (len == alen && len > 2) {
|
||||
hrec -> exist = 1;
|
||||
hrec -> offset = ++kanji_num;
|
||||
else if(len == alen && len > 2) {
|
||||
hrec->exist = 1;
|
||||
hrec->offset = ++kanji_num;
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
hrec -> hindo += 1;
|
||||
hrec->hindo += 1;
|
||||
}
|
||||
|
||||
|
||||
set_assyuku(hrec);
|
||||
set_asshuku(hrec);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
reset_hindo(unsigned char* p, int l)
|
||||
{
|
||||
HindoRec *hrec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
reset_hindo(unsigned char* p, int l) {
|
||||
HindoRec* hrec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
if(hindo_num <= 0) return;
|
||||
|
||||
if (hindo_num <= 0) return;
|
||||
|
||||
|
||||
low = 0; high = hindo_num - 1;
|
||||
while (low <= high) {
|
||||
low = 0;
|
||||
high = hindo_num - 1;
|
||||
while(low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, p, l);
|
||||
if (i > 0)
|
||||
i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, p, l);
|
||||
if(i > 0)
|
||||
high = mid - 1;
|
||||
else if (i < 0)
|
||||
else if(i < 0)
|
||||
low = ++mid;
|
||||
|
||||
else {
|
||||
hrec = hindo[mid];
|
||||
|
||||
reset_asshuku(hrec);
|
||||
|
||||
reset_assyuku(hrec);
|
||||
if(hrec->exist > 0)
|
||||
hrec->exist -= 1;
|
||||
else if(hrec->hindo > 0)
|
||||
hrec->hindo -= 1;
|
||||
|
||||
if (hrec -> exist > 0)
|
||||
hrec -> exist -= 1;
|
||||
else if (hrec -> hindo > 0)
|
||||
hrec -> hindo -= 1;
|
||||
|
||||
|
||||
if (hrec -> exist + hrec -> hindo == 0) {
|
||||
while (++mid < hindo_num) {
|
||||
if(hrec->exist + hrec->hindo == 0) {
|
||||
while(++mid < hindo_num) {
|
||||
hindo[mid - 1] = hindo[mid];
|
||||
}
|
||||
hindo_num--;
|
||||
Free(hrec -> kptr);
|
||||
Free(hrec->kptr);
|
||||
Free(hrec);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
|
||||
set_assyuku(hrec);
|
||||
set_asshuku(hrec);
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
@ -426,170 +351,141 @@ reset_hindo(unsigned char* p, int l)
|
|||
}
|
||||
}
|
||||
|
||||
void knjhnd_set(unsigned char* p, int l) {
|
||||
unsigned char* kp1;
|
||||
unsigned char* kp2;
|
||||
int i;
|
||||
int kl1;
|
||||
unsigned char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
|
||||
|
||||
void
|
||||
knjhnd_set(unsigned char* p, int l)
|
||||
{
|
||||
unsigned char *kp1;
|
||||
unsigned char *kp2;
|
||||
int i;
|
||||
int kl1;
|
||||
unsigned char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
|
||||
for(kp1 = p, kl1 = l; kl1 > 0;) {
|
||||
|
||||
for (kp1 = p, kl1 = l ; kl1 > 0 ; ) {
|
||||
|
||||
|
||||
for (i = 0, kp2 = kp1 ; i < kl1 ; ) {
|
||||
if (codesize(*kp2) == 1) {
|
||||
for(i = 0, kp2 = kp1; i < kl1;) {
|
||||
if(codesize(*kp2) == 1) {
|
||||
tmp[i++] = *kp2++;
|
||||
}
|
||||
else if (codesize(*kp2) == 2) {
|
||||
} else if(codesize(*kp2) == 2) {
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
} else {
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
}
|
||||
set_hindo(tmp, i, l);
|
||||
}
|
||||
|
||||
|
||||
kl1 -= codesize(*kp1);
|
||||
kp1 += codesize(*kp1);
|
||||
}
|
||||
}
|
||||
|
||||
void knjhnd_reset(unsigned char* p, int l) {
|
||||
unsigned char* kp1;
|
||||
unsigned char* kp2;
|
||||
int i;
|
||||
int kl1;
|
||||
unsigned char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
|
||||
|
||||
void
|
||||
knjhnd_reset(unsigned char* p, int l)
|
||||
{
|
||||
unsigned char *kp1;
|
||||
unsigned char *kp2;
|
||||
int i;
|
||||
int kl1;
|
||||
unsigned char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
|
||||
for(kp1 = p, kl1 = l; kl1 > 0;) {
|
||||
|
||||
for (kp1 = p, kl1 = l ; kl1 > 0 ; ) {
|
||||
|
||||
|
||||
for (i = 0, kp2 = kp1 ; i < kl1 ; ) {
|
||||
if (codesize(*kp2) == 1) {
|
||||
for(i = 0, kp2 = kp1; i < kl1;) {
|
||||
if(codesize(*kp2) == 1) {
|
||||
tmp[i++] = *kp2++;
|
||||
}
|
||||
else if (codesize(*kp2) == 2) {
|
||||
} else if(codesize(*kp2) == 2) {
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
} else {
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
tmp[i++] = *kp2++;
|
||||
}
|
||||
reset_hindo(tmp, i);
|
||||
}
|
||||
|
||||
|
||||
kl1 -= codesize(*kp1);
|
||||
kp1 += codesize(*kp1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
check_assyuku(HindoRec* p, HindoRec* q)
|
||||
{
|
||||
unsigned char ptmp[128], qtmp[128];
|
||||
int plen;
|
||||
int qlen;
|
||||
check_asshuku(HindoRec* p, HindoRec* q) {
|
||||
unsigned char ptmp[128], qtmp[128];
|
||||
int plen;
|
||||
int qlen;
|
||||
|
||||
plen = make_knjstr(p->kptr, p->klen, ptmp);
|
||||
|
||||
plen = make_knjstr(p -> kptr, p -> klen, ptmp);
|
||||
qlen = make_knjstr(q->kptr, q->klen, qtmp);
|
||||
|
||||
|
||||
qlen = make_knjstr(q -> kptr, q -> klen, qtmp);
|
||||
|
||||
|
||||
if (bubun_str(ptmp, plen, qtmp, qlen)) {
|
||||
if(bubun_str(ptmp, plen, qtmp, qlen)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (overlap_str(ptmp, plen, qtmp, qlen))
|
||||
if(overlap_str(ptmp, plen, qtmp, qlen))
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
decide_knjask(void)
|
||||
{
|
||||
int i, j;
|
||||
AssyukuRec *p;
|
||||
HindoRec *q;
|
||||
unsigned char *r;
|
||||
int len = 0;
|
||||
int decide_knjask(void) {
|
||||
int i, j;
|
||||
AsshukuRec* p;
|
||||
HindoRec* q;
|
||||
unsigned char* r;
|
||||
int len = 0;
|
||||
|
||||
askknj_num = 0;
|
||||
|
||||
for(p = asshuku; p; p = p->anext) {
|
||||
|
||||
for (p = assyuku ; p ; p = p -> anext) {
|
||||
if(p->len <= 0) break;
|
||||
|
||||
for(q = p->nrec; q; q = q->anext) {
|
||||
|
||||
if (p -> len <= 0) break;
|
||||
|
||||
|
||||
for (q = p -> nrec ; q ; q = q -> anext) {
|
||||
|
||||
|
||||
i = q -> klen;
|
||||
r = q -> kptr;
|
||||
if (i > 2) {
|
||||
while (i > 0) {
|
||||
if ((*r & KanjiModeMask)
|
||||
== OffsetAssyuku) {
|
||||
i = q->klen;
|
||||
r = q->kptr;
|
||||
if(i > 2) {
|
||||
while(i > 0) {
|
||||
if((*r & KanjiModeMask) == OffsetAsshuku) {
|
||||
break;
|
||||
}
|
||||
j = codesize(*r);
|
||||
i -= j;
|
||||
r += j;
|
||||
}
|
||||
if (i) continue;
|
||||
if(i) continue;
|
||||
}
|
||||
|
||||
if (askknj_num) {
|
||||
if(askknj_num) {
|
||||
|
||||
for (i = 0 ; i < askknj_num ; i++) {
|
||||
if (check_assyuku(askknj[i], q))
|
||||
for(i = 0; i < askknj_num; i++) {
|
||||
if(check_asshuku(askknj[i], q))
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (i >= askknj_num) {
|
||||
if(i >= askknj_num) {
|
||||
askknj[askknj_num++] = q;
|
||||
len += p -> len;
|
||||
if (askknj_num >= MaxKnjAskNumber)
|
||||
len += p->len;
|
||||
if(askknj_num >= MaxKnjAskNumber)
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
askknj[askknj_num++] = q;
|
||||
len += p -> len;
|
||||
len += p->len;
|
||||
}
|
||||
}
|
||||
}
|
||||
end:
|
||||
{
|
||||
int i, j, len;
|
||||
unsigned char *p;
|
||||
int i, j, len;
|
||||
unsigned char* p;
|
||||
|
||||
for (i = 0 ; i < askknj_num ; i++) {
|
||||
len = askknj[i] -> klen;
|
||||
p = askknj[i] -> kptr;
|
||||
if (len <= 2) continue;
|
||||
while (len > 0) {
|
||||
if ((*p & KanjiModeMask) == OffsetAssyuku) {
|
||||
for(i = 0; i < askknj_num; i++) {
|
||||
len = askknj[i]->klen;
|
||||
p = askknj[i]->kptr;
|
||||
if(len <= 2) continue;
|
||||
while(len > 0) {
|
||||
if((*p & KanjiModeMask) == OffsetAsshuku) {
|
||||
printf("\245\252\245\325\245\273\245\303\245\310\260\265\275\314\244\362\264\336\244\340 %d\n", i);
|
||||
}
|
||||
j = codesize(*p);
|
||||
|
|
@ -601,13 +497,10 @@ end:
|
|||
return len;
|
||||
}
|
||||
|
||||
void clear_hindo(void) {
|
||||
int i;
|
||||
|
||||
void
|
||||
clear_hindo(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0 ; i < hindo_num ; i++) {
|
||||
for(i = 0; i < hindo_num; i++) {
|
||||
Free(hindo[i]->kptr);
|
||||
Free(hindo[i]);
|
||||
}
|
||||
|
|
@ -615,15 +508,12 @@ clear_hindo(void)
|
|||
kanji_num = 0;
|
||||
}
|
||||
|
||||
void clear_asshuku(void) {
|
||||
AsshukuRec* p;
|
||||
|
||||
void
|
||||
clear_assyuku(void)
|
||||
{
|
||||
AssyukuRec *p;
|
||||
|
||||
while (assyuku) {
|
||||
p = assyuku;
|
||||
assyuku = assyuku -> anext;
|
||||
while(asshuku) {
|
||||
p = asshuku;
|
||||
asshuku = asshuku->anext;
|
||||
Free(p);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
249
hinshi.c
Normal file
249
hinshi.c
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
/*
|
||||
* Copyright (c) 1991-1994 Sony Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name of Sony Corporation
|
||||
* shall not be used in advertising or otherwise to promote the sale, use
|
||||
* or other dealings in this Software without prior written authorization
|
||||
* from Sony Corporation.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sj_hinshi.h"
|
||||
|
||||
static struct hlist {
|
||||
int code;
|
||||
char* str;
|
||||
} hinshi[] = {
|
||||
{MEISHI_1, "\314\276\273\354"},
|
||||
{MEISHI_1, "\314\276\243\261"},
|
||||
{MEISHI_2, "\314\276\243\262"},
|
||||
{MEISHI_3, "\314\276\243\263"},
|
||||
{MEISHI_4, "\314\276\243\264"},
|
||||
{MEISHI_5, "\314\276\243\265"},
|
||||
{MEISHI_6, "\314\276\243\266"},
|
||||
{MEISHI_7, "\314\276\243\267"},
|
||||
{MEISHI_8, "\314\276\243\270"},
|
||||
{MEISHI_9, "\314\276\243\271"},
|
||||
{MEISHI_10, "\314\276\243\261\243\260"},
|
||||
{MEISHI_11, "\314\276\243\261\243\261"},
|
||||
{MEISHI_20, "\314\276\243\262\243\260"},
|
||||
{D_MEISHI_1, "\302\345\314\276\273\354"},
|
||||
{D_MEISHI_1, "\302\345\243\261"},
|
||||
{D_MEISHI_2, "\302\345\243\262"},
|
||||
{D_MEISHI_3, "\302\345\243\263"},
|
||||
{D_MEISHI_4, "\302\345\243\264"},
|
||||
{D_MEISHI_5, "\302\345\243\265"},
|
||||
{D_MEISHI_6, "\302\345\243\266"},
|
||||
{MYOUJI, "\311\304\273\372"},
|
||||
{NAMAE, "\314\276\301\260"},
|
||||
{KIGYOU, "\264\353\266\310"},
|
||||
{TIMEI, "\303\317\314\276"},
|
||||
{KEN_KU, "\270\251\241\277\266\350\314\276"},
|
||||
{KEN_KU, "\270\251\266\350"},
|
||||
{RENTAISHI, "\317\242\302\316\273\354"},
|
||||
{RENTAISHI, "\317\242\302\316"},
|
||||
{SETSUZOKU, "\300\334\302\263\273\354"},
|
||||
{SETSUZOKU, "\300\334\302\263"},
|
||||
{KANDOUSHI, "\264\266\306\260"},
|
||||
{JOSUUSHI, "\275\365\277\364\273\354"},
|
||||
{JOSUUSHI, "\275\365\277\364"},
|
||||
{SUUSHI, "\277\364\273\354"},
|
||||
{SETTOU_1, "\300\334\306\254\270\354"},
|
||||
{SETTOU_1, "\300\334\306\254\243\261"},
|
||||
{SETTOU_2, "\300\334\306\254\243\262"},
|
||||
{SETTOU_3, "\300\334\306\254\243\263"},
|
||||
{SETTOU_4, "\300\334\306\254\243\264"},
|
||||
{SETTOU_5, "\300\334\306\254\243\265"},
|
||||
{SETSUBI_1, "\300\334\310\370\270\354"},
|
||||
{SETSUBI_1, "\300\334\310\370\243\261"},
|
||||
{SETSUBI_2, "\300\334\310\370\243\262"},
|
||||
{SETSUBI_3, "\300\334\310\370\243\263"},
|
||||
{SETSUBI_4, "\300\334\310\370\243\264"},
|
||||
{SETSUBI_5, "\300\334\310\370\243\265"},
|
||||
{SETSUBI_6, "\300\334\310\370\243\266"},
|
||||
{SETSUBI_7, "\300\334\310\370\243\267"},
|
||||
{SETSUBI_8, "\300\334\310\370\243\270"},
|
||||
{SETSUBI_9, "\300\334\310\370\243\271"},
|
||||
{FUKUSHI_1, "\311\373\273\354"},
|
||||
{FUKUSHI_1, "\311\373\243\261"},
|
||||
{FUKUSHI_2, "\311\373\243\262"},
|
||||
{FUKUSHI_3, "\311\373\243\263"},
|
||||
{FUKUSHI_4, "\311\373\243\264"},
|
||||
{FUKUSHI_5, "\311\373\243\265"},
|
||||
{FUKUSHI_6, "\311\373\243\266"},
|
||||
{FUKUSHI_7, "\311\373\243\267"},
|
||||
{FUKUSHI_8, "\311\373\243\270"},
|
||||
{FUKUSHI_9, "\311\373\243\271"},
|
||||
{JOSUUSHI2, "\275\365\277\364\243\262"},
|
||||
{KEIYOUSHI_1, "\267\301\315\306\273\354"},
|
||||
{KEIYOUSHI_1, "\267\301\243\261"},
|
||||
{KEIYOUSHI_2, "\267\301\243\262"},
|
||||
{KEIYOUSHI_3, "\267\301\243\263"},
|
||||
{KEIYOUSHI_4, "\267\301\243\264"},
|
||||
{KEIYOUSHI_5, "\267\301\243\265"},
|
||||
{KEIYOUSHI_6, "\267\301\243\266"},
|
||||
{KEIYOUSHI_7, "\267\301\243\267"},
|
||||
{KEIYOUSHI_8, "\267\301\243\270"},
|
||||
{KEIYOUSHI_9, "\267\301\243\271"},
|
||||
{KEIYOUSHI_10, "\267\301\243\261\243\260"},
|
||||
{KEIYOUSHI_11, "\267\301\243\261\243\261"},
|
||||
{KE_DOUSHI_1, "\267\301\315\306\306\260\273\354"},
|
||||
{KE_DOUSHI_1, "\267\301\306\260\243\261"},
|
||||
{KE_DOUSHI_2, "\267\301\306\260\243\262"},
|
||||
{KE_DOUSHI_3, "\267\301\306\260\243\263"},
|
||||
{KE_DOUSHI_4, "\267\301\306\260\243\264"},
|
||||
{KE_DOUSHI_5, "\267\301\306\260\243\265"},
|
||||
{KE_DOUSHI_6, "\267\301\306\260\243\266"},
|
||||
{KE_DOUSHI_7, "\267\301\306\260\243\267"},
|
||||
{KE_DOUSHI_8, "\267\301\306\260\243\270"},
|
||||
{KE_DOUSHI_9, "\267\301\306\260\243\271"},
|
||||
{DO_SAHEN, "\306\260\241\246\245\265\312\321"},
|
||||
{DO_SAHEN, "\245\265\312\321"},
|
||||
{DO_ZAHEN, "\306\260\241\246\245\266\312\321"},
|
||||
{DO_ZAHEN, "\245\266\312\321"},
|
||||
{DO_1DAN_1, "\306\260\241\246\260\354\303\312"},
|
||||
{DO_1DAN_1, "\260\354\303\312\243\261"},
|
||||
{DO_KAGO_1, "\306\260\241\246\245\253\270\336"},
|
||||
{DO_KAGO_1, "\245\253\270\336\243\261"},
|
||||
{DO_GAGO_1, "\306\260\241\246\245\254\270\336"},
|
||||
{DO_GAGO_1, "\245\254\270\336\243\261"},
|
||||
{DO_SAGO_1, "\306\260\241\246\245\265\270\336"},
|
||||
{DO_SAGO_1, "\245\265\270\336\243\261"},
|
||||
{DO_TAGO_1, "\306\260\241\246\245\277\270\336"},
|
||||
{DO_TAGO_1, "\245\277\270\336\243\261"},
|
||||
{DO_NAGO_1, "\306\260\241\246\245\312\270\336"},
|
||||
{DO_NAGO_1, "\245\312\270\336"},
|
||||
{DO_BAGO_1, "\306\260\241\246\245\320\270\336"},
|
||||
{DO_BAGO_1, "\245\320\270\336\243\261"},
|
||||
{DO_MAGO_1, "\306\260\241\246\245\336\270\336"},
|
||||
{DO_MAGO_1, "\245\336\270\336\243\261"},
|
||||
{DO_RAGO_1, "\306\260\241\246\245\351\270\336"},
|
||||
{DO_RAGO_1, "\245\351\270\336\243\261"},
|
||||
{DO_WAGO_1, "\306\260\241\246\245\357\270\336"},
|
||||
{DO_WAGO_1, "\245\357\270\336\243\261"},
|
||||
{DO_1DAN_2, "\260\354\303\312\243\262"},
|
||||
{DO_KAGO_2, "\245\253\270\336\243\262"},
|
||||
{DO_GAGO_2, "\245\254\270\336\243\262"},
|
||||
{DO_SAGO_2, "\245\265\270\336\243\262"},
|
||||
{DO_TAGO_2, "\245\277\270\336\243\262"},
|
||||
{DO_BAGO_2, "\245\320\270\336\243\262"},
|
||||
{DO_MAGO_2, "\245\336\270\336\243\262"},
|
||||
{DO_RAGO_2, "\245\351\270\336\243\262"},
|
||||
{DO_WAGO_2, "\245\357\270\336\243\262"},
|
||||
{DO_KAGO_5, "\245\253\270\336\243\265"},
|
||||
{DO_GAGO_5, "\245\254\270\336\243\265"},
|
||||
{DO_SAGO_5, "\245\265\270\336\243\265"},
|
||||
{DO_TAGO_5, "\245\277\270\336\243\265"},
|
||||
{DO_BAGO_5, "\245\320\270\336\243\265"},
|
||||
{DO_MAGO_5, "\245\336\270\336\243\265"},
|
||||
{DO_RAGO_5, "\245\351\270\336\243\265"},
|
||||
{DO_WAGO_5, "\245\357\270\336\243\265"},
|
||||
{DO_KAGO_6, "\245\253\270\336\243\266"},
|
||||
{DO_GAGO_6, "\245\254\270\336\243\266"},
|
||||
{DO_SAGO_6, "\245\265\270\336\243\266"},
|
||||
{DO_TAGO_6, "\245\277\270\336\243\266"},
|
||||
{DO_BAGO_6, "\245\320\270\336\243\266"},
|
||||
{DO_MAGO_6, "\245\336\270\336\243\266"},
|
||||
{DO_RAGO_6, "\245\351\270\336\243\266"},
|
||||
{DO_WAGO_6, "\245\357\270\336\243\266"},
|
||||
{DO_1DAN_3, "\260\354\303\312\243\263"},
|
||||
{DO_KAGO_3, "\245\253\270\336\243\263"},
|
||||
{DO_GAGO_3, "\245\254\270\336\243\263"},
|
||||
{DO_SAGO_3, "\245\265\270\336\243\263"},
|
||||
{DO_TAGO_3, "\245\277\270\336\243\263"},
|
||||
{DO_BAGO_3, "\245\320\270\336\243\263"},
|
||||
{DO_MAGO_3, "\245\336\270\336\243\263"},
|
||||
{DO_RAGO_3, "\245\351\270\336\243\263"},
|
||||
{DO_WAGO_3, "\245\357\270\336\243\263"},
|
||||
{DO_1DAN_4, "\260\354\303\312\243\264"},
|
||||
{DO_KAGO_4, "\245\253\270\336\243\264"},
|
||||
{DO_GAGO_4, "\245\254\270\336\243\264"},
|
||||
{DO_SAGO_4, "\245\265\270\336\243\264"},
|
||||
{DO_TAGO_4, "\245\277\270\336\243\264"},
|
||||
{DO_BAGO_4, "\245\320\270\336\243\264"},
|
||||
{DO_MAGO_4, "\245\336\270\336\243\264"},
|
||||
{DO_RAGO_4, "\245\351\270\336\243\264"},
|
||||
{DO_WAGO_4, "\245\357\270\336\243\264"},
|
||||
{DO_KAGO_7, "\245\253\270\336\243\267"},
|
||||
{DO_GAGO_7, "\245\254\270\336\243\267"},
|
||||
{DO_SAGO_7, "\245\265\270\336\243\267"},
|
||||
{DO_TAGO_7, "\245\277\270\336\243\267"},
|
||||
{DO_BAGO_7, "\245\320\270\336\243\267"},
|
||||
{DO_MAGO_7, "\245\336\270\336\243\267"},
|
||||
{DO_RAGO_7, "\245\351\270\336\243\267"},
|
||||
{DO_WAGO_7, "\245\357\270\336\243\267"},
|
||||
{DO_KAGO_8, "\245\253\270\336\243\270"},
|
||||
{DO_GAGO_8, "\245\254\270\336\243\270"},
|
||||
{DO_SAGO_8, "\245\265\270\336\243\270"},
|
||||
{DO_TAGO_8, "\245\277\270\336\243\270"},
|
||||
{DO_BAGO_8, "\245\320\270\336\243\270"},
|
||||
{DO_MAGO_8, "\245\336\270\336\243\270"},
|
||||
{DO_RAGO_8, "\245\351\270\336\243\270"},
|
||||
{DO_WAGO_8, "\245\357\270\336\243\270"},
|
||||
{SP_SA_MI1, "\245\265\312\321\314\244\243\261"},
|
||||
{SP_SA_MI2, "\245\265\312\321\314\244\243\262"},
|
||||
{SP_SA_YOU, "\245\265\312\321\314\244\315\321"},
|
||||
{SP_SA_SHU, "\245\265\312\321\275\252\302\316"},
|
||||
{SP_SA_KAT, "\245\265\312\321\262\276"},
|
||||
{SP_SA_ME1, "\245\265\312\321\314\277\243\261"},
|
||||
{SP_SA_ME2, "\245\265\312\321\314\277\243\262"},
|
||||
{SP_KA_MIZ, "\245\253\312\321\314\244"},
|
||||
{SP_KA_YOU, "\245\253\312\321\315\321"},
|
||||
{SP_KA_SHU, "\245\253\312\321\275\252\302\316"},
|
||||
{SP_KA_KAT, "\245\253\312\321\262\276"},
|
||||
{SP_KA_MEI, "\245\253\312\321\314\277"},
|
||||
{TEINEI1, "\303\372\307\253\243\261"},
|
||||
{TEINEI2, "\303\372\307\253\243\262"},
|
||||
{SP_KA_ONB, "\245\253\270\336\262\273\312\330"},
|
||||
{SP_FUKUSHI, "\306\303\274\354\311\373"},
|
||||
{AISATSU, "\260\247\273\242"},
|
||||
{SP_KEIYOUSHI, "\306\303\274\354\267\301\315\306"},
|
||||
{TANKANJI, "\303\261\264\301\273\372"},
|
||||
{TANKANJI, "\303\261\264\301"},
|
||||
{IKKATU, "\260\354\263\347"},
|
||||
{0, 0}};
|
||||
|
||||
char* hns2str(code)
|
||||
int code;
|
||||
{
|
||||
struct hlist* p;
|
||||
|
||||
for(p = hinshi; p->code; p++) {
|
||||
if(p->code == code)
|
||||
return p->str;
|
||||
}
|
||||
|
||||
return "ERROR";
|
||||
}
|
||||
|
||||
int str2hns(str)
|
||||
char* str;
|
||||
{
|
||||
struct hlist* p;
|
||||
|
||||
for(p = hinshi; p->code; p++) {
|
||||
if(strcmp(p->str, str) == 0)
|
||||
return p->code;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
259
hinsi.c
259
hinsi.c
|
|
@ -1,259 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 1991-1994 Sony Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name of Sony Corporation
|
||||
* shall not be used in advertising or otherwise to promote the sale, use
|
||||
* or other dealings in this Software without prior written authorization
|
||||
* from Sony Corporation.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: hinsi.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:36 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "sj_hinsi.h"
|
||||
|
||||
static struct hlist {
|
||||
int code;
|
||||
char *str;
|
||||
} hinsi[] = {
|
||||
{MEISI_1, "\314\276\273\354"},
|
||||
{MEISI_1, "\314\276\243\261"},
|
||||
{MEISI_2, "\314\276\243\262"},
|
||||
{MEISI_3, "\314\276\243\263"},
|
||||
{MEISI_4, "\314\276\243\264"},
|
||||
{MEISI_5, "\314\276\243\265"},
|
||||
{MEISI_6, "\314\276\243\266"},
|
||||
{MEISI_7, "\314\276\243\267"},
|
||||
{MEISI_8, "\314\276\243\270"},
|
||||
{MEISI_9, "\314\276\243\271"},
|
||||
{MEISI_10, "\314\276\243\261\243\260"},
|
||||
{MEISI_11, "\314\276\243\261\243\261"},
|
||||
{MEISI_20, "\314\276\243\262\243\260"},
|
||||
{D_MEISI_1, "\302\345\314\276\273\354"},
|
||||
{D_MEISI_1, "\302\345\243\261"},
|
||||
{D_MEISI_2, "\302\345\243\262"},
|
||||
{D_MEISI_3, "\302\345\243\263"},
|
||||
{D_MEISI_4, "\302\345\243\264"},
|
||||
{D_MEISI_5, "\302\345\243\265"},
|
||||
{D_MEISI_6, "\302\345\243\266"},
|
||||
{MYOUJI, "\311\304\273\372"},
|
||||
{NAMAE, "\314\276\301\260"},
|
||||
{KIGYOU, "\264\353\266\310"},
|
||||
{TIMEI, "\303\317\314\276"},
|
||||
{KEN_KU, "\270\251\241\277\266\350\314\276"},
|
||||
{KEN_KU, "\270\251\266\350"},
|
||||
{RENTAISI, "\317\242\302\316\273\354"},
|
||||
{RENTAISI, "\317\242\302\316"},
|
||||
{SETUZOKU, "\300\334\302\263\273\354"},
|
||||
{SETUZOKU, "\300\334\302\263"},
|
||||
{KANDOUSI, "\264\266\306\260"},
|
||||
{JOSUUSI, "\275\365\277\364\273\354"},
|
||||
{JOSUUSI, "\275\365\277\364"},
|
||||
{SUUSI, "\277\364\273\354"},
|
||||
{SETTOU_1, "\300\334\306\254\270\354"},
|
||||
{SETTOU_1, "\300\334\306\254\243\261"},
|
||||
{SETTOU_2, "\300\334\306\254\243\262"},
|
||||
{SETTOU_3, "\300\334\306\254\243\263"},
|
||||
{SETTOU_4, "\300\334\306\254\243\264"},
|
||||
{SETTOU_5, "\300\334\306\254\243\265"},
|
||||
{SETUBI_1, "\300\334\310\370\270\354"},
|
||||
{SETUBI_1, "\300\334\310\370\243\261"},
|
||||
{SETUBI_2, "\300\334\310\370\243\262"},
|
||||
{SETUBI_3, "\300\334\310\370\243\263"},
|
||||
{SETUBI_4, "\300\334\310\370\243\264"},
|
||||
{SETUBI_5, "\300\334\310\370\243\265"},
|
||||
{SETUBI_6, "\300\334\310\370\243\266"},
|
||||
{SETUBI_7, "\300\334\310\370\243\267"},
|
||||
{SETUBI_8, "\300\334\310\370\243\270"},
|
||||
{SETUBI_9, "\300\334\310\370\243\271"},
|
||||
{FUKUSI_1, "\311\373\273\354"},
|
||||
{FUKUSI_1, "\311\373\243\261"},
|
||||
{FUKUSI_2, "\311\373\243\262"},
|
||||
{FUKUSI_3, "\311\373\243\263"},
|
||||
{FUKUSI_4, "\311\373\243\264"},
|
||||
{FUKUSI_5, "\311\373\243\265"},
|
||||
{FUKUSI_6, "\311\373\243\266"},
|
||||
{FUKUSI_7, "\311\373\243\267"},
|
||||
{FUKUSI_8, "\311\373\243\270"},
|
||||
{FUKUSI_9, "\311\373\243\271"},
|
||||
{JOSUUSI2, "\275\365\277\364\243\262"},
|
||||
{KEIYOUSI_1, "\267\301\315\306\273\354"},
|
||||
{KEIYOUSI_1, "\267\301\243\261"},
|
||||
{KEIYOUSI_2, "\267\301\243\262"},
|
||||
{KEIYOUSI_3, "\267\301\243\263"},
|
||||
{KEIYOUSI_4, "\267\301\243\264"},
|
||||
{KEIYOUSI_5, "\267\301\243\265"},
|
||||
{KEIYOUSI_6, "\267\301\243\266"},
|
||||
{KEIYOUSI_7, "\267\301\243\267"},
|
||||
{KEIYOUSI_8, "\267\301\243\270"},
|
||||
{KEIYOUSI_9, "\267\301\243\271"},
|
||||
{KEIYOUSI_10, "\267\301\243\261\243\260"},
|
||||
{KEIYOUSI_11, "\267\301\243\261\243\261"},
|
||||
{KE_DOUSI_1, "\267\301\315\306\306\260\273\354"},
|
||||
{KE_DOUSI_1, "\267\301\306\260\243\261"},
|
||||
{KE_DOUSI_2, "\267\301\306\260\243\262"},
|
||||
{KE_DOUSI_3, "\267\301\306\260\243\263"},
|
||||
{KE_DOUSI_4, "\267\301\306\260\243\264"},
|
||||
{KE_DOUSI_5, "\267\301\306\260\243\265"},
|
||||
{KE_DOUSI_6, "\267\301\306\260\243\266"},
|
||||
{KE_DOUSI_7, "\267\301\306\260\243\267"},
|
||||
{KE_DOUSI_8, "\267\301\306\260\243\270"},
|
||||
{KE_DOUSI_9, "\267\301\306\260\243\271"},
|
||||
{DO_SAHEN, "\306\260\241\246\245\265\312\321"},
|
||||
{DO_SAHEN, "\245\265\312\321"},
|
||||
{DO_ZAHEN, "\306\260\241\246\245\266\312\321"},
|
||||
{DO_ZAHEN, "\245\266\312\321"},
|
||||
{DO_1DAN_1, "\306\260\241\246\260\354\303\312"},
|
||||
{DO_1DAN_1, "\260\354\303\312\243\261"},
|
||||
{DO_KAGO_1, "\306\260\241\246\245\253\270\336"},
|
||||
{DO_KAGO_1, "\245\253\270\336\243\261"},
|
||||
{DO_GAGO_1, "\306\260\241\246\245\254\270\336"},
|
||||
{DO_GAGO_1, "\245\254\270\336\243\261"},
|
||||
{DO_SAGO_1, "\306\260\241\246\245\265\270\336"},
|
||||
{DO_SAGO_1, "\245\265\270\336\243\261"},
|
||||
{DO_TAGO_1, "\306\260\241\246\245\277\270\336"},
|
||||
{DO_TAGO_1, "\245\277\270\336\243\261"},
|
||||
{DO_NAGO_1, "\306\260\241\246\245\312\270\336"},
|
||||
{DO_NAGO_1, "\245\312\270\336"},
|
||||
{DO_BAGO_1, "\306\260\241\246\245\320\270\336"},
|
||||
{DO_BAGO_1, "\245\320\270\336\243\261"},
|
||||
{DO_MAGO_1, "\306\260\241\246\245\336\270\336"},
|
||||
{DO_MAGO_1, "\245\336\270\336\243\261"},
|
||||
{DO_RAGO_1, "\306\260\241\246\245\351\270\336"},
|
||||
{DO_RAGO_1, "\245\351\270\336\243\261"},
|
||||
{DO_WAGO_1, "\306\260\241\246\245\357\270\336"},
|
||||
{DO_WAGO_1, "\245\357\270\336\243\261"},
|
||||
{DO_1DAN_2, "\260\354\303\312\243\262"},
|
||||
{DO_KAGO_2, "\245\253\270\336\243\262"},
|
||||
{DO_GAGO_2, "\245\254\270\336\243\262"},
|
||||
{DO_SAGO_2, "\245\265\270\336\243\262"},
|
||||
{DO_TAGO_2, "\245\277\270\336\243\262"},
|
||||
{DO_BAGO_2, "\245\320\270\336\243\262"},
|
||||
{DO_MAGO_2, "\245\336\270\336\243\262"},
|
||||
{DO_RAGO_2, "\245\351\270\336\243\262"},
|
||||
{DO_WAGO_2, "\245\357\270\336\243\262"},
|
||||
{DO_KAGO_5, "\245\253\270\336\243\265"},
|
||||
{DO_GAGO_5, "\245\254\270\336\243\265"},
|
||||
{DO_SAGO_5, "\245\265\270\336\243\265"},
|
||||
{DO_TAGO_5, "\245\277\270\336\243\265"},
|
||||
{DO_BAGO_5, "\245\320\270\336\243\265"},
|
||||
{DO_MAGO_5, "\245\336\270\336\243\265"},
|
||||
{DO_RAGO_5, "\245\351\270\336\243\265"},
|
||||
{DO_WAGO_5, "\245\357\270\336\243\265"},
|
||||
{DO_KAGO_6, "\245\253\270\336\243\266"},
|
||||
{DO_GAGO_6, "\245\254\270\336\243\266"},
|
||||
{DO_SAGO_6, "\245\265\270\336\243\266"},
|
||||
{DO_TAGO_6, "\245\277\270\336\243\266"},
|
||||
{DO_BAGO_6, "\245\320\270\336\243\266"},
|
||||
{DO_MAGO_6, "\245\336\270\336\243\266"},
|
||||
{DO_RAGO_6, "\245\351\270\336\243\266"},
|
||||
{DO_WAGO_6, "\245\357\270\336\243\266"},
|
||||
{DO_1DAN_3, "\260\354\303\312\243\263"},
|
||||
{DO_KAGO_3, "\245\253\270\336\243\263"},
|
||||
{DO_GAGO_3, "\245\254\270\336\243\263"},
|
||||
{DO_SAGO_3, "\245\265\270\336\243\263"},
|
||||
{DO_TAGO_3, "\245\277\270\336\243\263"},
|
||||
{DO_BAGO_3, "\245\320\270\336\243\263"},
|
||||
{DO_MAGO_3, "\245\336\270\336\243\263"},
|
||||
{DO_RAGO_3, "\245\351\270\336\243\263"},
|
||||
{DO_WAGO_3, "\245\357\270\336\243\263"},
|
||||
{DO_1DAN_4, "\260\354\303\312\243\264"},
|
||||
{DO_KAGO_4, "\245\253\270\336\243\264"},
|
||||
{DO_GAGO_4, "\245\254\270\336\243\264"},
|
||||
{DO_SAGO_4, "\245\265\270\336\243\264"},
|
||||
{DO_TAGO_4, "\245\277\270\336\243\264"},
|
||||
{DO_BAGO_4, "\245\320\270\336\243\264"},
|
||||
{DO_MAGO_4, "\245\336\270\336\243\264"},
|
||||
{DO_RAGO_4, "\245\351\270\336\243\264"},
|
||||
{DO_WAGO_4, "\245\357\270\336\243\264"},
|
||||
{DO_KAGO_7, "\245\253\270\336\243\267"},
|
||||
{DO_GAGO_7, "\245\254\270\336\243\267"},
|
||||
{DO_SAGO_7, "\245\265\270\336\243\267"},
|
||||
{DO_TAGO_7, "\245\277\270\336\243\267"},
|
||||
{DO_BAGO_7, "\245\320\270\336\243\267"},
|
||||
{DO_MAGO_7, "\245\336\270\336\243\267"},
|
||||
{DO_RAGO_7, "\245\351\270\336\243\267"},
|
||||
{DO_WAGO_7, "\245\357\270\336\243\267"},
|
||||
{DO_KAGO_8, "\245\253\270\336\243\270"},
|
||||
{DO_GAGO_8, "\245\254\270\336\243\270"},
|
||||
{DO_SAGO_8, "\245\265\270\336\243\270"},
|
||||
{DO_TAGO_8, "\245\277\270\336\243\270"},
|
||||
{DO_BAGO_8, "\245\320\270\336\243\270"},
|
||||
{DO_MAGO_8, "\245\336\270\336\243\270"},
|
||||
{DO_RAGO_8, "\245\351\270\336\243\270"},
|
||||
{DO_WAGO_8, "\245\357\270\336\243\270"},
|
||||
{SP_SA_MI1, "\245\265\312\321\314\244\243\261"},
|
||||
{SP_SA_MI2, "\245\265\312\321\314\244\243\262"},
|
||||
{SP_SA_YOU, "\245\265\312\321\314\244\315\321"},
|
||||
{SP_SA_SYU, "\245\265\312\321\275\252\302\316"},
|
||||
{SP_SA_KAT, "\245\265\312\321\262\276"},
|
||||
{SP_SA_ME1, "\245\265\312\321\314\277\243\261"},
|
||||
{SP_SA_ME2, "\245\265\312\321\314\277\243\262"},
|
||||
{SP_KA_MIZ, "\245\253\312\321\314\244"},
|
||||
{SP_KA_YOU, "\245\253\312\321\315\321"},
|
||||
{SP_KA_SYU, "\245\253\312\321\275\252\302\316"},
|
||||
{SP_KA_KAT, "\245\253\312\321\262\276"},
|
||||
{SP_KA_MEI, "\245\253\312\321\314\277"},
|
||||
{TEINEI1, "\303\372\307\253\243\261"},
|
||||
{TEINEI2, "\303\372\307\253\243\262"},
|
||||
{SP_KA_ONB, "\245\253\270\336\262\273\312\330"},
|
||||
{SP_FUKUSI, "\306\303\274\354\311\373"},
|
||||
{AISATU, "\260\247\273\242"},
|
||||
{SP_KEIYOUSI, "\306\303\274\354\267\301\315\306"},
|
||||
{TANKANJI, "\303\261\264\301\273\372"},
|
||||
{TANKANJI, "\303\261\264\301"},
|
||||
{IKKATU, "\260\354\263\347"},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
char *hns2str(code)
|
||||
int code;
|
||||
{
|
||||
struct hlist *p;
|
||||
|
||||
for (p = hinsi ; p -> code ; p++) {
|
||||
if (p -> code == code)
|
||||
return p -> str;
|
||||
}
|
||||
|
||||
return "ERROR";
|
||||
}
|
||||
|
||||
int str2hns(str)
|
||||
char *str;
|
||||
{
|
||||
struct hlist *p;
|
||||
|
||||
for (p = hinsi ; p -> code ; p++) {
|
||||
if (strcmp(p -> str, str) == 0)
|
||||
return p -> code;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
28
hzstrlen.c
28
hzstrlen.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: hzstrlen.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:52 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_euc.h"
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
|
|
@ -43,26 +34,21 @@
|
|||
#include "sj_dict.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int
|
||||
euc_codesize (unsigned char c)
|
||||
{
|
||||
if ((c & KanjiModeMask) == 0x90) {
|
||||
int euc_codesize(unsigned char c) {
|
||||
if((c & KanjiModeMask) == 0x90) {
|
||||
return 1;
|
||||
} else if (isknj1(c)) {
|
||||
} else if(isknj1(c)) {
|
||||
return 2;
|
||||
} else if (c == SS3) {
|
||||
} else if(c == SS3) {
|
||||
return 3;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
hzstrlen (unsigned char *ptr, int len)
|
||||
{
|
||||
unsigned char *head;
|
||||
int hzstrlen(unsigned char* ptr, int len) {
|
||||
unsigned char* head;
|
||||
head = ptr;
|
||||
while (len-- > 0) ptr += euc_codesize(*ptr);
|
||||
while(len-- > 0) ptr += euc_codesize(*ptr);
|
||||
return (ptr - head);
|
||||
}
|
||||
|
||||
|
|
|
|||
46
init.c
46
init.c
|
|
@ -27,44 +27,36 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: init.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:54 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
|
||||
void seg_count(dict)
|
||||
DICT *dict;
|
||||
void seg_count(dict)
|
||||
DICT* dict;
|
||||
{
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
TypeDicSeg segcnt = 0;
|
||||
unsigned char* p;
|
||||
unsigned char* q;
|
||||
TypeDicSeg segcnt = 0;
|
||||
|
||||
if (dict-> getidx) {
|
||||
if(dict->getidx) {
|
||||
(*dict->getidx)(dict);
|
||||
|
||||
p = idxbuf;
|
||||
q = p + dict->idxlen;
|
||||
while (p < q && *p) {
|
||||
while(p < q && *p) {
|
||||
segcnt++;
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
}
|
||||
}
|
||||
|
||||
dict->segunit = (segcnt == 0) ? 1 : segcnt;
|
||||
}
|
||||
|
||||
void mkidxtbl(dict)
|
||||
DICT *dict;
|
||||
void mkidxtbl(dict)
|
||||
DICT* dict;
|
||||
{
|
||||
unsigned char *p;
|
||||
TypeDicSeg seg;
|
||||
unsigned char* p;
|
||||
TypeDicSeg seg;
|
||||
|
||||
if (!dict->getidx || !dict->getofs) return;
|
||||
if(!dict->getidx || !dict->getofs) return;
|
||||
|
||||
seg = 0;
|
||||
|
||||
|
|
@ -72,15 +64,13 @@ DICT *dict;
|
|||
(*dict->getofs)(dict);
|
||||
|
||||
idxofs[0] = 0;
|
||||
for (p = idxbuf ; p < idxbuf + dict->idxlen && seg < dict->segunit ; ) {
|
||||
for(p = idxbuf; p < idxbuf + dict->idxlen && seg < dict->segunit;) {
|
||||
idxofs[seg++] = p - idxbuf;
|
||||
while (*p++) ;
|
||||
while(*p++);
|
||||
}
|
||||
}
|
||||
|
||||
void initwork()
|
||||
{
|
||||
jrt1st = jrt2nd = maxjptr = (JREC *)0;
|
||||
clt1st = clt2nd = maxclptr = (CLREC *)0;
|
||||
void initwork() {
|
||||
jrt1st = jrt2nd = maxjptr = (JREC*)0;
|
||||
clt1st = clt2nd = maxclptr = (CLREC*)0;
|
||||
}
|
||||
|
||||
|
|
|
|||
18
inkey.h
18
inkey.h
|
|
@ -27,18 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: inkey.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:44 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define KEYBUFSIZ 520
|
||||
#define KEYBUFLIM 512
|
||||
#define AVLEN 3
|
||||
|
||||
#define KEYBUFSIZ 520
|
||||
#define KEYBUFLIM 512
|
||||
#define AVLEN 3
|
||||
|
|
|
|||
14
istrcmp.c
14
istrcmp.c
|
|
@ -33,20 +33,18 @@
|
|||
#include "const.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
int
|
||||
istrcmp(unsigned char *yomip, unsigned char *idxp, int ylen, int ilen)
|
||||
{
|
||||
while (1) {
|
||||
if ((ilen | ylen) == 0)
|
||||
int istrcmp(unsigned char* yomip, unsigned char* idxp, int ylen, int ilen) {
|
||||
while(1) {
|
||||
if((ilen | ylen) == 0)
|
||||
return MATCH;
|
||||
|
||||
if (ilen == 0)
|
||||
if(ilen == 0)
|
||||
return UNDER;
|
||||
|
||||
if ((ylen == 0) || (*yomip < *idxp))
|
||||
if((ylen == 0) || (*yomip < *idxp))
|
||||
return OVER;
|
||||
|
||||
if (*yomip > *idxp)
|
||||
if(*yomip > *idxp)
|
||||
return UNDER;
|
||||
|
||||
yomip++;
|
||||
|
|
|
|||
103
kana.h
103
kana.h
|
|
@ -27,66 +27,55 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: kana.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:45 $
|
||||
*/
|
||||
#define ZKATA1 0xa5
|
||||
#define ZHIRA1 0xa4
|
||||
#define ZKATAF2 0xa1
|
||||
#define ZKATAE2 0xf6
|
||||
#define ZHIRAF2 0xa1
|
||||
#define ZHIRAE2 0xf3
|
||||
#define ZKATAMU 0xe0
|
||||
#define ZHIRAMU 0xe0
|
||||
|
||||
#define ZKATAn (ZKATAE2 - ZKATAF2 + 1)
|
||||
|
||||
#define ZEN_SPACE 0xa1a1
|
||||
#define ZEN_KTEN 0xa1a3
|
||||
#define ZEN_FKAKKO 0xa1d6
|
||||
#define ZEN_EKAKKO 0xa1d7
|
||||
#define ZEN_TTEN 0xa1a2
|
||||
#define ZEN_CTEN 0xa1a6
|
||||
#define ZEN_CHOUON 0xa1bc
|
||||
#define ZEN_DTEN 0xa1ab
|
||||
#define ZEN_HDTEN 0xa1ac
|
||||
#define ZEN_VU 0xa5f4
|
||||
|
||||
#define KANA_KTEN 0xa1
|
||||
#define KANA_FKAKKO 0xa2
|
||||
#define KANA_EKAKKO 0xa3
|
||||
#define KANA_TTEN 0xa4
|
||||
#define KANA_CTEN 0xa5
|
||||
#define KANA_CHOUON 0xb0
|
||||
#define KANA_DTEN 0xde
|
||||
#define KANA_HDTEN 0xdf
|
||||
|
||||
#define ZKATA1 0xa5
|
||||
#define ZHIRA1 0xa4
|
||||
#define ZKATAF2 0xa1
|
||||
#define ZKATAE2 0xf6
|
||||
#define ZHIRAF2 0xa1
|
||||
#define ZHIRAE2 0xf3
|
||||
#define ZKATAMU 0xe0
|
||||
#define ZHIRAMU 0xe0
|
||||
#define KANA_XA 0xa7
|
||||
#define KANA_XYA 0xac
|
||||
#define KANA_XTSU 0xaf
|
||||
|
||||
#define ZKATAn (ZKATAE2-ZKATAF2+1)
|
||||
#define KANA_A 0xb1
|
||||
#define KANA_KA 0xb6
|
||||
#define KANA_SA 0xbb
|
||||
#define KANA_TA 0xc0
|
||||
#define KANA_NA 0xc5
|
||||
#define KANA_HA 0xca
|
||||
#define KANA_MA 0xcf
|
||||
#define KANA_YA 0xd4
|
||||
#define KANA_RA 0xd7
|
||||
#define KANA_WA 0xdc
|
||||
#define KANA_WO 0xa6
|
||||
|
||||
|
||||
|
||||
#define ZEN_SPACE 0xa1a1
|
||||
#define ZEN_KTEN 0xa1a3
|
||||
#define ZEN_FKAKKO 0xa1d6
|
||||
#define ZEN_EKAKKO 0xa1d7
|
||||
#define ZEN_TTEN 0xa1a2
|
||||
#define ZEN_CTEN 0xa1a6
|
||||
#define ZEN_CHOUON 0xa1bc
|
||||
#define ZEN_DTEN 0xa1ab
|
||||
#define ZEN_HDTEN 0xa1ac
|
||||
#define ZEN_VU 0xa5f4
|
||||
|
||||
#define KANA_KTEN 0xa1
|
||||
#define KANA_FKAKKO 0xa2
|
||||
#define KANA_EKAKKO 0xa3
|
||||
#define KANA_TTEN 0xa4
|
||||
#define KANA_CTEN 0xa5
|
||||
#define KANA_CHOUON 0xb0
|
||||
#define KANA_DTEN 0xde
|
||||
#define KANA_HDTEN 0xdf
|
||||
|
||||
#define KANA_XA 0xa7
|
||||
#define KANA_XYA 0xac
|
||||
#define KANA_XTSU 0xaf
|
||||
|
||||
#define KANA_A 0xb1
|
||||
#define KANA_KA 0xb6
|
||||
#define KANA_SA 0xbb
|
||||
#define KANA_TA 0xc0
|
||||
#define KANA_NA 0xc5
|
||||
#define KANA_HA 0xca
|
||||
#define KANA_MA 0xcf
|
||||
#define KANA_YA 0xd4
|
||||
#define KANA_RA 0xd7
|
||||
#define KANA_WA 0xdc
|
||||
#define KANA_WO 0xa6
|
||||
|
||||
#define KANA_GA (KANA_KA << 8) + KANA_DTEN
|
||||
#define KANA_ZA (KANA_SA << 8) + KANA_DTEN
|
||||
#define KANA_DA (KANA_TA << 8) + KANA_DTEN
|
||||
#define KANA_BA (KANA_HA << 8) + KANA_DTEN
|
||||
#define KANA_PA (KANA_HA << 8) + KANA_HDTEN
|
||||
#define KANA_GA (KANA_KA << 8) + KANA_DTEN
|
||||
#define KANA_ZA (KANA_SA << 8) + KANA_DTEN
|
||||
#define KANA_DA (KANA_TA << 8) + KANA_DTEN
|
||||
#define KANA_BA (KANA_HA << 8) + KANA_DTEN
|
||||
#define KANA_PA (KANA_HA << 8) + KANA_HDTEN
|
||||
|
|
|
|||
218
kanakan.h
218
kanakan.h
|
|
@ -32,154 +32,154 @@
|
|||
*/
|
||||
|
||||
#ifndef _KANAKAN_H_
|
||||
#define _KANAKAN_H_ 1
|
||||
#define _KANAKAN_H_ 1
|
||||
|
||||
#include "sj_struct.h"
|
||||
#include "Struct.h"
|
||||
|
||||
/* adddic.c */
|
||||
unsigned int adddic(unsigned char *yomi, unsigned char *kanji, TypeGram hinsi);
|
||||
unsigned int adddic(unsigned char* yomi, unsigned char* kanji, TypeGram hinshi);
|
||||
|
||||
/* addelcmn.c */
|
||||
void set_size(unsigned char *p, int size, int plen, int nlen);
|
||||
unsigned int addel_arg(unsigned char *yp, unsigned char *kp, TypeGram grm, unsigned char *nyp, int len);
|
||||
int cvtknj(unsigned char *yomi, unsigned char *knj, unsigned char *dst);
|
||||
int srchkana(unsigned char **ptr, int *saml);
|
||||
int srchgram(unsigned char *ptr, unsigned char **dst, TypeGram hinsi);
|
||||
int srchkanji(unsigned char **dst, unsigned char *knj, int klen);
|
||||
TypeIdxOfs count_uidx(void);
|
||||
void chg_uidx(TypeDicSeg seg, unsigned char *yomi, int len);
|
||||
void set_size(unsigned char* p, int size, int plen, int nlen);
|
||||
unsigned int addel_arg(unsigned char* yp, unsigned char* kp, TypeGram grm, unsigned char* nyp, int len);
|
||||
int cvtknj(unsigned char* yomi, unsigned char* knj, unsigned char* dst);
|
||||
int srchkana(unsigned char** ptr, int* saml);
|
||||
int srchgram(unsigned char* ptr, unsigned char** dst, TypeGram hinshi);
|
||||
int srchkanji(unsigned char** dst, unsigned char* knj, int klen);
|
||||
TypeIdxOfs count_uidx(void);
|
||||
void chg_uidx(TypeDicSeg seg, unsigned char* yomi, int len);
|
||||
|
||||
/* alloc.c */
|
||||
JREC *alloc_jrec(void);
|
||||
void free_jrec(JREC *p);
|
||||
CLREC *alloc_clrec(void);
|
||||
void free_clrec(CLREC *p);
|
||||
JREC* alloc_jrec(void);
|
||||
void free_jrec(JREC* p);
|
||||
CLREC* alloc_clrec(void);
|
||||
void free_clrec(CLREC* p);
|
||||
|
||||
/* charsize.c */
|
||||
int codesize(unsigned char code);
|
||||
|
||||
/* cl2knj.c */
|
||||
int cl2knj(unsigned char *yomi, int len, unsigned char *kouho);
|
||||
int nextcl(unsigned char *kouho, int mode);
|
||||
int prevcl(unsigned char *kouho, int mode);
|
||||
int cl2knj(unsigned char* yomi, int len, unsigned char* kouho);
|
||||
int nextcl(unsigned char* kouho, int mode);
|
||||
int prevcl(unsigned char* kouho, int mode);
|
||||
int selectnum(void);
|
||||
|
||||
/* clstudy.c */
|
||||
int clstudy(unsigned char *yomi1, unsigned char *yomi2, STDYOUT *stdy);
|
||||
void delclsub(unsigned char *target);
|
||||
int clstudy(unsigned char* yomi1, unsigned char* yomi2, STDYOUT* stdy);
|
||||
void delclsub(unsigned char* target);
|
||||
void mkclidx(void);
|
||||
|
||||
/* cvtdict.c */
|
||||
void cvtdict(KHREC *krec, CLREC *clrec, int flg);
|
||||
void cvtdict(KHREC* krec, CLREC* clrec, int flg);
|
||||
void cvtminasi(int len);
|
||||
void cvtwakachi(CLREC *clrec);
|
||||
void cvtwakachi(CLREC* clrec);
|
||||
|
||||
/* cvtkanji.c */
|
||||
void cvtphknj(void);
|
||||
void cvtkouho(KHREC *krec);
|
||||
void setstyrec(KHREC *krec);
|
||||
void cvtkouho(KHREC* krec);
|
||||
void setstyrec(KHREC* krec);
|
||||
|
||||
/* deldic.c */
|
||||
unsigned int deldic(unsigned char *yomi, unsigned char *kanji, TypeGram hinsi);
|
||||
unsigned int deldic(unsigned char* yomi, unsigned char* kanji, TypeGram hinshi);
|
||||
|
||||
/* depend.c */
|
||||
DictFile *opendict(char *name, char *passwd);
|
||||
int closedict(DictFile *dfp);
|
||||
void lock_dict(DictFile *p, int fd);
|
||||
void unlock_dict(DictFile *p, int fd);
|
||||
int is_dict_locked(DictFile *p);
|
||||
StdyFile *openstdy(char *name, char *passwd);
|
||||
int closestdy(StdyFile *sfp);
|
||||
int putstydic(void);
|
||||
int putcldic(void);
|
||||
int makedict(char *path, int idxlen, int seglen, int segnum);
|
||||
int makestdy(char *path, int stynum, int clstep, int cllen);
|
||||
void sj_closeall(void);
|
||||
int set_dictpass(DictFile *dp, char *pass);
|
||||
int set_stdypass(char *pass);
|
||||
int set_dictcmnt(DictFile *dp, char *cmnt);
|
||||
int set_stdycmnt(char *cmnt);
|
||||
void get_stdysize(int *stynum, int *clstep, int *cllen);
|
||||
DictFile* opendict(char* name, char* passwd);
|
||||
int closedict(DictFile* dfp);
|
||||
void lock_dict(DictFile* p, int fd);
|
||||
void unlock_dict(DictFile* p, int fd);
|
||||
int is_dict_locked(DictFile* p);
|
||||
StdyFile* openstdy(char* name, char* passwd);
|
||||
int closestdy(StdyFile* sfp);
|
||||
int putstydic(void);
|
||||
int putcldic(void);
|
||||
int makedict(char* path, int idxlen, int seglen, int segnum);
|
||||
int makestdy(char* path, int stynum, int clstep, int cllen);
|
||||
void sj_closeall(void);
|
||||
int set_dictpass(DictFile* dp, char* pass);
|
||||
int set_stdypass(char* pass);
|
||||
int set_dictcmnt(DictFile* dp, char* cmnt);
|
||||
int set_stdycmnt(char* cmnt);
|
||||
void get_stdysize(int* stynum, int* clstep, int* cllen);
|
||||
|
||||
/* dict.c */
|
||||
void get_askknj(void);
|
||||
int seldict(TypeDicID id);
|
||||
unsigned char *get_idxptr(TypeDicSeg seg);
|
||||
void get_askknj(void);
|
||||
int seldict(TypeDicID id);
|
||||
unsigned char* get_idxptr(TypeDicSeg seg);
|
||||
|
||||
/* getkanji.c */
|
||||
unsigned char *getkan_none(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_hira(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_kata(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_knj(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_ofs(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_norm(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
unsigned char *getkan_ascii(unsigned char *s, unsigned char *d, unsigned char *ym, int yl, int flg);
|
||||
int getkanji(unsigned char *ym, int yl, unsigned char *ptr, unsigned char *buf);
|
||||
unsigned char* getkan_none(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_hira(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_kata(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_knj(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_ofs(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_norm(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
unsigned char* getkan_ascii(unsigned char* s, unsigned char* d, unsigned char* ym, int yl, int flg);
|
||||
int getkanji(unsigned char* ym, int yl, unsigned char* ptr, unsigned char* buf);
|
||||
|
||||
/* getrank.c */
|
||||
void getrank(void);
|
||||
|
||||
/* hzstrlen.c */
|
||||
int euc_codesize(unsigned char c);
|
||||
int hzstrlen(unsigned char *ptr, int len);
|
||||
int hzstrlen(unsigned char* ptr, int len);
|
||||
|
||||
/* mkbunset.c */
|
||||
void mkbunsetu(void);
|
||||
/* mkbunsetsu.c */
|
||||
void mkbunsetsu(void);
|
||||
CLREC* argclrec(int len);
|
||||
|
||||
/* mkjiritu.c */
|
||||
void mkjiritu(int mode);
|
||||
JREC *argjrec(int len, JREC *rec);
|
||||
/* mkjiritsu.c */
|
||||
void mkjiritsu(int mode);
|
||||
JREC* argjrec(int len, JREC* rec);
|
||||
|
||||
/* mkkouho.c */
|
||||
unsigned char *makekan_none(unsigned char *s, unsigned char *d, int flg);
|
||||
unsigned char *makekan_1byte(unsigned char *s, unsigned char *d, int flg);
|
||||
unsigned char *makekan_knj(unsigned char *s, unsigned char *d, int flg);
|
||||
unsigned char *makekan_ofs(unsigned char *s, unsigned char *d, int flg);
|
||||
unsigned char *makekan_norm(unsigned char *s, unsigned char *d, int flg);
|
||||
unsigned char *makekan_ascii(unsigned char *s, unsigned char *d, int flg);
|
||||
void mkkouho(void);
|
||||
int sel_sjmode(JREC *jrec);
|
||||
unsigned char* makekan_none(unsigned char* s, unsigned char* d, int flg);
|
||||
unsigned char* makekan_1byte(unsigned char* s, unsigned char* d, int flg);
|
||||
unsigned char* makekan_knj(unsigned char* s, unsigned char* d, int flg);
|
||||
unsigned char* makekan_ofs(unsigned char* s, unsigned char* d, int flg);
|
||||
unsigned char* makekan_norm(unsigned char* s, unsigned char* d, int flg);
|
||||
unsigned char* makekan_ascii(unsigned char* s, unsigned char* d, int flg);
|
||||
void mkkouho(void);
|
||||
int sel_sjmode(JREC* jrec);
|
||||
|
||||
/* mknumber.c */
|
||||
void num_type00(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type01(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type02(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type03(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type04(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type05(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type06(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type07(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type08(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type09(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type10(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type11(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type12(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type13(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type14(unsigned char *s1, unsigned char *s2, JREC *jrec);
|
||||
void num_type00(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type01(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type02(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type03(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type04(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type05(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type06(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type07(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type08(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type09(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type10(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type11(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type12(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type13(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
void num_type14(unsigned char* s1, unsigned char* s2, JREC* jrec);
|
||||
|
||||
/* peepdic.c */
|
||||
int getusr(unsigned char *buf);
|
||||
int nextusr(unsigned char *buf);
|
||||
int prevusr(unsigned char *buf);
|
||||
int getusr(unsigned char* buf);
|
||||
int nextusr(unsigned char* buf);
|
||||
int prevusr(unsigned char* buf);
|
||||
|
||||
/* ph2knj.c */
|
||||
int ph2knj(unsigned char *zyomi, unsigned char *kanji, int knjlen);
|
||||
int ph2knj(unsigned char* zyomi, unsigned char* kanji, int knjlen);
|
||||
|
||||
/* ph_khtbl.c */
|
||||
int ph_khtbl(CLREC *clrec);
|
||||
int ph_khtbl(CLREC* clrec);
|
||||
|
||||
/* setconj.c */
|
||||
int setconj(TypeGram hinsi, JREC *jrec, CREC *crec);
|
||||
int setconj(TypeGram hinshi, JREC* jrec, CREC* crec);
|
||||
|
||||
/* setjrec.c */
|
||||
int setj_atrb(unsigned char* p);
|
||||
int setj_ofs(unsigned char* p);
|
||||
int setj_knj(unsigned char* p);
|
||||
int setj_norm1(unsigned char* p);
|
||||
int setj_norm2(unsigned char* p);
|
||||
int setj_norm3(unsigned char* p);
|
||||
int setj_atrb(unsigned char* p);
|
||||
int setj_ofs(unsigned char* p);
|
||||
int setj_knj(unsigned char* p);
|
||||
int setj_norm1(unsigned char* p);
|
||||
int setj_norm2(unsigned char* p);
|
||||
int setj_norm3(unsigned char* p);
|
||||
void setjrec(unsigned char* tagp, int mode);
|
||||
void setnumrec(unsigned char* tagp, JREC* rec, TypeGram gram);
|
||||
void setcrec(unsigned char* tagp);
|
||||
|
|
@ -187,36 +187,36 @@ void setcrec(unsigned char* tagp);
|
|||
/* setkouho.c */
|
||||
void setkouho(CLREC* clrec, TypeDicOfs offs, int mode);
|
||||
void ph_setkouho(CLREC* clrec, TypeDicOfs offs, STDYIN* sptr);
|
||||
int hiraknj_atrb(unsigned char*, int*);
|
||||
int hiraknj_ofs (unsigned char*, int*);
|
||||
int hiraknj_knj (unsigned char*, int*);
|
||||
int hiraknj_hask(unsigned char*, int*);
|
||||
int hiraknj_kask(unsigned char*, int*);
|
||||
int hiraknj_norm(unsigned char*, int*);
|
||||
int hiraknj_hira(unsigned char*, int*);
|
||||
int hiraknj_atrb(unsigned char*, int*);
|
||||
int hiraknj_ofs(unsigned char*, int*);
|
||||
int hiraknj_knj(unsigned char*, int*);
|
||||
int hiraknj_hask(unsigned char*, int*);
|
||||
int hiraknj_kask(unsigned char*, int*);
|
||||
int hiraknj_norm(unsigned char*, int*);
|
||||
int hiraknj_hira(unsigned char*, int*);
|
||||
|
||||
/* setubi.c */
|
||||
unsigned char *getstb(TypeGram hinsi);
|
||||
void setubi(JREC *rec, unsigned char *stbtbl);
|
||||
/* setsubi.c */
|
||||
unsigned char* getstb(TypeGram hinshi);
|
||||
void setsubi(JREC* rec, unsigned char* stbtbl);
|
||||
|
||||
/* skipkstr.c */
|
||||
unsigned char* skipkstr(unsigned char* ptr);
|
||||
|
||||
/* srchdict.c */
|
||||
int yomicmp(unsigned char *ptr1, unsigned char *ptr2, unsigned char *saml);
|
||||
unsigned char *srchdict(unsigned char *tagp);
|
||||
int yomicmp(unsigned char* ptr1, unsigned char* ptr2, unsigned char* saml);
|
||||
unsigned char* srchdict(unsigned char* tagp);
|
||||
|
||||
/* srchidx.c */
|
||||
TypeDicSeg srchidx(TypeDicSeg low, int len);
|
||||
|
||||
/* srchnum.c */
|
||||
void srchnum(void);
|
||||
void setwdnum(unsigned char *p, int len, unsigned short *wd);
|
||||
int setucnum(unsigned char *p, int len, unsigned char *ud);
|
||||
void setwdnum(unsigned char* p, int len, unsigned short* wd);
|
||||
int setucnum(unsigned char* p, int len, unsigned char* ud);
|
||||
|
||||
/* study.c */
|
||||
int study(STDYOUT *stdy);
|
||||
STDYIN *srchstdy(TypeDicSeg seg, TypeDicOfs ofs, TypeDicID dicid);
|
||||
int study(STDYOUT* stdy);
|
||||
STDYIN* srchstdy(TypeDicSeg seg, TypeDicOfs ofs, TypeDicID dicid);
|
||||
|
||||
/* wakachi.c */
|
||||
void wakachi(void);
|
||||
|
|
|
|||
45
kctype.h
45
kctype.h
|
|
@ -27,41 +27,33 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: kctype.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:46 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#if !defined(__sony_news) || (defined(__sony_news) && !defined(SVR4))
|
||||
#ifndef __KCTYPE
|
||||
#define __KCTYPE
|
||||
|
||||
#define sjis2euc sj3_sjis2euc
|
||||
#define jis2sjis sj3_jis2sjis
|
||||
#define euctosjis sj3_euctosjis
|
||||
#define sjis2jis sj3_sjis2jis
|
||||
#define euc2sjis sj3_euc2sjis
|
||||
#define jis2euc sj3_jis2euc
|
||||
#define sjistoeuc sj3_sjistoeuc
|
||||
#define sjis2euc sj3_sjis2euc
|
||||
#define jis2sjis sj3_jis2sjis
|
||||
#define euctosjis sj3_euctosjis
|
||||
#define sjis2jis sj3_sjis2jis
|
||||
#define euc2sjis sj3_euc2sjis
|
||||
#define jis2euc sj3_jis2euc
|
||||
#define sjistoeuc sj3_sjistoeuc
|
||||
|
||||
#ifdef issjis1
|
||||
#undef issjis1
|
||||
#endif
|
||||
#define issjis1(c) (((0x81 <= (c)) && ((c) <= 0x9f)) || \
|
||||
((0xe0 <= (c)) && ((c) <= 0xfc)))
|
||||
#define issjis1(c) (((0x81 <= (c)) && ((c) <= 0x9f)) || \
|
||||
((0xe0 <= (c)) && ((c) <= 0xfc)))
|
||||
|
||||
#ifdef issjis2
|
||||
#undef issjis2
|
||||
#endif
|
||||
#define issjis2(c) (((0x40 <= (c)) && ((c) <= 0xfc)) && ((c) != 0x7f))
|
||||
#define issjis2(c) (((0x40 <= (c)) && ((c) <= 0xfc)) && ((c) != 0x7f))
|
||||
|
||||
#ifdef iseuc
|
||||
#undef iseuc
|
||||
#endif
|
||||
#define iseuc(c) ((0xa1 <= (c)) && ((c) <= 0xfe))
|
||||
#define iseuc(c) ((0xa1 <= (c)) && ((c) <= 0xfe))
|
||||
|
||||
#ifdef iseuckana
|
||||
#undef iseuckana
|
||||
|
|
@ -71,22 +63,22 @@
|
|||
#ifdef iskana2
|
||||
#undef iskana2
|
||||
#endif
|
||||
#define iskana2(c) ((0xa1 <= (c)) && ((c) <= 0xdf))
|
||||
#define iskana2(c) ((0xa1 <= (c)) && ((c) <= 0xdf))
|
||||
|
||||
#ifdef jiszen
|
||||
#undef jiszen
|
||||
#endif
|
||||
#define jiszen(c) (issjis1(((c) >> 8) & 0xff) && issjis2((c) & 0xff))
|
||||
#define jiszen(c) (issjis1(((c) >> 8) & 0xff) && issjis2((c) & 0xff))
|
||||
|
||||
#ifdef isjjis
|
||||
#undef isjjis
|
||||
#endif
|
||||
#define isjjis(c) ((0x21 <= (c)) && ((c) <= 0x7e))
|
||||
#define isjjis(c) ((0x21 <= (c)) && ((c) <= 0x7e))
|
||||
|
||||
#ifdef jstrlen
|
||||
#undef jstrlen
|
||||
#endif
|
||||
#define jstrlen(s) euclen(s, 65535)
|
||||
#define jstrlen(s) euclen(s, 65535)
|
||||
|
||||
#ifdef iseuc3byte
|
||||
#undef iseuc3byte
|
||||
|
|
@ -101,15 +93,14 @@
|
|||
#ifdef iskanji
|
||||
#undef iskanji
|
||||
#endif
|
||||
#define iskanji issjis1
|
||||
#define iskanji issjis1
|
||||
#ifdef iskanji2
|
||||
#undef iskanji2
|
||||
#endif
|
||||
#define iskanji2 issjis2
|
||||
#define iskanji2 issjis2
|
||||
#ifdef iskana
|
||||
#undef iskana
|
||||
#endif
|
||||
#define iskana iskana2
|
||||
#define iskana iskana2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
|||
107
key.h
107
key.h
|
|
@ -27,72 +27,59 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: key.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:47 $
|
||||
*/
|
||||
#define KEY_NORMAL 0
|
||||
#define KEY_CONV 1
|
||||
#define KEY_HENKAN 2
|
||||
#define KEY_MUHENKAN 3
|
||||
#define KEY_KETTEI 4
|
||||
#define KEY_ZHIRA 5
|
||||
#define KEY_HALPHA 6
|
||||
#define KEY_ZALPHA 7
|
||||
#define KEY_HKATA 8
|
||||
#define KEY_ZKATA 9
|
||||
#define KEY_CODE 10
|
||||
#define KEY_ETC 11
|
||||
#define KEY_RIGHT 12
|
||||
#define KEY_LEFT 13
|
||||
#define KEY_UP 14
|
||||
#define KEY_DOWN 15
|
||||
#define KEY_TOGGLE 16
|
||||
#define KEY_EDIT 17
|
||||
|
||||
#define KEY_WRAP 18
|
||||
#define KEY_WRAPBACK 19
|
||||
#define KEY_HELP 20
|
||||
#define KEY_TOROKU 21
|
||||
#define KEY_SHOUKYO 22
|
||||
#define KEY_SJRC 23
|
||||
|
||||
#define KEY_HA_KET 24
|
||||
#define KEY_FLUSH 25
|
||||
#define KEY_BUFFER 26
|
||||
|
||||
#define KEY_HANKAKU 27
|
||||
#define KEY_ZENKAKU 28
|
||||
|
||||
#define KEY_HIRAGANA 29
|
||||
#define KEY_KATAKANA 30
|
||||
#define KEY_EISUU 31
|
||||
#define KEY_EIDAI 32
|
||||
#define KEY_ROMA 33
|
||||
|
||||
#define KEY_NORMAL 0
|
||||
#define KEY_CONV 1
|
||||
#define KEY_HENKAN 2
|
||||
#define KEY_MUHENKAN 3
|
||||
#define KEY_KETTEI 4
|
||||
#define KEY_ZHIRA 5
|
||||
#define KEY_HALPHA 6
|
||||
#define KEY_ZALPHA 7
|
||||
#define KEY_HKATA 8
|
||||
#define KEY_ZKATA 9
|
||||
#define KEY_CODE 10
|
||||
#define KEY_ETC 11
|
||||
#define KEY_RIGHT 12
|
||||
#define KEY_LEFT 13
|
||||
#define KEY_UP 14
|
||||
#define KEY_DOWN 15
|
||||
#define KEY_TOGGLE 16
|
||||
#define KEY_EDIT 17
|
||||
#define KEY_CANCEL 34
|
||||
#define KEY_RECONV 35
|
||||
|
||||
#define KEY_WRAP 18
|
||||
#define KEY_WRAPBACK 19
|
||||
#define KEY_HELP 20
|
||||
#define KEY_TOROKU 21
|
||||
#define KEY_SYOUKYO 22
|
||||
#define KEY_SJRC 23
|
||||
#define KEY_IGNORE 36
|
||||
#define KEY_DEBUG 37
|
||||
|
||||
#define KEY_HA_KET 24
|
||||
#define KEY_FLUSH 25
|
||||
#define KEY_BUFFER 26
|
||||
#define KEY_TOP 38
|
||||
#define KEY_END 39
|
||||
#define KEY_RECONNECT 40
|
||||
#define KEY_KILL 41
|
||||
#define KEY_OTHER 42
|
||||
|
||||
#define KEY_HANKAKU 27
|
||||
#define KEY_ZENKAKU 28
|
||||
|
||||
#define KEY_HIRAGANA 29
|
||||
#define KEY_KATAKANA 30
|
||||
#define KEY_EISUU 31
|
||||
#define KEY_EIDAI 32
|
||||
#define KEY_ROMA 33
|
||||
|
||||
#define KEY_CANCEL 34
|
||||
#define KEY_RECONV 35
|
||||
|
||||
#define KEY_IGNORE 36
|
||||
#define KEY_DEBUG 37
|
||||
|
||||
#define KEY_TOP 38
|
||||
#define KEY_END 39
|
||||
#define KEY_RECONNECT 40
|
||||
#define KEY_KILL 41
|
||||
#define KEY_OTHER 42
|
||||
|
||||
#define KEY_MORE 43
|
||||
|
||||
|
||||
|
||||
#define UKEYNUM 64
|
||||
#define SEQLEN 8
|
||||
#define COMNUM 64
|
||||
#define KEY_MORE 43
|
||||
|
||||
#define UKEYNUM 64
|
||||
#define SEQLEN 8
|
||||
#define COMNUM 64
|
||||
|
|
|
|||
351
kigou.c
351
kigou.c
|
|
@ -27,180 +27,168 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: kigou.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:19 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "common.h"
|
||||
#include "kctype.h"
|
||||
#include "key.h"
|
||||
|
||||
#define BEGIN_CODE 0x2121
|
||||
#define END_CODE 0x7f7e
|
||||
#define INCRESE 16
|
||||
#define BEGIN_CODE 0x2121
|
||||
#define END_CODE 0x7f7e
|
||||
#define INCRESE 16
|
||||
|
||||
static int lastcode = BEGIN_CODE;
|
||||
static int lastcode = BEGIN_CODE;
|
||||
|
||||
static unsigned short row, col;
|
||||
static unsigned short row, col;
|
||||
|
||||
void input_kigou();
|
||||
|
||||
kigou ()
|
||||
{
|
||||
extern int keyvalue;
|
||||
int increse, code, basecode;
|
||||
int inc, ki, low;
|
||||
unsigned short num, CheckCcode(), strtocode();
|
||||
int rval;
|
||||
kigou() {
|
||||
extern int keyvalue;
|
||||
int increse, code, basecode;
|
||||
int inc, ki, low;
|
||||
unsigned short num, CheckCcode(), strtocode();
|
||||
int rval;
|
||||
|
||||
increse = INCRESE;
|
||||
disp_mode ();
|
||||
disp_mode();
|
||||
basecode = lastcode & 0xfff0;
|
||||
code = lastcode;
|
||||
StartGuide (&row, &col);
|
||||
Clear_EOL ();
|
||||
guide_kigou (basecode, code, increse);
|
||||
code = lastcode;
|
||||
StartGuide(&row, &col);
|
||||
Clear_EOL();
|
||||
guide_kigou(basecode, code, increse);
|
||||
|
||||
rval = 0;
|
||||
ki = 1;
|
||||
SaveConversion ();
|
||||
while (ki) {
|
||||
inc = inkey ();
|
||||
if (AnotherConversion ()) {
|
||||
unget_key (inc);
|
||||
ki = 1;
|
||||
SaveConversion();
|
||||
while(ki) {
|
||||
inc = inkey();
|
||||
if(AnotherConversion()) {
|
||||
unget_key(inc);
|
||||
break;
|
||||
}
|
||||
top:
|
||||
switch (keyvalue) {
|
||||
top:
|
||||
switch(keyvalue) {
|
||||
case KEY_CONV:
|
||||
rval = 1;
|
||||
ki = 0;
|
||||
ki = 0;
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
if (code >= END_CODE) {
|
||||
code = BEGIN_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
case KEY_RIGHT:
|
||||
if(code >= END_CODE) {
|
||||
code = BEGIN_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
} else {
|
||||
low = ++code & 0xff;
|
||||
if (low > 0x7e) {
|
||||
code &= 0xff00;
|
||||
code += 0x121;
|
||||
low = 0x21;
|
||||
low = ++code & 0xff;
|
||||
if(low > 0x7e) {
|
||||
code &= 0xff00;
|
||||
code += 0x121;
|
||||
low = 0x21;
|
||||
}
|
||||
if (code >= basecode + increse) {
|
||||
if (low <= 0x21)
|
||||
basecode = code & 0xfff0;
|
||||
else
|
||||
basecode += increse;
|
||||
if(code >= basecode + increse) {
|
||||
if(low <= 0x21)
|
||||
basecode = code & 0xfff0;
|
||||
else
|
||||
basecode += increse;
|
||||
}
|
||||
}
|
||||
guide_kigou (basecode, code, increse);
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
if (code <= BEGIN_CODE) {
|
||||
code = END_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
guide_kigou(basecode, code, increse);
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
if(code <= BEGIN_CODE) {
|
||||
code = END_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
} else {
|
||||
low = --code & 0xff;
|
||||
if (low < 0x21) {
|
||||
code &= 0xff00;
|
||||
code -= 0x82;
|
||||
low = 0x7e;
|
||||
low = --code & 0xff;
|
||||
if(low < 0x21) {
|
||||
code &= 0xff00;
|
||||
code -= 0x82;
|
||||
low = 0x7e;
|
||||
}
|
||||
if (code < basecode) {
|
||||
if (low >= 0x7e)
|
||||
basecode = code & 0xfff0;
|
||||
else
|
||||
basecode -= increse;
|
||||
if(code < basecode) {
|
||||
if(low >= 0x7e)
|
||||
basecode = code & 0xfff0;
|
||||
else
|
||||
basecode -= increse;
|
||||
}
|
||||
}
|
||||
guide_kigou (basecode, code, increse);
|
||||
break;
|
||||
case KEY_UP:
|
||||
if (basecode <= BEGIN_CODE) {
|
||||
code = basecode = END_CODE & 0xfff0;
|
||||
guide_kigou(basecode, code, increse);
|
||||
break;
|
||||
case KEY_UP:
|
||||
if(basecode <= BEGIN_CODE) {
|
||||
code = basecode = END_CODE & 0xfff0;
|
||||
} else {
|
||||
basecode -= increse;
|
||||
low = basecode & 0xff;
|
||||
if (low == 0x20) {
|
||||
code = (basecode & 0xff00) + 0x21;
|
||||
basecode -= increse;
|
||||
low = basecode & 0xff;
|
||||
if(low == 0x20) {
|
||||
code = (basecode & 0xff00) + 0x21;
|
||||
} else {
|
||||
if (low < 0x20) {
|
||||
basecode &= 0xff00;
|
||||
basecode -= 0x90;
|
||||
if(low < 0x20) {
|
||||
basecode &= 0xff00;
|
||||
basecode -= 0x90;
|
||||
}
|
||||
code = basecode;
|
||||
code = basecode;
|
||||
}
|
||||
}
|
||||
guide_kigou (basecode, code, increse);
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
if (basecode >= (END_CODE & 0xfff0)) {
|
||||
code = BEGIN_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
guide_kigou(basecode, code, increse);
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
if(basecode >= (END_CODE & 0xfff0)) {
|
||||
code = BEGIN_CODE;
|
||||
basecode = code & 0xfff0;
|
||||
} else {
|
||||
basecode += increse;
|
||||
low = basecode & 0xff;
|
||||
if (low > 0x70) {
|
||||
basecode &= 0xff00;
|
||||
basecode += 0x120;
|
||||
code = basecode + 1;
|
||||
basecode += increse;
|
||||
low = basecode & 0xff;
|
||||
if(low > 0x70) {
|
||||
basecode &= 0xff00;
|
||||
basecode += 0x120;
|
||||
code = basecode + 1;
|
||||
} else
|
||||
code = basecode;
|
||||
code = basecode;
|
||||
}
|
||||
guide_kigou (basecode, code, increse);
|
||||
break;
|
||||
guide_kigou(basecode, code, increse);
|
||||
break;
|
||||
case KEY_HENKAN:
|
||||
input_kigou (basecode, code, increse);
|
||||
input_kigou(basecode, code, increse);
|
||||
break;
|
||||
case KEY_KETTEI:
|
||||
input_kigou (basecode, code, increse);
|
||||
input_kigou(basecode, code, increse);
|
||||
ki = 0;
|
||||
break;
|
||||
default:
|
||||
if ((keyvalue = IsCKey (inc)) != KEY_NORMAL)
|
||||
if((keyvalue = IsCKey(inc)) != KEY_NORMAL)
|
||||
goto top;
|
||||
if (CheckCcode(inc)) {
|
||||
if ((num = strtocode()) > 0) {
|
||||
code = num;
|
||||
basecode = code & 0xfff0;
|
||||
guide_kigou(basecode, code, increse);
|
||||
}
|
||||
}
|
||||
else if (inc == ESC)
|
||||
if(CheckCcode(inc)) {
|
||||
if((num = strtocode()) > 0) {
|
||||
code = num;
|
||||
basecode = code & 0xfff0;
|
||||
guide_kigou(basecode, code, increse);
|
||||
}
|
||||
} else if(inc == ESC)
|
||||
ki = 0;
|
||||
else if (inc == '\n' || inc == '\r' || inc == ' ')
|
||||
input_kigou (basecode, code, increse);
|
||||
else if (IsRedraw (inc))
|
||||
guide_kigou (basecode, code, increse);
|
||||
else if(inc == '\n' || inc == '\r' || inc == ' ')
|
||||
input_kigou(basecode, code, increse);
|
||||
else if(IsRedraw(inc))
|
||||
guide_kigou(basecode, code, increse);
|
||||
else
|
||||
beep ();
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EndGuide (row, col);
|
||||
disp_mode ();
|
||||
EndGuide(row, col);
|
||||
disp_mode();
|
||||
return (rval);
|
||||
}
|
||||
|
||||
IsRedraw (c)
|
||||
int c;
|
||||
IsRedraw(c) int c;
|
||||
{
|
||||
if (c == 0x0c)
|
||||
if(c == 0x0c)
|
||||
return (1);
|
||||
else
|
||||
return (0);
|
||||
}
|
||||
|
||||
IsCKey (inc)
|
||||
int inc;
|
||||
IsCKey(inc) int inc;
|
||||
{
|
||||
switch (inc) {
|
||||
switch(inc) {
|
||||
case 'l':
|
||||
return (KEY_RIGHT);
|
||||
case 'k':
|
||||
|
|
@ -214,97 +202,94 @@ int inc;
|
|||
}
|
||||
}
|
||||
|
||||
guide_kigou (bcode, code, increse)
|
||||
int bcode, code, increse;
|
||||
guide_kigou(bcode, code, increse) int bcode, code, increse;
|
||||
{
|
||||
int i;
|
||||
extern wchar16_t Mguide[];
|
||||
wchar16_t wtmp[20];
|
||||
char tmp[20];
|
||||
unsigned short prcode;
|
||||
int i;
|
||||
extern wchar16_t Mguide[];
|
||||
wchar16_t wtmp[20];
|
||||
char tmp[20];
|
||||
unsigned short prcode;
|
||||
|
||||
TopGuide ();
|
||||
printR (Mguide);
|
||||
put_space (1);
|
||||
put_space (1);
|
||||
for (i = 0 ; i < increse ; i ++)
|
||||
pkigou (bcode + i);
|
||||
prcode = code;
|
||||
if (((i = GetCcode()) == CODE_KUTEN) || (i == CODE_KUTEN2)) {
|
||||
prcode -= 0x2020;
|
||||
sprintf (tmp, " [%02d%02d]", prcode >> 8, prcode & 0xff);
|
||||
TopGuide();
|
||||
printR(Mguide);
|
||||
put_space(1);
|
||||
put_space(1);
|
||||
for(i = 0; i < increse; i++)
|
||||
pkigou(bcode + i);
|
||||
prcode = code;
|
||||
if(((i = GetCcode()) == CODE_KUTEN) || (i == CODE_KUTEN2)) {
|
||||
prcode -= 0x2020;
|
||||
sprintf(tmp, " [%02d%02d]", prcode >> 8, prcode & 0xff);
|
||||
} else {
|
||||
if (i == CODE_SJIS)
|
||||
prcode = jis2sjis(prcode);
|
||||
else if ((i == CODE_EUC) || (i == CODE_EUC2))
|
||||
prcode |= 0x8080;
|
||||
sprintf (tmp, " [%04x]", prcode);
|
||||
if(i == CODE_SJIS)
|
||||
prcode = jis2sjis(prcode);
|
||||
else if((i == CODE_EUC) || (i == CODE_EUC2))
|
||||
prcode |= 0x8080;
|
||||
sprintf(tmp, " [%04x]", prcode);
|
||||
}
|
||||
(void) mbstowcs(wtmp, tmp, 20);
|
||||
SJ_print (wtmp);
|
||||
backspace (8 + (bcode + increse - code) * 2);
|
||||
Flush ();
|
||||
(void)mbstowcs(wtmp, tmp, 20);
|
||||
SJ_print(wtmp);
|
||||
backspace(8 + (bcode + increse - code) * 2);
|
||||
Flush();
|
||||
}
|
||||
|
||||
|
||||
pkigou (code)
|
||||
int code;
|
||||
pkigou(code) int code;
|
||||
{
|
||||
wchar16_t tmp[3];
|
||||
unsigned short ccode;
|
||||
wchar16_t tmp[3];
|
||||
unsigned short ccode;
|
||||
|
||||
if (jis2euc(code) == 0) {
|
||||
if(jis2euc(code) == 0) {
|
||||
ccode = BEGIN_CODE;
|
||||
} else {
|
||||
ccode = code;
|
||||
}
|
||||
if ((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) ||
|
||||
(GetCcode() == CODE_KUTEN2)) {
|
||||
if((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) ||
|
||||
(GetCcode() == CODE_KUTEN2)) {
|
||||
ccode = WcJIS2X0212(ccode);
|
||||
} else {
|
||||
} else {
|
||||
ccode = WcJIS2X0208(ccode);
|
||||
}
|
||||
tmp[0] = ccode;
|
||||
}
|
||||
tmp[0] = ccode;
|
||||
tmp[1] = '\0';
|
||||
SJ_print (tmp);
|
||||
SJ_print(tmp);
|
||||
}
|
||||
|
||||
void
|
||||
input_kigou (basecode, code, increse)
|
||||
int basecode, code, increse;
|
||||
input_kigou(basecode, code, increse) int basecode,
|
||||
code, increse;
|
||||
{
|
||||
wchar16_t s[2];
|
||||
unsigned short ccode, svlen;
|
||||
Conversion *cv;
|
||||
wchar16_t s[2];
|
||||
unsigned short ccode, svlen;
|
||||
Conversion* cv;
|
||||
|
||||
if (jis2euc(code) == 0) {
|
||||
beep();
|
||||
return;
|
||||
if(jis2euc(code) == 0) {
|
||||
beep();
|
||||
return;
|
||||
}
|
||||
if ((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) ||
|
||||
(GetCcode() == CODE_KUTEN2)) {
|
||||
if((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) ||
|
||||
(GetCcode() == CODE_KUTEN2)) {
|
||||
ccode = WcJIS2X0212(code);
|
||||
} else {
|
||||
ccode = WcJIS2X0208(code);
|
||||
}
|
||||
EndGuide (row, col);
|
||||
s[0] = ccode;
|
||||
s[1] = '\0';
|
||||
if (BuffYes ()) {
|
||||
cv = GetConversion();
|
||||
save_obuf();
|
||||
(void)exec_romaji(s[0]);
|
||||
if (os_point > 0) {
|
||||
svlen = cv->Vlen;
|
||||
vprintU(osave_buf, 1);
|
||||
Cgoto(svlen);
|
||||
}
|
||||
restore_obuf();
|
||||
} else {
|
||||
master_out (s, 2);
|
||||
ccode = WcJIS2X0208(code);
|
||||
}
|
||||
EndGuide(row, col);
|
||||
s[0] = ccode;
|
||||
s[1] = '\0';
|
||||
if(BuffYes()) {
|
||||
cv = GetConversion();
|
||||
save_obuf();
|
||||
(void)exec_romaji(s[0]);
|
||||
if(os_point > 0) {
|
||||
svlen = cv->Vlen;
|
||||
vprintU(osave_buf, 1);
|
||||
Cgoto(svlen);
|
||||
}
|
||||
restore_obuf();
|
||||
} else {
|
||||
master_out(s, 2);
|
||||
master_flush();
|
||||
}
|
||||
StartGuide (&row, &col);
|
||||
guide_kigou (basecode, code, increse);
|
||||
StartGuide(&row, &col);
|
||||
guide_kigou(basecode, code, increse);
|
||||
lastcode = code;
|
||||
}
|
||||
|
|
|
|||
226
knjcvt.c
226
knjcvt.c
|
|
@ -27,17 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: knjcvt.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:00:37 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
|
@ -46,229 +35,190 @@
|
|||
#include "dicttool.h"
|
||||
|
||||
typedef struct div_list {
|
||||
int len;
|
||||
unsigned char code[3];
|
||||
struct div_list *child;
|
||||
int len;
|
||||
unsigned char code[3];
|
||||
struct div_list* child;
|
||||
} DivList;
|
||||
|
||||
extern HindoRec *askknj[];
|
||||
extern int askknj_num;
|
||||
|
||||
|
||||
extern HindoRec* askknj[];
|
||||
extern int askknj_num;
|
||||
|
||||
static void
|
||||
free_divlist(DivList* p)
|
||||
{
|
||||
DivList *q;
|
||||
free_divlist(DivList* p) {
|
||||
DivList* q;
|
||||
|
||||
while (p) {
|
||||
q = p -> child;
|
||||
while(p) {
|
||||
q = p->child;
|
||||
Free(p);
|
||||
p = q;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static DivList*
|
||||
make_divrec(void)
|
||||
{
|
||||
DivList *p;
|
||||
make_divrec(void) {
|
||||
DivList* p;
|
||||
|
||||
p = (DivList *)Malloc(sizeof(DivList));
|
||||
if (!p) {
|
||||
p = (DivList*)Malloc(sizeof(DivList));
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n");
|
||||
exit(1);
|
||||
}
|
||||
p -> child = NULL;
|
||||
p->child = NULL;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
make_divlist(DivList* parent, unsigned char *knj, int len)
|
||||
{
|
||||
int i, j;
|
||||
int num;
|
||||
int minlen;
|
||||
int tmplen;
|
||||
DivList tmprec;
|
||||
DivList *minrec;
|
||||
|
||||
make_divlist(DivList* parent, unsigned char* knj, int len) {
|
||||
int i, j;
|
||||
int num;
|
||||
int minlen;
|
||||
int tmplen;
|
||||
DivList tmprec;
|
||||
DivList* minrec;
|
||||
|
||||
minrec = make_divrec();
|
||||
|
||||
|
||||
if (len == 0) {
|
||||
if(len == 0) {
|
||||
free_divlist(minrec);
|
||||
|
||||
parent -> child = NULL;
|
||||
parent->child = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
else if (len == 1) {
|
||||
else if(len == 1) {
|
||||
|
||||
minrec -> len = len;
|
||||
minrec -> code[0] = *knj;
|
||||
minrec->len = len;
|
||||
minrec->code[0] = *knj;
|
||||
|
||||
parent -> child = minrec;
|
||||
parent->child = minrec;
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
if (codesize(*knj) == 1) {
|
||||
minrec -> len = 1;
|
||||
minrec -> code[0] = *knj;
|
||||
minlen = make_divlist(minrec, knj + 1, len - 1) + 1;
|
||||
if(codesize(*knj) == 1) {
|
||||
minrec->len = 1;
|
||||
minrec->code[0] = *knj;
|
||||
minlen = make_divlist(minrec, knj + 1, len - 1) + 1;
|
||||
}
|
||||
|
||||
else if (codesize(*knj) == 2) {
|
||||
minrec -> len = 2;
|
||||
minrec -> code[0] = *knj;
|
||||
minrec -> code[1] = *(knj + 1);
|
||||
minlen = make_divlist(minrec, knj + 2, len - 2) + 2;
|
||||
else if(codesize(*knj) == 2) {
|
||||
minrec->len = 2;
|
||||
minrec->code[0] = *knj;
|
||||
minrec->code[1] = *(knj + 1);
|
||||
minlen = make_divlist(minrec, knj + 2, len - 2) + 2;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0 ; i < len ; i = j) {
|
||||
for(i = 0; i < len; i = j) {
|
||||
|
||||
j = i + codesize(*(knj + i));
|
||||
|
||||
|
||||
if (j <= 2 || !(num = isknjexist(knj, j))) continue;
|
||||
|
||||
if(j <= 2 || !(num = isknjexist(knj, j))) continue;
|
||||
|
||||
tmprec.len = 2;
|
||||
tmprec.code[0] = (OffsetAssyuku | ((num >> 8) & 0xff));
|
||||
tmprec.code[0] = (OffsetAsshuku | ((num >> 8) & 0xff));
|
||||
tmprec.code[1] = (num & 0xff);
|
||||
tmprec.child = NULL;
|
||||
tmplen = make_divlist(&tmprec, knj + j, len - j) + 2;
|
||||
tmplen = make_divlist(&tmprec, knj + j, len - j) + 2;
|
||||
|
||||
if(tmplen < minlen) {
|
||||
|
||||
if (tmplen < minlen) {
|
||||
|
||||
free_divlist(minrec -> child);
|
||||
|
||||
free_divlist(minrec->child);
|
||||
|
||||
*minrec = tmprec;
|
||||
minlen = tmplen;
|
||||
}
|
||||
else
|
||||
minlen = tmplen;
|
||||
} else
|
||||
free_divlist(tmprec.child);
|
||||
}
|
||||
|
||||
for(i = 0; i < askknj_num; i++) {
|
||||
|
||||
for (i = 0 ; i < askknj_num ; i++) {
|
||||
|
||||
if ((j = askknj[i] -> klen) > len) continue;
|
||||
|
||||
|
||||
if (string_cmp(askknj[i]->kptr, j, knj, j)) continue;
|
||||
if((j = askknj[i]->klen) > len) continue;
|
||||
|
||||
if(string_cmp(askknj[i]->kptr, j, knj, j)) continue;
|
||||
|
||||
tmprec.len = 1;
|
||||
tmprec.code[0] = (KanjiAssyuku | i);
|
||||
tmprec.code[0] = (KanjiAsshuku | i);
|
||||
tmprec.child = NULL;
|
||||
tmplen = make_divlist(&tmprec, knj + j, len - j) + 1;
|
||||
tmplen = make_divlist(&tmprec, knj + j, len - j) + 1;
|
||||
|
||||
if(tmplen < minlen) {
|
||||
|
||||
if (tmplen < minlen) {
|
||||
|
||||
free_divlist(minrec -> child);
|
||||
|
||||
free_divlist(minrec->child);
|
||||
|
||||
*minrec = tmprec;
|
||||
minlen = tmplen;
|
||||
}
|
||||
else
|
||||
minlen = tmplen;
|
||||
} else
|
||||
free_divlist(tmprec.child);
|
||||
}
|
||||
|
||||
|
||||
parent -> child = minrec;
|
||||
|
||||
parent->child = minrec;
|
||||
|
||||
return minlen;
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned char*
|
||||
knjofscvt(unsigned char* ptr, int len, int* ret)
|
||||
{
|
||||
int i;
|
||||
unsigned char *p, *q;
|
||||
DivList parent, *dl;
|
||||
|
||||
knjofscvt(unsigned char* ptr, int len, int* ret) {
|
||||
int i;
|
||||
unsigned char *p, *q;
|
||||
DivList parent, *dl;
|
||||
|
||||
askknj_num = 0;
|
||||
|
||||
|
||||
parent.child = NULL;
|
||||
i = make_divlist(&parent, ptr, len);
|
||||
*ret = i;
|
||||
i = make_divlist(&parent, ptr, len);
|
||||
*ret = i;
|
||||
|
||||
|
||||
p = (unsigned char *)Malloc(i);
|
||||
if (!p) {
|
||||
p = (unsigned char*)Malloc(i);
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
for (q = p, dl = parent.child ; dl ; dl = dl -> child) {
|
||||
*q++ = dl -> code[0];
|
||||
if (dl -> len == 2) {
|
||||
*q++ = dl -> code[1];
|
||||
} else if (dl -> len == 3) {
|
||||
*q++ = dl -> code[1];
|
||||
*q++ = dl -> code[2];
|
||||
for(q = p, dl = parent.child; dl; dl = dl->child) {
|
||||
*q++ = dl->code[0];
|
||||
if(dl->len == 2) {
|
||||
*q++ = dl->code[1];
|
||||
} else if(dl->len == 3) {
|
||||
*q++ = dl->code[1];
|
||||
*q++ = dl->code[2];
|
||||
}
|
||||
}
|
||||
|
||||
free_divlist(parent.child);
|
||||
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned char*
|
||||
knjcvt(unsigned char* ptr, int len, int* ret)
|
||||
{
|
||||
int i;
|
||||
unsigned char *p, *q;
|
||||
DivList parent, *dl;
|
||||
|
||||
knjcvt(unsigned char* ptr, int len, int* ret) {
|
||||
int i;
|
||||
unsigned char *p, *q;
|
||||
DivList parent, *dl;
|
||||
|
||||
parent.child = NULL;
|
||||
i = make_divlist(&parent, ptr, len);
|
||||
*ret = i;
|
||||
i = make_divlist(&parent, ptr, len);
|
||||
*ret = i;
|
||||
|
||||
|
||||
p = (unsigned char *)Malloc(i);
|
||||
if (!p) {
|
||||
p = (unsigned char*)Malloc(i);
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
for (q = p, dl = parent.child ; dl ; dl = dl -> child) {
|
||||
*q++ = dl -> code[0];
|
||||
if (dl -> len == 2) {
|
||||
*q++ = dl -> code[1];
|
||||
} else if (dl -> len == 3) {
|
||||
*q++ = dl -> code[1];
|
||||
*q++ = dl -> code[2];
|
||||
for(q = p, dl = parent.child; dl; dl = dl->child) {
|
||||
*q++ = dl->code[0];
|
||||
if(dl->len == 2) {
|
||||
*q++ = dl->code[1];
|
||||
} else if(dl->len == 3) {
|
||||
*q++ = dl->code[1];
|
||||
*q++ = dl->code[2];
|
||||
}
|
||||
}
|
||||
|
||||
free_divlist(parent.child);
|
||||
|
||||
if (i != q - p) {
|
||||
printf("\244\263\244\263\n");
|
||||
exit(1);
|
||||
}
|
||||
if(i != q - p) {
|
||||
printf("\244\263\244\263\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
|
|
|||
364
libif.c
364
libif.c
|
|
@ -27,13 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: libif.c,v $
|
||||
* $SonyRevision: 1.3 $
|
||||
* $SonyDate: 1996/02/23 11:04:02 $
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_sysvdef.h"
|
||||
#ifdef SVR4
|
||||
#include <sys/euc.h>
|
||||
|
|
@ -43,74 +36,66 @@
|
|||
#include "kctype.h"
|
||||
#include "common.h"
|
||||
|
||||
extern char user_name[];
|
||||
extern char * cur_serv, **serv_list;
|
||||
extern char** dict_list;
|
||||
extern int dict_num;
|
||||
char* chmyhname();
|
||||
|
||||
extern char user_name[];
|
||||
extern char *cur_serv, **serv_list;
|
||||
extern char **dict_list;
|
||||
extern int dict_num;
|
||||
char *chmyhname();
|
||||
|
||||
extern int current_locale;
|
||||
int sjislen(), euclen();
|
||||
extern int current_locale;
|
||||
int sjislen(), euclen();
|
||||
|
||||
int (*len_func[3])() = {0, sjislen, euclen};
|
||||
|
||||
|
||||
#define YOMILEN 32
|
||||
#define KLEN 64
|
||||
#define KLEN 64
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SJ2_henkan (yomiout, bun, kanjiout, kanjilen)
|
||||
struct bunsetu_sj3 *bun;
|
||||
wchar16_t *yomiout, *kanjiout;
|
||||
int kanjilen;
|
||||
SJ2_henkan(yomiout, bun, kanjiout, kanjilen) struct bunsetsu_sj3* bun;
|
||||
wchar16_t *yomiout, *kanjiout;
|
||||
int kanjilen;
|
||||
{
|
||||
int retv;
|
||||
SJ3_BUNSETU sbun[BUFFLENGTH];
|
||||
int i, sentou, saigo;
|
||||
int retv;
|
||||
SJ3_BUNSETSU sbun[BUFFLENGTH];
|
||||
int i, sentou, saigo;
|
||||
unsigned char yomi[BUFFLENGTH * 3];
|
||||
unsigned char kanji[BUFFLENGTH * 6];
|
||||
|
||||
(void) wcstombs((char *) yomi, yomiout, BUFFLENGTH*3);
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
(void)wcstombs((char*)yomi, yomiout, BUFFLENGTH * 3);
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
retv = sj3_getkan(yomi, sbun, kanji, BUFFLENGTH * 6);
|
||||
} else {
|
||||
retv = sj3_getkan_euc(yomi, sbun, kanji, BUFFLENGTH * 6);
|
||||
}
|
||||
|
||||
if (retv <= 0) return(retv);
|
||||
(void) mbstowcs(kanjiout, (char *)kanji, kanjilen);
|
||||
if(retv <= 0) return (retv);
|
||||
(void)mbstowcs(kanjiout, (char*)kanji, kanjilen);
|
||||
|
||||
for(i = 0; i < retv; i++) {
|
||||
sentou = (*len_func[current_locale])(yomi, sbun[i].srcstr - yomi);
|
||||
saigo = (*len_func[current_locale])(sbun[i].srcstr, sbun[i].srclen);
|
||||
bun[i].srclen = saigo;
|
||||
bun[i].srcstr = yomiout + sentou;
|
||||
sentou = (*len_func[current_locale])(kanji, sbun[i].deststr - kanji);
|
||||
saigo = (*len_func[current_locale])(sbun[i].deststr, sbun[i].destlen);
|
||||
sentou = (*len_func[current_locale])(yomi, sbun[i].srcstr - yomi);
|
||||
saigo = (*len_func[current_locale])(sbun[i].srcstr, sbun[i].srclen);
|
||||
bun[i].srclen = saigo;
|
||||
bun[i].srcstr = yomiout + sentou;
|
||||
sentou = (*len_func[current_locale])(kanji, sbun[i].deststr - kanji);
|
||||
saigo = (*len_func[current_locale])(sbun[i].deststr, sbun[i].destlen);
|
||||
bun[i].destlen = saigo;
|
||||
bun[i].deststr = kanjiout + sentou;
|
||||
(void) memcpy(&(bun[i].dcid), &(sbun[i].dcid), sizeof(sbun[i].dcid));
|
||||
bun[i].deststr = kanjiout + sentou;
|
||||
(void)memcpy(&(bun[i].dcid), &(sbun[i].dcid), sizeof(sbun[i].dcid));
|
||||
}
|
||||
|
||||
return(retv);
|
||||
return (retv);
|
||||
}
|
||||
int
|
||||
sjislen(str, max)
|
||||
unsigned char *str;
|
||||
int max;
|
||||
int sjislen(str, max)
|
||||
unsigned char* str;
|
||||
int max;
|
||||
{
|
||||
int len = 0, bytes = 1;
|
||||
|
||||
if (!max) return 0;
|
||||
while ((bytes <= max) && *str) {
|
||||
if (issjis1(*str)) {
|
||||
if(!max) return 0;
|
||||
while((bytes <= max) && *str) {
|
||||
if(issjis1(*str)) {
|
||||
str++;
|
||||
bytes++;
|
||||
if (!*str) break;
|
||||
if(!*str) break;
|
||||
len++;
|
||||
} else {
|
||||
len++;
|
||||
|
|
@ -121,26 +106,25 @@ int max;
|
|||
return len;
|
||||
}
|
||||
|
||||
euclen(str, max)
|
||||
unsigned char *str;
|
||||
euclen(str, max) unsigned char* str;
|
||||
int max;
|
||||
{
|
||||
int len = 0, bytes = 1;
|
||||
|
||||
if (!max) return 0;
|
||||
while ((bytes <= max) && *str) {
|
||||
if (*str == SS3) {
|
||||
if(!max) return 0;
|
||||
while((bytes <= max) && *str) {
|
||||
if(*str == SS3) {
|
||||
str++;
|
||||
bytes++;
|
||||
if (!*str) break;
|
||||
if(!*str) break;
|
||||
str++;
|
||||
bytes++;
|
||||
if (!*str) break;
|
||||
if(!*str) break;
|
||||
len++;
|
||||
} else if ((*str == SS2) || (*str & 0x80)) {
|
||||
} else if((*str == SS2) || (*str & 0x80)) {
|
||||
str++;
|
||||
bytes++;
|
||||
if (!*str) break;
|
||||
if(!*str) break;
|
||||
len++;
|
||||
} else {
|
||||
len++;
|
||||
|
|
@ -151,215 +135,209 @@ int max;
|
|||
return len;
|
||||
}
|
||||
|
||||
|
||||
|
||||
SJ2_getdouon (s, d, n, choice, reconv)
|
||||
wchar16_t *s;
|
||||
struct douon_sj3 *d;
|
||||
int n;
|
||||
int choice;
|
||||
int reconv;
|
||||
SJ2_getdouon(s, d, n, choice, reconv)
|
||||
wchar16_t* s;
|
||||
struct douon_sj3* d;
|
||||
int n;
|
||||
int choice;
|
||||
int reconv;
|
||||
{
|
||||
int i, ret;
|
||||
SJ3_DOUON d_sjis[DOUON_N];
|
||||
int i, ret;
|
||||
SJ3_DOUON d_sjis[DOUON_N];
|
||||
unsigned char yomi[BUFFLENGTH * 3];
|
||||
|
||||
(void) wcstombs((char *) yomi, s, BUFFLENGTH*3);
|
||||
(void)wcstombs((char*)yomi, s, BUFFLENGTH * 3);
|
||||
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
ret = sj3_getdouon(yomi, d_sjis);
|
||||
} else {
|
||||
ret = sj3_getdouon_euc(yomi, d_sjis);
|
||||
}
|
||||
for (i = 0; i < ret; i++) {
|
||||
(void) memcpy(&(d[i].dcid),
|
||||
&(d_sjis[i].dcid), SJ3_WORD_ID_SIZE);
|
||||
d[i].wlen = (int) mbstowcs(d[i].ddata, (char *)d_sjis[i].ddata,
|
||||
SJ3_BUNSETU_KANJI*2);
|
||||
d[i].dlen = wcbyte(d[i].ddata);
|
||||
d[i].valid = (char)1;
|
||||
for(i = 0; i < ret; i++) {
|
||||
(void)memcpy(&(d[i].dcid),
|
||||
&(d_sjis[i].dcid), SJ3_WORD_ID_SIZE);
|
||||
d[i].wlen = (int)mbstowcs(d[i].ddata, (char*)d_sjis[i].ddata,
|
||||
SJ3_BUNSETSU_KANJI * 2);
|
||||
d[i].dlen = wcbyte(d[i].ddata);
|
||||
d[i].valid = (char)1;
|
||||
}
|
||||
if (ret < DOUON_N) {
|
||||
(void) memset(&(d[ret].dcid), 0, SJ3_WORD_ID_SIZE);
|
||||
d[ret].wlen = wslen(s);
|
||||
for (i = 0; i < d[ret].wlen; i++) {
|
||||
d[ret].ddata[i] = sj_tokata(s[i]);
|
||||
}
|
||||
d[ret].ddata[i] = (wchar_t) 0;
|
||||
d[ret].dlen = wcbyte(s);
|
||||
d[ret].valid = (char)0;
|
||||
}
|
||||
return(ret + 1);
|
||||
if(ret < DOUON_N) {
|
||||
(void)memset(&(d[ret].dcid), 0, SJ3_WORD_ID_SIZE);
|
||||
d[ret].wlen = wslen(s);
|
||||
for(i = 0; i < d[ret].wlen; i++) {
|
||||
d[ret].ddata[i] = sj_tokata(s[i]);
|
||||
}
|
||||
d[ret].ddata[i] = (wchar_t)0;
|
||||
d[ret].dlen = wcbyte(s);
|
||||
d[ret].valid = (char)0;
|
||||
}
|
||||
return (ret + 1);
|
||||
}
|
||||
|
||||
SJ2_study (dcid)
|
||||
struct studyrec *dcid;
|
||||
SJ2_study(dcid) struct studyrec* dcid;
|
||||
{
|
||||
sj3_gakusyuu(dcid);
|
||||
sj3_gakushuu(dcid);
|
||||
}
|
||||
|
||||
SJ2_clstudy (yomi1, yomi2, dcid)
|
||||
wchar16_t *yomi1, *yomi2;
|
||||
struct studyrec *dcid;
|
||||
SJ2_clstudy(yomi1, yomi2, dcid)
|
||||
wchar16_t* yomi1,
|
||||
*yomi2;
|
||||
struct studyrec* dcid;
|
||||
{
|
||||
unsigned char y1[BUFFLENGTH*2];
|
||||
unsigned char y2[BUFFLENGTH*2];
|
||||
unsigned char y1[BUFFLENGTH * 2];
|
||||
unsigned char y2[BUFFLENGTH * 2];
|
||||
|
||||
(void) wcstombs((char *) y1, yomi1, BUFFLENGTH*2);
|
||||
(void) wcstombs((char *) y2, yomi2, BUFFLENGTH*2);
|
||||
(void)wcstombs((char*)y1, yomi1, BUFFLENGTH * 2);
|
||||
(void)wcstombs((char*)y2, yomi2, BUFFLENGTH * 2);
|
||||
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
sj3_gakusyuu2(y1, y2, dcid);
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
sj3_gakushuu2(y1, y2, dcid);
|
||||
} else {
|
||||
sj3_gakusyuu2_euc(y1, y2, dcid);
|
||||
sj3_gakushuu2_euc(y1, y2, dcid);
|
||||
}
|
||||
}
|
||||
|
||||
SJ2_toroku (yomi, kanji, hinshi)
|
||||
wchar16_t *yomi, *kanji;
|
||||
int hinshi;
|
||||
SJ2_toroku(yomi, kanji, hinshi)
|
||||
wchar16_t* yomi,
|
||||
*kanji;
|
||||
int hinshi;
|
||||
{
|
||||
unsigned char y[(YOMILEN+1)*3];
|
||||
unsigned char k[(KLEN+1)*3];
|
||||
int ret;
|
||||
unsigned char y[(YOMILEN + 1) * 3];
|
||||
unsigned char k[(KLEN + 1) * 3];
|
||||
int ret;
|
||||
|
||||
(void)wcstombs((char *) y, yomi, (YOMILEN+1)*3);
|
||||
(void)wcstombs((char *) k, kanji, (KLEN+1)*3);
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
ret = sj3_touroku (y, k, hinshi);
|
||||
(void)wcstombs((char*)y, yomi, (YOMILEN + 1) * 3);
|
||||
(void)wcstombs((char*)k, kanji, (KLEN + 1) * 3);
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
ret = sj3_touroku(y, k, hinshi);
|
||||
} else {
|
||||
ret = sj3_touroku_euc (y, k, hinshi);
|
||||
ret = sj3_touroku_euc(y, k, hinshi);
|
||||
}
|
||||
return(ret);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
SJ2_syoukyo (yomi, kanji, hinshi)
|
||||
wchar16_t *yomi, *kanji;
|
||||
int hinshi;
|
||||
SJ2_shoukyo(yomi, kanji, hinshi)
|
||||
wchar16_t* yomi,
|
||||
*kanji;
|
||||
int hinshi;
|
||||
{
|
||||
unsigned char y[(YOMILEN+1)*3];
|
||||
unsigned char k[(KLEN+1)*3];
|
||||
int ret;
|
||||
unsigned char y[(YOMILEN + 1) * 3];
|
||||
unsigned char k[(KLEN + 1) * 3];
|
||||
int ret;
|
||||
|
||||
(void)wcstombs((char *) y, yomi, (YOMILEN+1)*3);
|
||||
(void)wcstombs((char *) k, kanji, (KLEN+1)*3);
|
||||
if (current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
ret = sj3_syoukyo (y, k, hinshi);
|
||||
(void)wcstombs((char*)y, yomi, (YOMILEN + 1) * 3);
|
||||
(void)wcstombs((char*)k, kanji, (KLEN + 1) * 3);
|
||||
if(current_locale == LC_CTYPE_SHIFTJIS) {
|
||||
ret = sj3_shoukyo(y, k, hinshi);
|
||||
} else {
|
||||
ret = sj3_syoukyo_euc (y, k, hinshi);
|
||||
ret = sj3_shoukyo_euc(y, k, hinshi);
|
||||
}
|
||||
return(ret);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
sj_check_error (err)
|
||||
int err;
|
||||
sj_check_error(err) int err;
|
||||
{
|
||||
if (err & SJ3_SERVER_DEAD)
|
||||
if(err & SJ3_SERVER_DEAD)
|
||||
SJ_warnning(WCServer_Dead);
|
||||
if (err & SJ3_ALREADY_CONNECTED)
|
||||
if(err & SJ3_ALREADY_CONNECTED)
|
||||
SJ_warnning(WCConnected);
|
||||
if (err & SJ3_CONNECT_ERROR)
|
||||
if(err & SJ3_CONNECT_ERROR)
|
||||
SJ_warnning(WCNconnect);
|
||||
if (err & SJ3_CANNOT_OPEN_MDICT)
|
||||
if(err & SJ3_CANNOT_OPEN_MDICT)
|
||||
SJ_warnning(WCNopen_Mdic);
|
||||
if (err & SJ3_CANNOT_MAKE_UDIR)
|
||||
if(err & SJ3_CANNOT_MAKE_UDIR)
|
||||
SJ_warnning(WCNmake_Udir);
|
||||
if (err & SJ3_CANNOT_MAKE_UDICT)
|
||||
if(err & SJ3_CANNOT_MAKE_UDICT)
|
||||
SJ_warnning(WCNmake_Udic);
|
||||
if (err & SJ3_CANNOT_OPEN_UDICT)
|
||||
if(err & SJ3_CANNOT_OPEN_UDICT)
|
||||
SJ_warnning(WCNopen_Udic);
|
||||
if (err & SJ3_CANNOT_MAKE_STUDY)
|
||||
if(err & SJ3_CANNOT_MAKE_STUDY)
|
||||
SJ_warnning(WCNmake_Study);
|
||||
if (err & SJ3_CANNOT_OPEN_STUDY)
|
||||
if(err & SJ3_CANNOT_OPEN_STUDY)
|
||||
SJ_warnning(WCNopen_Study);
|
||||
}
|
||||
|
||||
SJ2_reconnect ()
|
||||
{
|
||||
SJ2_reconnect() {
|
||||
int err;
|
||||
|
||||
sj3_close();
|
||||
if (dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num, dict_list, NULL, NULL);
|
||||
sj3_close();
|
||||
if(dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num, dict_list, NULL, NULL);
|
||||
else
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
return(err);
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
return (err);
|
||||
}
|
||||
|
||||
|
||||
SJ2_henkan_end ()
|
||||
{
|
||||
sj3_close ();
|
||||
SJ2_henkan_end() {
|
||||
sj3_close();
|
||||
}
|
||||
|
||||
SJ2_henkan_init ()
|
||||
{
|
||||
int i, err;
|
||||
int *err_dict = NULL;
|
||||
int err_num = 0;
|
||||
SJ2_henkan_init() {
|
||||
int i, err;
|
||||
int* err_dict = NULL;
|
||||
int err_num = 0;
|
||||
|
||||
sj3_set_timeout(5);
|
||||
sj3_set_timeout(5);
|
||||
|
||||
if (dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num,
|
||||
dict_list, &err_num, &err_dict);
|
||||
if(dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num,
|
||||
dict_list, &err_num, &err_dict);
|
||||
else
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
i = 0;
|
||||
while (err && i < MAXSERVER - 1 && serv_list[i + 1] != NULL) {
|
||||
if (dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(serv_list[++i]), user_name,
|
||||
dict_num, dict_list, &err_num, &err_dict);
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
i = 0;
|
||||
while(err && i < MAXSERVER - 1 && serv_list[i + 1] != NULL) {
|
||||
if(dict_num && dict_list)
|
||||
err = sj3_open_with_list(chmyhname(serv_list[++i]), user_name,
|
||||
dict_num, dict_list, &err_num, &err_dict);
|
||||
else
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
}
|
||||
if (err) {
|
||||
if(err) {
|
||||
printf("Warning ");
|
||||
sj_check_error(err);
|
||||
printf("\n\r");
|
||||
set_dcflag(1);
|
||||
return(1);
|
||||
} else if (err_num && err_dict) {
|
||||
return (1);
|
||||
} else if(err_num && err_dict) {
|
||||
printf("Warning ");
|
||||
for( i = 0; i < err_num; i++) {
|
||||
for(i = 0; i < err_num; i++) {
|
||||
printf("%s ", dict_list[err_dict[i]]);
|
||||
}
|
||||
printf(" files can't open\n");
|
||||
cur_serv = serv_list[i];
|
||||
return (0);
|
||||
cur_serv = serv_list[i];
|
||||
return (0);
|
||||
} else {
|
||||
cur_serv = serv_list[i];
|
||||
return (0);
|
||||
}
|
||||
cur_serv = serv_list[i];
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
sj3_autocon()
|
||||
{
|
||||
int i, err;
|
||||
sj3_autocon() {
|
||||
int i, err;
|
||||
|
||||
if (dict_num && dict_list) {
|
||||
if (!(err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num,
|
||||
dict_list, NULL, NULL)))
|
||||
return(0);
|
||||
if(dict_num && dict_list) {
|
||||
if(!(err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num,
|
||||
dict_list, NULL, NULL)))
|
||||
return (0);
|
||||
} else {
|
||||
if (!(err = sj3_open(chmyhname(cur_serv), user_name)))
|
||||
return(0);
|
||||
if(!(err = sj3_open(chmyhname(cur_serv), user_name)))
|
||||
return (0);
|
||||
}
|
||||
i = 0;
|
||||
while (serv_list[i] != NULL && i < MAXSERVER) {
|
||||
if (strcmp(cur_serv, serv_list[i]) != 0) {
|
||||
if (dict_num && dict_list) {
|
||||
i = 0;
|
||||
while(serv_list[i] != NULL && i < MAXSERVER) {
|
||||
if(strcmp(cur_serv, serv_list[i]) != 0) {
|
||||
if(dict_num && dict_list) {
|
||||
err = sj3_open_with_list(chmyhname(serv_list[i]), user_name,
|
||||
dict_num, dict_list, NULL, NULL);
|
||||
} else {
|
||||
err = sj3_open(chmyhname(cur_serv), user_name);
|
||||
}
|
||||
if (!err) {
|
||||
cur_serv = serv_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return(err);
|
||||
if(!err) {
|
||||
cur_serv = serv_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return (err);
|
||||
}
|
||||
|
|
|
|||
73
main.c
73
main.c
|
|
@ -46,76 +46,66 @@
|
|||
#include "const.h"
|
||||
#include "server.h"
|
||||
|
||||
extern int fork_flag;
|
||||
extern char *lock_file;
|
||||
extern int fork_flag;
|
||||
extern char* lock_file;
|
||||
|
||||
char *version_number = "2.08C";
|
||||
char *time_stamp = "Mon Mar 23 16:42:59 JST 1998";
|
||||
char* version_number = "2.08C";
|
||||
char* time_stamp = "Mon Mar 23 16:42:59 JST 1998";
|
||||
|
||||
static void
|
||||
opening(void)
|
||||
{
|
||||
opening(void) {
|
||||
printf("Kana-Kanji Conversion Server Version %s\r\n", version_number);
|
||||
printf("Copyright (c) 1990-1995 Sony Corporation\r\n");
|
||||
printf("Created at %s\r\n", time_stamp);
|
||||
}
|
||||
|
||||
#ifdef LOCK_FILE
|
||||
#ifdef LOCK_FILE
|
||||
|
||||
int
|
||||
make_lockfile(void)
|
||||
{
|
||||
int fd;
|
||||
int make_lockfile(void) {
|
||||
int fd;
|
||||
|
||||
fd = open(lock_file, O_CREAT | O_EXCL, 0600);
|
||||
if (fd < 0)
|
||||
if(fd < 0)
|
||||
return ERROR;
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
erase_lockfile(void)
|
||||
{
|
||||
int erase_lockfile(void) {
|
||||
return unlink(lock_file);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int
|
||||
signal_handler(int sig)
|
||||
{
|
||||
signal_handler(int sig) {
|
||||
warning_out("signal %d catched.", sig);
|
||||
}
|
||||
|
||||
static int
|
||||
terminate_handler(int sig)
|
||||
{
|
||||
terminate_handler(int sig) {
|
||||
close_socket();
|
||||
sj_closeall();
|
||||
#ifdef LOCK_FILE
|
||||
#ifdef LOCK_FILE
|
||||
erase_lockfile();
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void
|
||||
server_terminate(void)
|
||||
{
|
||||
void server_terminate(void) {
|
||||
close_socket();
|
||||
sj_closeall();
|
||||
#ifdef LOCK_FILE
|
||||
#ifdef LOCK_FILE
|
||||
erase_lockfile();
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void
|
||||
exec_fork(void)
|
||||
{
|
||||
int tmp;
|
||||
exec_fork(void) {
|
||||
int tmp;
|
||||
|
||||
if (fork_flag && (tmp = fork())) {
|
||||
if (tmp < 0) {
|
||||
if(fork_flag && (tmp = fork())) {
|
||||
if(tmp < 0) {
|
||||
fprintf(stderr, "Can't fork child process\r\n");
|
||||
fflush(stderr);
|
||||
} else {
|
||||
|
|
@ -135,14 +125,13 @@ exec_fork(void)
|
|||
signal(SIGINT, (void (*)())terminate_handler);
|
||||
signal(SIGQUIT, (void (*)())signal_handler);
|
||||
signal(SIGTERM, (void (*)())terminate_handler);
|
||||
if (fork_flag)
|
||||
if(fork_flag)
|
||||
signal(SIGTSTP, SIG_IGN);
|
||||
}
|
||||
|
||||
static void
|
||||
leave_tty(void)
|
||||
{
|
||||
int tmp;
|
||||
leave_tty(void) {
|
||||
int tmp;
|
||||
|
||||
tmp = open_error();
|
||||
tmp |= open_log();
|
||||
|
|
@ -150,23 +139,21 @@ leave_tty(void)
|
|||
kill(getppid(), SIGTERM);
|
||||
fclose(stdin);
|
||||
fclose(stdout);
|
||||
if (!tmp)
|
||||
if(!tmp)
|
||||
fclose(stderr);
|
||||
|
||||
if (fork_flag) {
|
||||
if ((tmp = open("/dev/tty", O_RDWR)) >= 0) {
|
||||
if(fork_flag) {
|
||||
if((tmp = open("/dev/tty", O_RDWR)) >= 0) {
|
||||
ioctl(tmp, TIOCNOTTY, 0);
|
||||
close(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int main(int argc, char** argv) {
|
||||
opening();
|
||||
#ifndef __NetBSD__
|
||||
if (setuid(geteuid())) {
|
||||
if(setuid(geteuid())) {
|
||||
fprintf(stderr, "error at setuid.\r\n");
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -176,8 +163,8 @@ main(int argc, char **argv)
|
|||
read_runcmd();
|
||||
set_default();
|
||||
|
||||
#ifdef LOCK_FILE
|
||||
if (make_lockfile() == ERROR) {
|
||||
#ifdef LOCK_FILE
|
||||
if(make_lockfile() == ERROR) {
|
||||
fprintf(stderr, "Already running...\r\n");
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -196,7 +183,7 @@ main(int argc, char **argv)
|
|||
|
||||
close_socket();
|
||||
sj_closeall();
|
||||
#ifdef LOCK_FILE
|
||||
#ifdef LOCK_FILE
|
||||
erase_lockfile();
|
||||
#endif
|
||||
exit(0);
|
||||
|
|
|
|||
131
makedict.c
131
makedict.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: makedict.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/12/09 11:27:05 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
/* #include "sj_sysvdef.h" */ /* XXX: no more need it? */
|
||||
|
||||
#include <stdio.h>
|
||||
|
|
@ -48,30 +39,24 @@
|
|||
#include "const.h"
|
||||
#include "dicttool.h"
|
||||
|
||||
FILE *infp = NULL;
|
||||
FILE *outfp = NULL;
|
||||
FILE* infp = NULL;
|
||||
FILE* outfp = NULL;
|
||||
|
||||
static char *idxtop = NULL;
|
||||
static char* idxtop = NULL;
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
int main(int argc, char** argv) {
|
||||
parse(argc, argv);
|
||||
|
||||
while (readline()) setline(makelist);
|
||||
while(readline()) setline(makelist);
|
||||
flush_douon();
|
||||
makehead((unsigned char *)argv[2]);
|
||||
makehead((unsigned char*)argv[2]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
make_idxlist(char* name)
|
||||
{
|
||||
int i;
|
||||
char *p;
|
||||
char* make_idxlist(char* name) {
|
||||
int i;
|
||||
char* p;
|
||||
|
||||
i = strlen(name);
|
||||
p = Zalloc(i + 2);
|
||||
|
|
@ -79,111 +64,89 @@ make_idxlist(char* name)
|
|||
return p;
|
||||
}
|
||||
|
||||
char*
|
||||
get_idxlist(char* name)
|
||||
{
|
||||
FILE *fp;
|
||||
int i;
|
||||
char *p, *q, *r;
|
||||
|
||||
char* get_idxlist(char* name) {
|
||||
FILE* fp;
|
||||
int i;
|
||||
char *p, *q, *r;
|
||||
|
||||
fp = Fopen(name, "r");
|
||||
|
||||
|
||||
i = Fsize(name);
|
||||
|
||||
|
||||
p = Zalloc(i + 2);
|
||||
Fseek(fp, 0L, 0);
|
||||
Fread(p, 1, i, fp);
|
||||
Fclose(fp);
|
||||
|
||||
|
||||
for (q = r = p ; *q ; ) {
|
||||
while (*q <= ' ') q++;
|
||||
while (*q > ' ') *r++ = *q++;
|
||||
for(q = r = p; *q;) {
|
||||
while(*q <= ' ') q++;
|
||||
while(*q > ' ') *r++ = *q++;
|
||||
*r++ = 0;
|
||||
q++;
|
||||
}
|
||||
*r = 0;
|
||||
|
||||
|
||||
i = 0;
|
||||
for (q = p ; *q ; ) {
|
||||
if ((fp = fopen(q, "r"))!=NULL)
|
||||
for(q = p; *q;) {
|
||||
if((fp = fopen(q, "r")) != NULL)
|
||||
fclose(fp);
|
||||
else {
|
||||
fprintf(stderr, "Can't open %s mode \"r\"\n", q);
|
||||
i++;
|
||||
}
|
||||
while (*q++) ;
|
||||
while(*q++);
|
||||
}
|
||||
if (i) exit(1);
|
||||
if(i) exit(1);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void parse(int argc, char** argv) {
|
||||
char* progname = NULL;
|
||||
char* p;
|
||||
|
||||
void
|
||||
parse(int argc, char** argv)
|
||||
{
|
||||
char *progname = NULL;
|
||||
char *p;
|
||||
|
||||
|
||||
if ((progname = strrchr(argv[0], '/'))!=NULL)
|
||||
if((progname = strrchr(argv[0], '/')) != NULL)
|
||||
progname++;
|
||||
else
|
||||
progname = argv[0];
|
||||
|
||||
if(argc != 3) usage(progname);
|
||||
|
||||
if (argc != 3) usage(progname);
|
||||
|
||||
|
||||
p = argv[1];
|
||||
p = argv[1];
|
||||
idxtop = (*p == '-') ? get_idxlist(p + 1) : make_idxlist(p);
|
||||
|
||||
outfp = Fopen(argv[2], "w");
|
||||
}
|
||||
|
||||
int get_number(char* ptr) {
|
||||
int i = 0;
|
||||
|
||||
int
|
||||
get_number(char* ptr)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
while (*ptr >= '0' && *ptr <= '9') {
|
||||
while(*ptr >= '0' && *ptr <= '9') {
|
||||
i = i * 10 + (*ptr++ - '0');
|
||||
}
|
||||
|
||||
return(i);
|
||||
return (i);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
usage(char* name)
|
||||
{
|
||||
void usage(char* name) {
|
||||
fprintf(stderr, "Usage: %s text_file binary_file\n",
|
||||
name ? name : "encode");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int getch(void) {
|
||||
if(infp) {
|
||||
int c;
|
||||
|
||||
int
|
||||
getch(void)
|
||||
{
|
||||
if (infp) {
|
||||
int c;
|
||||
|
||||
if ((c = Fgetc(infp)) != EOF) return c;
|
||||
if((c = Fgetc(infp)) != EOF) return c;
|
||||
|
||||
Fclose(infp);
|
||||
infp = NULL;
|
||||
|
||||
while (*idxtop++) ;
|
||||
while(*idxtop++);
|
||||
}
|
||||
|
||||
if (*idxtop) {
|
||||
if(*idxtop) {
|
||||
infp = Fopen(idxtop, "r");
|
||||
|
||||
fprintf(stderr, "Reading %s\n", idxtop);
|
||||
|
|
@ -195,29 +158,25 @@ getch(void)
|
|||
return EOF;
|
||||
}
|
||||
|
||||
void mark_file(FILE* out) {
|
||||
static char pathname[MAXPATHLEN];
|
||||
static long pos;
|
||||
|
||||
void
|
||||
mark_file(FILE* out)
|
||||
{
|
||||
static char pathname[MAXPATHLEN];
|
||||
static long pos;
|
||||
|
||||
if (out) {
|
||||
FILE *fp;
|
||||
int c;
|
||||
if(out) {
|
||||
FILE* fp;
|
||||
int c;
|
||||
|
||||
fprintf(out, "%s:\t", pathname);
|
||||
fp = Fopen(pathname, "r");
|
||||
Fseek(fp, pos, 0);
|
||||
c = Fgetc(fp);
|
||||
while (c != EOF && c != '\n') {
|
||||
while(c != EOF && c != '\n') {
|
||||
fputc(c, out);
|
||||
c = Fgetc(fp);
|
||||
}
|
||||
fputc('\n', out);
|
||||
Fclose(fp);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
strcpy(pathname, idxtop);
|
||||
pos = infp ? Ftell(infp) : 0;
|
||||
}
|
||||
|
|
|
|||
504
makelist.c
504
makelist.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: makelist.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:00:39 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
|
@ -47,81 +38,62 @@
|
|||
#define SS2 0x8e
|
||||
#endif
|
||||
|
||||
extern DouonRec *douon_ptr;
|
||||
extern int douon_num;
|
||||
extern int yomi_len;
|
||||
extern int hinsi_num;
|
||||
extern int kanji_len;
|
||||
extern HindoRec *hindo[];
|
||||
extern int hindo_num;
|
||||
extern HindoRec *askknj[];
|
||||
extern int askknj_num;
|
||||
extern HindoRec *assyuku;
|
||||
|
||||
static DouonRec *drectmp = NULL;
|
||||
|
||||
extern DouonRec* douon_ptr;
|
||||
extern int douon_num;
|
||||
extern int yomi_len;
|
||||
extern int hinshi_num;
|
||||
extern int kanji_len;
|
||||
extern HindoRec* hindo[];
|
||||
extern int hindo_num;
|
||||
extern HindoRec* askknj[];
|
||||
extern int askknj_num;
|
||||
extern HindoRec* asshuku;
|
||||
|
||||
static DouonRec* drectmp = NULL;
|
||||
|
||||
static void
|
||||
clearklist(KanjiRec* krec)
|
||||
{
|
||||
KanjiRec *p;
|
||||
clearklist(KanjiRec* krec) {
|
||||
KanjiRec* p;
|
||||
|
||||
while(krec) {
|
||||
|
||||
while (krec) {
|
||||
|
||||
Free(krec -> kptr);
|
||||
Free(krec -> aptr);
|
||||
|
||||
|
||||
p = krec;
|
||||
krec = krec -> knext;
|
||||
Free(krec->kptr);
|
||||
Free(krec->aptr);
|
||||
|
||||
p = krec;
|
||||
krec = krec->knext;
|
||||
|
||||
Free(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
clearhlist(HinsiRec* hrec)
|
||||
{
|
||||
HinsiRec *p;
|
||||
clearhlist(HinshiRec* hrec) {
|
||||
HinshiRec* p;
|
||||
|
||||
while(hrec) {
|
||||
|
||||
while (hrec) {
|
||||
|
||||
clearklist(hrec -> krec);
|
||||
|
||||
|
||||
p = hrec;
|
||||
hrec = hrec -> hnext;
|
||||
clearklist(hrec->krec);
|
||||
|
||||
p = hrec;
|
||||
hrec = hrec->hnext;
|
||||
|
||||
Free(p);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_list(void) {
|
||||
DouonRec* p;
|
||||
DouonRec* drec = douon_ptr;
|
||||
|
||||
void
|
||||
clear_list(void)
|
||||
{
|
||||
DouonRec *p;
|
||||
DouonRec *drec = douon_ptr;
|
||||
while(drec) {
|
||||
|
||||
Free(drec->yptr);
|
||||
|
||||
while (drec) {
|
||||
|
||||
Free(drec -> yptr);
|
||||
|
||||
|
||||
clearhlist(drec -> hrec);
|
||||
|
||||
|
||||
p = drec;
|
||||
drec = drec -> dnext;
|
||||
clearhlist(drec->hrec);
|
||||
|
||||
p = drec;
|
||||
drec = drec->dnext;
|
||||
|
||||
Free(p);
|
||||
}
|
||||
|
|
@ -129,71 +101,65 @@ clear_list(void)
|
|||
douon_ptr = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned char*
|
||||
makekanji(int *yomi, int* kanji, int* atr, int* len)
|
||||
{
|
||||
int kana[MaxYomiLength + 1];
|
||||
unsigned char ktmp[MaxKanjiLength * 3 + MaxAtrNumber * 2 + 1];
|
||||
int i;
|
||||
int pos = 0;
|
||||
int *p;
|
||||
unsigned char *q;
|
||||
makekanji(int* yomi, int* kanji, int* atr, int* len) {
|
||||
int kana[MaxYomiLength + 1];
|
||||
unsigned char ktmp[MaxKanjiLength * 3 + MaxAtrNumber * 2 + 1];
|
||||
int i;
|
||||
int pos = 0;
|
||||
int* p;
|
||||
unsigned char* q;
|
||||
|
||||
|
||||
for (p = yomi, i = 0 ; *p ; )
|
||||
for(p = yomi, i = 0; *p;)
|
||||
kana[i++] = h2kcode(*p++);
|
||||
kana[i] = 0;
|
||||
|
||||
while (*atr) {
|
||||
while(*atr) {
|
||||
i = *atr;
|
||||
atr++;
|
||||
#ifndef NO_ATR
|
||||
#ifndef NO_ATR
|
||||
ktmp[pos++] = (AiAttribute | ((i >> 8) & 0xff));
|
||||
ktmp[pos++] = (i & 0xff);
|
||||
ktmp[pos++] = (i & 0xff);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if ((i = top_strcmp(yomi, kanji))!=0) {
|
||||
if((i = top_strcmp(yomi, kanji)) != 0) {
|
||||
kanji += i;
|
||||
ktmp[pos++] = (ZenHiraAssyuku | (i - 1));
|
||||
ktmp[pos++] = (ZenHiraAsshuku | (i - 1));
|
||||
}
|
||||
|
||||
else if ((i = top_strcmp(kana, kanji))!=0) {
|
||||
else if((i = top_strcmp(kana, kanji)) != 0) {
|
||||
kanji += i;
|
||||
ktmp[pos++] = (ZenKataAssyuku | (i - 1));
|
||||
ktmp[pos++] = (ZenKataAsshuku | (i - 1));
|
||||
}
|
||||
|
||||
while(*kanji) {
|
||||
|
||||
while (*kanji) {
|
||||
|
||||
if ((i = last_strcmp(yomi, kanji))!=0) {
|
||||
if((i = last_strcmp(yomi, kanji)) != 0) {
|
||||
kanji += i;
|
||||
ktmp[pos++] = (ZenHiraAssyuku | (i - 1));
|
||||
ktmp[pos++] = (ZenHiraAsshuku | (i - 1));
|
||||
}
|
||||
|
||||
else if ((i = last_strcmp(kana, kanji))!=0) {
|
||||
else if((i = last_strcmp(kana, kanji)) != 0) {
|
||||
kanji += i;
|
||||
ktmp[pos++] = (ZenKataAssyuku | (i - 1));
|
||||
ktmp[pos++] = (ZenKataAsshuku | (i - 1));
|
||||
}
|
||||
|
||||
else if (((*kanji >> 8) & 0xff) == SS2 || *kanji < 0x100) {
|
||||
ktmp[pos] = LeadingHankaku;
|
||||
else if(((*kanji >> 8) & 0xff) == SS2 || *kanji < 0x100) {
|
||||
ktmp[pos] = LeadingHankaku;
|
||||
ktmp[pos + 1] = (*kanji & 0xff);
|
||||
kanji++;
|
||||
pos += 2;
|
||||
}
|
||||
|
||||
else {
|
||||
if (*kanji < 0x10000) {
|
||||
ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask);
|
||||
if(*kanji < 0x10000) {
|
||||
ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask);
|
||||
ktmp[pos + 1] = (*kanji & NormalKanjiMask);
|
||||
kanji++;
|
||||
pos += 2;
|
||||
} else if (*kanji < 0x1000000) {
|
||||
ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask);
|
||||
} else if(*kanji < 0x1000000) {
|
||||
ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask);
|
||||
ktmp[pos + 1] = (*kanji & 0xff);
|
||||
kanji++;
|
||||
pos += 2;
|
||||
|
|
@ -205,9 +171,8 @@ makekanji(int *yomi, int* kanji, int* atr, int* len)
|
|||
}
|
||||
*len = pos;
|
||||
|
||||
|
||||
q = (unsigned char *)Malloc(pos);
|
||||
if (!q) {
|
||||
q = (unsigned char*)Malloc(pos);
|
||||
if(!q) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -216,32 +181,28 @@ makekanji(int *yomi, int* kanji, int* atr, int* len)
|
|||
return q;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned char*
|
||||
makeyomi(int* yomi)
|
||||
{
|
||||
unsigned char tmp[MaxYomiLength + 1];
|
||||
int i;
|
||||
int j;
|
||||
int *y = yomi;
|
||||
unsigned char *p;
|
||||
makeyomi(int* yomi) {
|
||||
unsigned char tmp[MaxYomiLength + 1];
|
||||
int i;
|
||||
int j;
|
||||
int* y = yomi;
|
||||
unsigned char* p;
|
||||
|
||||
|
||||
for (i = 0 ; *y ; ) {
|
||||
for(i = 0; *y;) {
|
||||
j = cnvyomi(*y++);
|
||||
if (j == 0) {
|
||||
if(j == 0) {
|
||||
fprintf(stderr, "\311\324\300\265\244\312\312\270\273\372\244\254\306\311\244\337\244\313\273\310\244\357\244\354\244\306\244\244\244\336\244\271\n");
|
||||
output_int(stderr, yomi); fputc('\n', stderr);
|
||||
output_int(stderr, yomi);
|
||||
fputc('\n', stderr);
|
||||
exit(1);
|
||||
}
|
||||
tmp[i++] = j;
|
||||
}
|
||||
tmp[i++] = 0;
|
||||
|
||||
|
||||
p = (unsigned char *)Malloc(i);
|
||||
if (!p) {
|
||||
p = (unsigned char*)Malloc(i);
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -250,368 +211,303 @@ makeyomi(int* yomi)
|
|||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static KanjiRec*
|
||||
make_krec(unsigned char* kcode, int klen)
|
||||
{
|
||||
KanjiRec *krec;
|
||||
make_krec(unsigned char* kcode, int klen) {
|
||||
KanjiRec* krec;
|
||||
|
||||
|
||||
krec = (KanjiRec *)Malloc(sizeof(KanjiRec));
|
||||
if (!krec) {
|
||||
krec = (KanjiRec*)Malloc(sizeof(KanjiRec));
|
||||
if(!krec) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
krec -> klen = klen;
|
||||
krec -> kptr = kcode;
|
||||
krec -> alen = 0;
|
||||
krec -> aptr = NULL;
|
||||
krec -> knext = NULL;
|
||||
krec->klen = klen;
|
||||
krec->kptr = kcode;
|
||||
krec->alen = 0;
|
||||
krec->aptr = NULL;
|
||||
krec->knext = NULL;
|
||||
|
||||
return krec;
|
||||
}
|
||||
|
||||
static HinshiRec*
|
||||
make_hrec(int hinshi) {
|
||||
HinshiRec* hrec;
|
||||
|
||||
|
||||
static HinsiRec*
|
||||
make_hrec(int hinsi)
|
||||
{
|
||||
HinsiRec *hrec;
|
||||
|
||||
|
||||
hrec = (HinsiRec *)Malloc(sizeof(HinsiRec));
|
||||
if (!hrec) {
|
||||
hrec = (HinshiRec*)Malloc(sizeof(HinshiRec));
|
||||
if(!hrec) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
hrec -> hinsi = hinsi;
|
||||
hrec -> krec = NULL;
|
||||
hrec -> hnext = NULL;
|
||||
hrec->hinshi = hinshi;
|
||||
hrec->krec = NULL;
|
||||
hrec->hnext = NULL;
|
||||
|
||||
return hrec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static DouonRec*
|
||||
make_drec(unsigned char* ycode)
|
||||
{
|
||||
DouonRec *drec;
|
||||
make_drec(unsigned char* ycode) {
|
||||
DouonRec* drec;
|
||||
|
||||
|
||||
drec = (DouonRec *)Malloc(sizeof(DouonRec));
|
||||
if (!drec) {
|
||||
drec = (DouonRec*)Malloc(sizeof(DouonRec));
|
||||
if(!drec) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
drec -> yptr = ycode;
|
||||
drec -> hrec_num = 0;
|
||||
drec -> hrec = NULL;
|
||||
drec -> dnext = NULL;
|
||||
drec->yptr = ycode;
|
||||
drec->hrec_num = 0;
|
||||
drec->hrec = NULL;
|
||||
drec->dnext = NULL;
|
||||
|
||||
return drec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
diff_ylen(DouonRec *drec)
|
||||
{
|
||||
DouonRec *dptr;
|
||||
DouonRec *dprev;
|
||||
unsigned char *p1;
|
||||
unsigned char *p2;
|
||||
int ylen = 0;
|
||||
diff_ylen(DouonRec* drec) {
|
||||
DouonRec* dptr;
|
||||
DouonRec* dprev;
|
||||
unsigned char* p1;
|
||||
unsigned char* p2;
|
||||
int ylen = 0;
|
||||
|
||||
|
||||
dptr = douon_ptr; dprev = NULL;
|
||||
while (dptr) {
|
||||
dptr = douon_ptr;
|
||||
dprev = NULL;
|
||||
while(dptr) {
|
||||
dprev = dptr;
|
||||
dptr = dptr -> dnext;
|
||||
dptr = dptr->dnext;
|
||||
}
|
||||
|
||||
if (dprev) {
|
||||
if(dprev) {
|
||||
|
||||
p1 = dprev -> yptr; p2 = drec -> yptr;
|
||||
while (*p1 && (*p1 == *p2)) { p1++; p2++; }
|
||||
p1 = dprev->yptr;
|
||||
p2 = drec->yptr;
|
||||
while(*p1 && (*p1 == *p2)) {
|
||||
p1++;
|
||||
p2++;
|
||||
}
|
||||
|
||||
|
||||
if (*p1 == *p2) {
|
||||
if(*p1 == *p2) {
|
||||
fprintf(stderr, "\305\371\244\267\244\244\306\311\244\337\244\316\306\261\262\273\270\354\245\326\245\355\245\303\245\257\244\254\244\242\244\353\n");
|
||||
output_yomi(stderr, dprev -> yptr); fputc('\n', stderr);
|
||||
output_yomi(stderr, dprev->yptr);
|
||||
fputc('\n', stderr);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
else if (*p1 > *p2) {
|
||||
else if(*p1 > *p2) {
|
||||
fprintf(stderr, "\306\311\244\337\244\316\275\347\275\370\244\254\244\252\244\253\244\267\244\244\n");
|
||||
output_yomi(stderr, dprev->yptr); fputc('\n', stderr);
|
||||
output_yomi(stderr, drec->yptr); fputc('\n', stderr);
|
||||
output_yomi(stderr, dprev->yptr);
|
||||
fputc('\n', stderr);
|
||||
output_yomi(stderr, drec->yptr);
|
||||
fputc('\n', stderr);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
while (*p2++) ylen++;
|
||||
while(*p2++) ylen++;
|
||||
}
|
||||
|
||||
return ylen;
|
||||
return ylen;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
douon_knj(DouonRec* drec)
|
||||
{
|
||||
int i;
|
||||
int len = 0;
|
||||
unsigned char *p;
|
||||
unsigned char *knjofscvt();
|
||||
HinsiRec *hrec;
|
||||
KanjiRec *krec;
|
||||
douon_knj(DouonRec* drec) {
|
||||
int i;
|
||||
int len = 0;
|
||||
unsigned char* p;
|
||||
unsigned char* knjofscvt();
|
||||
HinshiRec* hrec;
|
||||
KanjiRec* krec;
|
||||
|
||||
for(hrec = drec->hrec; hrec; hrec = hrec->hnext) {
|
||||
|
||||
for (hrec = drec -> hrec ; hrec ; hrec = hrec -> hnext) {
|
||||
|
||||
for (krec = hrec -> krec ; krec ; krec = krec -> knext) {
|
||||
|
||||
p = knjofscvt(krec -> kptr, krec -> klen, &i);
|
||||
for(krec = hrec->krec; krec; krec = krec->knext) {
|
||||
|
||||
p = knjofscvt(krec->kptr, krec->klen, &i);
|
||||
|
||||
len += i + 1;
|
||||
|
||||
|
||||
knjhnd_set(p, i);
|
||||
|
||||
krec->alen = i;
|
||||
krec->aptr = p;
|
||||
|
||||
krec -> alen = i;
|
||||
krec -> aptr = p;
|
||||
|
||||
|
||||
set_ofsrec(krec -> kptr, krec -> klen, 0);
|
||||
set_ofsrec(krec->kptr, krec->klen, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
make_d_list(DouonRec* drec)
|
||||
{
|
||||
make_d_list(DouonRec* drec) {
|
||||
DouonRec *dptr, *dprev;
|
||||
HinsiRec *hptr;
|
||||
KanjiRec *kptr;
|
||||
int ylen;
|
||||
int klen;
|
||||
int hnum;
|
||||
int len;
|
||||
int i;
|
||||
HinshiRec* hptr;
|
||||
KanjiRec* kptr;
|
||||
int ylen;
|
||||
int klen;
|
||||
int hnum;
|
||||
int len;
|
||||
int i;
|
||||
|
||||
start:
|
||||
|
||||
if (douon_ptr == NULL) {
|
||||
if(douon_ptr == NULL) {
|
||||
douon_num = 0;
|
||||
yomi_len = 0;
|
||||
hinsi_num = 0;
|
||||
hinshi_num = 0;
|
||||
kanji_len = 0;
|
||||
assyuku = NULL;
|
||||
asshuku = NULL;
|
||||
}
|
||||
|
||||
|
||||
klen = douon_knj(drec);
|
||||
|
||||
|
||||
ylen = diff_ylen(drec);
|
||||
|
||||
|
||||
hnum = drec -> hrec_num;
|
||||
|
||||
hnum = drec->hrec_num;
|
||||
|
||||
i = 1 +
|
||||
MaxKnjAskNumber +
|
||||
|
||||
douon_num * DouonBlkSizeNumber + DouonBlkSizeNumber +
|
||||
yomi_len + ylen +
|
||||
hinsi_num + hnum +
|
||||
hinsi_num + hnum +
|
||||
yomi_len + ylen +
|
||||
hinshi_num + hnum +
|
||||
hinshi_num + hnum +
|
||||
kanji_len + klen;
|
||||
|
||||
|
||||
len = (i <= MainSegmentLength) ? 0 : decide_knjask();
|
||||
|
||||
if((i - len) <= MainSegmentLength) {
|
||||
|
||||
if ((i - len) <= MainSegmentLength) {
|
||||
if(douon_ptr) {
|
||||
|
||||
if (douon_ptr) {
|
||||
|
||||
dptr = douon_ptr; dprev = NULL;
|
||||
while (dptr) {
|
||||
dptr = douon_ptr;
|
||||
dprev = NULL;
|
||||
while(dptr) {
|
||||
dprev = dptr;
|
||||
dptr = dptr -> dnext;
|
||||
dptr = dptr->dnext;
|
||||
}
|
||||
|
||||
|
||||
dprev -> dnext = drec;
|
||||
dprev->dnext = drec;
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
douon_ptr = drec;
|
||||
}
|
||||
drec -> dnext = NULL;
|
||||
|
||||
|
||||
drec -> dlen = ylen;
|
||||
drec->dnext = NULL;
|
||||
|
||||
drec->dlen = ylen;
|
||||
|
||||
douon_num += 1;
|
||||
|
||||
yomi_len += ylen;
|
||||
|
||||
yomi_len += ylen;
|
||||
|
||||
|
||||
hinsi_num += hnum;
|
||||
|
||||
hinshi_num += hnum;
|
||||
|
||||
kanji_len += klen;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
else if (douon_ptr == NULL) {
|
||||
else if(douon_ptr == NULL) {
|
||||
fprintf(stderr, "\243\261\306\261\262\273\270\354\245\326\245\355\245\303\245\257\244\254\302\347\244\255\244\271\244\256\244\336\244\271\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
for(hptr = drec->hrec; hptr; hptr = hptr->hnext) {
|
||||
for(kptr = hptr->krec; kptr; kptr = kptr->knext) {
|
||||
|
||||
for (hptr = drec -> hrec ; hptr ; hptr = hptr -> hnext) {
|
||||
for (kptr = hptr -> krec ; kptr ; kptr = kptr -> knext) {
|
||||
knjhnd_reset(kptr->aptr, kptr->alen);
|
||||
|
||||
|
||||
knjhnd_reset(kptr -> aptr, kptr -> alen);
|
||||
|
||||
|
||||
Free(kptr -> aptr);
|
||||
kptr -> aptr = NULL;
|
||||
Free(kptr->aptr);
|
||||
kptr->aptr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
len = decide_knjask();
|
||||
|
||||
|
||||
makeseg();
|
||||
|
||||
|
||||
clear_list();
|
||||
|
||||
|
||||
clear_hindo();
|
||||
|
||||
|
||||
clear_ofsrec();
|
||||
|
||||
|
||||
askknj_num = 0;
|
||||
|
||||
|
||||
clear_assyuku();
|
||||
clear_asshuku();
|
||||
|
||||
goto start;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
flush_douon(void)
|
||||
{
|
||||
if (drectmp) {
|
||||
void flush_douon(void) {
|
||||
if(drectmp) {
|
||||
|
||||
make_d_list(drectmp);
|
||||
|
||||
drectmp = NULL;
|
||||
}
|
||||
|
||||
if (douon_ptr) {
|
||||
if(douon_ptr) {
|
||||
|
||||
decide_knjask();
|
||||
|
||||
|
||||
makeseg();
|
||||
|
||||
|
||||
clear_list();
|
||||
|
||||
|
||||
clear_hindo();
|
||||
|
||||
|
||||
clear_ofsrec();
|
||||
|
||||
|
||||
askknj_num = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
makelist(int* yomi, int* kanji, int hinsi, int* atr)
|
||||
{
|
||||
unsigned char *ycode;
|
||||
unsigned char *kcode;
|
||||
int klen;
|
||||
HinsiRec *hrec;
|
||||
KanjiRec *krec, *kprev;
|
||||
|
||||
void makelist(int* yomi, int* kanji, int hinshi, int* atr) {
|
||||
unsigned char* ycode;
|
||||
unsigned char* kcode;
|
||||
int klen;
|
||||
HinshiRec* hrec;
|
||||
KanjiRec * krec, *kprev;
|
||||
|
||||
ycode = makeyomi(yomi);
|
||||
|
||||
|
||||
kcode = makekanji(yomi, kanji, atr, &klen);
|
||||
|
||||
|
||||
if (drectmp && strcmp(ycode, drectmp -> yptr)) {
|
||||
if(drectmp && strcmp(ycode, drectmp->yptr)) {
|
||||
|
||||
make_d_list(drectmp);
|
||||
|
||||
drectmp = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (!drectmp) {
|
||||
if(!drectmp) {
|
||||
|
||||
drectmp = make_drec(ycode);
|
||||
|
||||
hrec = make_hrec(hinshi);
|
||||
drectmp->hrec = hrec;
|
||||
drectmp->hrec_num = 1;
|
||||
|
||||
hrec = make_hrec(hinsi);
|
||||
drectmp -> hrec = hrec;
|
||||
drectmp -> hrec_num = 1;
|
||||
|
||||
|
||||
krec = make_krec(kcode, klen);
|
||||
hrec -> krec = krec;
|
||||
krec = make_krec(kcode, klen);
|
||||
hrec->krec = krec;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for(hrec = drectmp->hrec; hrec->hnext; hrec = hrec->hnext)
|
||||
if(hrec->hinshi == hinshi) break;
|
||||
|
||||
for (hrec = drectmp -> hrec ; hrec -> hnext ; hrec = hrec -> hnext)
|
||||
if (hrec -> hinsi == hinsi) break;
|
||||
if(hrec->hinshi == hinshi) {
|
||||
|
||||
for(krec = hrec->krec; krec; krec = krec->knext) {
|
||||
|
||||
if (hrec -> hinsi == hinsi) {
|
||||
|
||||
for (krec=hrec->krec ; krec ; krec=krec->knext) {
|
||||
|
||||
if ((krec -> klen == klen) &&
|
||||
!memcmp(krec -> kptr, kcode, klen)) {
|
||||
if((krec->klen == klen) &&
|
||||
!memcmp(krec->kptr, kcode, klen)) {
|
||||
fprintf(stderr, "\306\261\260\354\244\316\275\317\270\354\244\254\302\270\272\337\244\267\244\277\n");
|
||||
fprintf(stderr, "\t\306\311\244\337:");
|
||||
output_int(stderr, yomi);
|
||||
|
|
@ -620,7 +516,6 @@ makelist(int* yomi, int* kanji, int hinsi, int* atr)
|
|||
output_int(stderr, kanji);
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
|
||||
Free(kcode);
|
||||
|
||||
return;
|
||||
|
|
@ -628,18 +523,15 @@ makelist(int* yomi, int* kanji, int hinsi, int* atr)
|
|||
kprev = krec;
|
||||
}
|
||||
|
||||
|
||||
kprev -> knext = make_krec(kcode, klen);
|
||||
kprev->knext = make_krec(kcode, klen);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
hrec->hnext = make_hrec(hinshi);
|
||||
hrec = hrec->hnext;
|
||||
drectmp->hrec_num += 1;
|
||||
|
||||
hrec -> hnext = make_hrec(hinsi);
|
||||
hrec = hrec -> hnext;
|
||||
drectmp -> hrec_num += 1;
|
||||
|
||||
|
||||
krec = make_krec(kcode, klen);
|
||||
hrec -> krec = krec;
|
||||
krec = make_krec(kcode, klen);
|
||||
hrec->krec = krec;
|
||||
}
|
||||
|
|
|
|||
377
makeseg.c
377
makeseg.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: makeseg.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/12/09 11:27:05 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
|
@ -46,58 +37,55 @@
|
|||
#include "Dict.h"
|
||||
#include "dicttool.h"
|
||||
|
||||
extern HindoRec *askknj[];
|
||||
extern int askknj_num;
|
||||
extern DouonRec *douon_ptr;
|
||||
extern FILE *outfp;
|
||||
extern int douon_num;
|
||||
|
||||
static unsigned char segindex[MainSegmentLength];
|
||||
static int idxpos = 0;
|
||||
static int idxnum = 0;
|
||||
extern HindoRec* askknj[];
|
||||
extern int askknj_num;
|
||||
extern DouonRec* douon_ptr;
|
||||
extern FILE* outfp;
|
||||
extern int douon_num;
|
||||
|
||||
static unsigned char segindex[MainSegmentLength];
|
||||
static int idxpos = 0;
|
||||
static int idxnum = 0;
|
||||
|
||||
static unsigned char*
|
||||
set_ofsask(unsigned char* src, unsigned char* dst)
|
||||
{
|
||||
int len;
|
||||
unsigned char *ptr;
|
||||
OffsetRec *ofsrec;
|
||||
|
||||
set_ofsask(unsigned char* src, unsigned char* dst) {
|
||||
int len;
|
||||
unsigned char* ptr;
|
||||
OffsetRec* ofsrec;
|
||||
|
||||
ofsrec = real_ofsrec(src);
|
||||
|
||||
for (len = ofsrec->klen, ptr = ofsrec->kptr ; len > 0 ; ) {
|
||||
switch (*ptr & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
case ZenKataAssyuku:
|
||||
case KanjiAssyuku:
|
||||
for(len = ofsrec->klen, ptr = ofsrec->kptr; len > 0;) {
|
||||
switch(*ptr & KanjiModeMask) {
|
||||
case ZenHiraAsshuku:
|
||||
case ZenKataAsshuku:
|
||||
case KanjiAsshuku:
|
||||
*dst++ = *ptr++;
|
||||
len -= 1;
|
||||
break;
|
||||
case LeadingHankaku:
|
||||
case LeadingHankaku:
|
||||
#ifndef UseHankakuInDict
|
||||
fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
#else
|
||||
*dst++ = *ptr++;
|
||||
*dst++ = *ptr++;
|
||||
len -= 2;
|
||||
break;
|
||||
#endif
|
||||
case OffsetAssyuku:
|
||||
case OffsetAsshuku:
|
||||
fprintf(stderr, "\306\363\275\305\244\313\245\252\245\325\245\273\245\303\245\310\244\254\273\262\276\310\244\265\244\354\244\306\244\244\244\353\n");
|
||||
exit(1);
|
||||
case AiAttribute:
|
||||
case AiAttribute:
|
||||
*dst++ = *ptr++;
|
||||
*dst++ = *ptr++;
|
||||
len -= 2;
|
||||
break;
|
||||
case KanjiStrEnd:
|
||||
case KanjiStrEnd:
|
||||
*dst++ = *ptr++;
|
||||
len--;
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
*dst++ = *ptr++;
|
||||
*dst++ = *ptr++;
|
||||
len -= 2;
|
||||
|
|
@ -107,85 +95,74 @@ set_ofsask(unsigned char* src, unsigned char* dst)
|
|||
return dst;
|
||||
}
|
||||
|
||||
|
||||
size_t
|
||||
make_knjstr(unsigned char* src, int len, unsigned char* dst)
|
||||
{
|
||||
unsigned char *keep = dst;
|
||||
make_knjstr(unsigned char* src, int len, unsigned char* dst) {
|
||||
unsigned char* keep = dst;
|
||||
|
||||
while (len > 0) {
|
||||
switch (*src & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
case ZenKataAssyuku:
|
||||
case KanjiAssyuku:
|
||||
while(len > 0) {
|
||||
switch(*src & KanjiModeMask) {
|
||||
case ZenHiraAsshuku:
|
||||
case ZenKataAsshuku:
|
||||
case KanjiAsshuku:
|
||||
*dst++ = *src++;
|
||||
len -= 1;
|
||||
break;
|
||||
case LeadingHankaku:
|
||||
case LeadingHankaku:
|
||||
#ifndef UseHankakuInDict
|
||||
fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
#else
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
len -= 2;
|
||||
break;
|
||||
#endif
|
||||
case OffsetAssyuku:
|
||||
case OffsetAsshuku:
|
||||
dst = set_ofsask(src, dst);
|
||||
src += 2;
|
||||
len -= 2;
|
||||
break;
|
||||
case AiAttribute:
|
||||
case AiAttribute:
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
len -= 2;
|
||||
break;
|
||||
case KanjiStrEnd:
|
||||
case KanjiStrEnd:
|
||||
*dst++ = *src++;
|
||||
len--;
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
len -= 2;
|
||||
}
|
||||
}
|
||||
return(dst - keep);
|
||||
}
|
||||
}
|
||||
return (dst - keep);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
make_knjask(void)
|
||||
{
|
||||
int i;
|
||||
unsigned char *p;
|
||||
unsigned char buf[128];
|
||||
int len;
|
||||
int tlen = 0;
|
||||
make_knjask(void) {
|
||||
int i;
|
||||
unsigned char* p;
|
||||
unsigned char buf[128];
|
||||
int len;
|
||||
int tlen = 0;
|
||||
|
||||
for(i = 0; i < askknj_num; i++) {
|
||||
|
||||
for (i = 0 ; i < askknj_num ; i++) {
|
||||
len = make_knjstr(askknj[i]->kptr, askknj[i]->klen, buf);
|
||||
|
||||
Free(askknj[i]->kptr);
|
||||
|
||||
len = make_knjstr(askknj[i] -> kptr, askknj[i] -> klen, buf);
|
||||
|
||||
|
||||
Free(askknj[i] -> kptr);
|
||||
|
||||
|
||||
p = (unsigned char *)Malloc(len);
|
||||
if (!p) {
|
||||
p = (unsigned char*)Malloc(len);
|
||||
if(!p) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
memcpy(p, buf, len);
|
||||
askknj[i] -> kptr = p;
|
||||
askknj[i] -> klen = len;
|
||||
|
||||
askknj[i]->kptr = p;
|
||||
askknj[i]->klen = len;
|
||||
|
||||
tlen += len + 1;
|
||||
}
|
||||
|
|
@ -193,172 +170,161 @@ make_knjask(void)
|
|||
return tlen;
|
||||
}
|
||||
|
||||
void makeseg(void) {
|
||||
unsigned char buf[MainSegmentLength];
|
||||
DouonRec* drec;
|
||||
HinshiRec* hrec;
|
||||
KanjiRec* krec;
|
||||
int i, j, k;
|
||||
int slen;
|
||||
unsigned char* dst;
|
||||
unsigned char* sdst;
|
||||
unsigned char *p, *q;
|
||||
|
||||
void
|
||||
makeseg(void)
|
||||
{
|
||||
unsigned char buf[MainSegmentLength];
|
||||
DouonRec *drec;
|
||||
HinsiRec *hrec;
|
||||
KanjiRec *krec;
|
||||
int i, j, k;
|
||||
int slen;
|
||||
unsigned char *dst;
|
||||
unsigned char *sdst;
|
||||
unsigned char *p, *q;
|
||||
|
||||
#ifndef HEHE
|
||||
#define datset(i) { if (dst >= buf+sizeof(buf)) goto err; *dst++ = i; }
|
||||
#ifndef HEHE
|
||||
#define datset(i) \
|
||||
{ \
|
||||
if(dst >= buf + sizeof(buf)) goto err; \
|
||||
*dst++ = i; \
|
||||
}
|
||||
#else
|
||||
#define datset(i) { *dst++; i; }
|
||||
#define datset(i) \
|
||||
{ \
|
||||
*dst++; \
|
||||
i; \
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
dst = buf;
|
||||
|
||||
|
||||
i = make_knjask();
|
||||
if (i >= 0x100) {
|
||||
if(i >= 0x100) {
|
||||
fprintf(stderr, "\264\301\273\372\260\265\275\314\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\353\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
datset(i);
|
||||
for (i = 0 ; i < askknj_num ; i++) {
|
||||
p = askknj[i] -> kptr;
|
||||
j = askknj[i] -> klen;
|
||||
while (j > 0) {
|
||||
for(i = 0; i < askknj_num; i++) {
|
||||
p = askknj[i]->kptr;
|
||||
j = askknj[i]->klen;
|
||||
while(j > 0) {
|
||||
k = codesize(*p);
|
||||
datset(*p); p++;
|
||||
if (k > 2) {
|
||||
datset(*p); p++;
|
||||
datset(*p); p++;
|
||||
} else if (k > 1) {
|
||||
datset(*p); p++;
|
||||
datset(*p);
|
||||
p++;
|
||||
if(k > 2) {
|
||||
datset(*p);
|
||||
p++;
|
||||
datset(*p);
|
||||
p++;
|
||||
} else if(k > 1) {
|
||||
datset(*p);
|
||||
p++;
|
||||
}
|
||||
j -= k;
|
||||
}
|
||||
datset(KanjiStrEnd);
|
||||
}
|
||||
|
||||
|
||||
clear_ofsrec();
|
||||
|
||||
for(drec = douon_ptr; drec; drec = drec->dnext) {
|
||||
|
||||
for (drec = douon_ptr ; drec ; drec = drec->dnext) {
|
||||
sdst = dst;
|
||||
dst += DouonBlkSizeNumber;
|
||||
|
||||
|
||||
sdst = dst; dst += DouonBlkSizeNumber;
|
||||
|
||||
|
||||
p = drec -> yptr;
|
||||
slen = strlen(p) - drec -> dlen;
|
||||
p = drec->yptr;
|
||||
slen = strlen(p) - drec->dlen;
|
||||
p += slen;
|
||||
for (i = drec -> dlen ; i > 0 ; i--) {
|
||||
datset(*p); p++;
|
||||
for(i = drec->dlen; i > 0; i--) {
|
||||
datset(*p);
|
||||
p++;
|
||||
}
|
||||
|
||||
for (hrec = drec->hrec ; hrec ; hrec = hrec->hnext) {
|
||||
for(hrec = drec->hrec; hrec; hrec = hrec->hnext) {
|
||||
|
||||
datset(hrec->hinshi);
|
||||
|
||||
datset(hrec -> hinsi);
|
||||
|
||||
|
||||
for (krec = hrec->krec ; krec ; krec = krec->knext) {
|
||||
|
||||
|
||||
p = q = knjcvt(krec -> kptr, krec -> klen, &i);
|
||||
for(krec = hrec->krec; krec; krec = krec->knext) {
|
||||
|
||||
p = q = knjcvt(krec->kptr, krec->klen, &i);
|
||||
|
||||
set_ofsrec(krec->kptr, krec->klen, dst - buf);
|
||||
|
||||
|
||||
while (i-- > 0) {
|
||||
datset(*p); p++;
|
||||
while(i-- > 0) {
|
||||
datset(*p);
|
||||
p++;
|
||||
}
|
||||
datset(KanjiStrEnd);
|
||||
|
||||
Free(q);
|
||||
}
|
||||
|
||||
|
||||
datset(HinsiBlkTerm);
|
||||
datset(HinshiBlkTerm);
|
||||
}
|
||||
|
||||
|
||||
i = dst - sdst;
|
||||
*sdst = ((i >> 8) & 0x0f);
|
||||
i = dst - sdst;
|
||||
*sdst = ((i >> 8) & 0x0f);
|
||||
*(sdst + 1) = (i & 0xff);
|
||||
|
||||
if(drec->dlen > 0x0f) *sdst |= 0x40;
|
||||
*(sdst + 2) = (drec->dlen & 0x0f);
|
||||
|
||||
if (drec -> dlen > 0x0f) *sdst |= 0x40;
|
||||
*(sdst + 2) = (drec -> dlen & 0x0f);
|
||||
|
||||
|
||||
if (slen > 0x0f) *sdst |= 0x80;
|
||||
if(slen > 0x0f) *sdst |= 0x80;
|
||||
*(sdst + 2) |= ((slen << 4) & 0xf0);
|
||||
}
|
||||
|
||||
if (dst < buf + sizeof(buf)) {
|
||||
if(dst < buf + sizeof(buf)) {
|
||||
datset(DouonBlkTerm);
|
||||
}
|
||||
|
||||
|
||||
for (p = douon_ptr -> yptr ; ; ) {
|
||||
if (idxpos < MainIndexLength) {
|
||||
for(p = douon_ptr->yptr;;) {
|
||||
if(idxpos < MainIndexLength) {
|
||||
segindex[idxpos++] = *p;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
|
||||
exit(1);
|
||||
}
|
||||
if (!*p++) break;
|
||||
if(!*p++) break;
|
||||
}
|
||||
if (idxpos < MainIndexLength) {
|
||||
if(idxpos < MainIndexLength) {
|
||||
segindex[idxpos] = 0;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
i = dst - buf;
|
||||
|
||||
while (dst < buf + sizeof(buf)) *dst++ = DouonBlkTerm;
|
||||
while(dst < buf + sizeof(buf)) *dst++ = DouonBlkTerm;
|
||||
|
||||
|
||||
if (Fseek(outfp,
|
||||
(long)(HeaderLength + CommentLength + MainIndexLength
|
||||
+ idxnum * MainSegmentLength),
|
||||
0) < 0) {
|
||||
if(Fseek(outfp,
|
||||
(long)(HeaderLength + CommentLength + MainIndexLength + idxnum * MainSegmentLength),
|
||||
0) < 0) {
|
||||
fprintf(stderr, "\275\320\316\317\245\325\245\241\245\244\245\353\244\307\245\267\241\274\245\257\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
}
|
||||
if (Fwrite(buf, sizeof(buf), 1, outfp) != 1) {
|
||||
if(Fwrite(buf, sizeof(buf), 1, outfp) != 1) {
|
||||
fprintf(stderr, "\275\320\316\317\245\325\245\241\245\244\245\353\244\307\245\351\245\244\245\310\245\250\245\351\241\274\n");
|
||||
exit(1);
|
||||
}
|
||||
Fflush(outfp);
|
||||
|
||||
|
||||
printf("\245\273\245\260\245\341\245\363\245\310\310\326\271\346:%d:", idxnum++);
|
||||
output_yomi(stdout, douon_ptr -> yptr);
|
||||
output_yomi(stdout, douon_ptr->yptr);
|
||||
printf("\t\245\273\245\260\245\341\245\363\245\310\304\271:%d", i);
|
||||
printf("\t\306\261\262\273\270\354\277\364:%d\n", douon_num);
|
||||
printf("\264\301\273\372\260\265\275\314\312\270\273\372\316\363:");
|
||||
for (i = j = 0 ; i < askknj_num ; i++) {
|
||||
for(i = j = 0; i < askknj_num; i++) {
|
||||
putchar('\t');
|
||||
if (i && j == 0) putchar('\t');
|
||||
output_knj(stdout, askknj[i] -> kptr, askknj[i] -> klen);
|
||||
printf(":%d", askknj[i] -> hindo + askknj[i] -> exist);
|
||||
if (++j >= 4) {
|
||||
if(i && j == 0) putchar('\t');
|
||||
output_knj(stdout, askknj[i]->kptr, askknj[i]->klen);
|
||||
printf(":%d", askknj[i]->hindo + askknj[i]->exist);
|
||||
if(++j >= 4) {
|
||||
putchar('\n');
|
||||
j = 0;
|
||||
}
|
||||
}
|
||||
if (j) putchar('\n');
|
||||
if(j) putchar('\n');
|
||||
putchar('\n');
|
||||
fflush(stdout);
|
||||
|
||||
|
|
@ -367,63 +333,66 @@ makeseg(void)
|
|||
err:
|
||||
fprintf(stderr, "\245\273\245\260\245\341\245\363\245\310\271\275\300\256\303\346\244\313\245\320\245\303\245\325\245\241\244\254\244\242\244\325\244\354\244\277\n");
|
||||
fprintf(stderr, "\245\273\245\260\245\341\245\363\245\310\300\350\306\254\244\316\306\311\244\337:");
|
||||
output_yomi(stderr, douon_ptr -> yptr);
|
||||
output_yomi(stderr, douon_ptr->yptr);
|
||||
fputc('\n', stderr);
|
||||
|
||||
exit(1);
|
||||
#undef datset
|
||||
#undef datset
|
||||
}
|
||||
|
||||
static void
|
||||
put4byte(unsigned char* p, size_t n)
|
||||
{
|
||||
p += 3;
|
||||
*p-- = n; n >>= 8;
|
||||
*p-- = n; n >>= 8;
|
||||
*p-- = n; n >>= 8;
|
||||
*p = n;
|
||||
put4byte(unsigned char* p, size_t n) {
|
||||
p += 3;
|
||||
*p-- = n;
|
||||
n >>= 8;
|
||||
*p-- = n;
|
||||
n >>= 8;
|
||||
*p-- = n;
|
||||
n >>= 8;
|
||||
*p = n;
|
||||
}
|
||||
|
||||
void
|
||||
makehead(unsigned char* dict_name)
|
||||
{
|
||||
unsigned char header[HeaderLength + CommentLength];
|
||||
long i;
|
||||
unsigned char *p;
|
||||
time_t curtime;
|
||||
void makehead(unsigned char* dict_name) {
|
||||
unsigned char header[HeaderLength + CommentLength];
|
||||
long i;
|
||||
unsigned char* p;
|
||||
time_t curtime;
|
||||
|
||||
#define IndexPos (HeaderLength + CommentLength)
|
||||
#define IndexPos (HeaderLength + CommentLength)
|
||||
|
||||
memset(header, '\0', sizeof(header));
|
||||
put4byte(header + VersionPos, DictVersion);
|
||||
memset(header, '\0', sizeof(header));
|
||||
put4byte(header + VersionPos, DictVersion);
|
||||
time(&curtime);
|
||||
p = header + CommentPos;
|
||||
sprintf((char *)p, "%s : %s", dict_name, ctime(&curtime));
|
||||
while (*p) {
|
||||
if (*p == '\n') { *p = 0; break; }
|
||||
p = header + CommentPos;
|
||||
sprintf((char*)p, "%s : %s", dict_name, ctime(&curtime));
|
||||
while(*p) {
|
||||
if(*p == '\n') {
|
||||
*p = 0;
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
i = IndexPos;
|
||||
put4byte(header + DictIdxPos, i);
|
||||
put4byte(header + DictIdxLen, MainIndexLength);
|
||||
i += MainIndexLength;
|
||||
i = IndexPos;
|
||||
put4byte(header + DictIdxPos, i);
|
||||
put4byte(header + DictIdxLen, MainIndexLength);
|
||||
i += MainIndexLength;
|
||||
|
||||
put4byte(header + DictSegPos, i);
|
||||
put4byte(header + DictSegLen, MainSegmentLength);
|
||||
put4byte(header + DictSegMax, 0);
|
||||
put4byte(header + DictSegNum, idxnum);
|
||||
put4byte(header + DictSegPos, i);
|
||||
put4byte(header + DictSegLen, MainSegmentLength);
|
||||
put4byte(header + DictSegMax, 0);
|
||||
put4byte(header + DictSegNum, idxnum);
|
||||
|
||||
put4byte(header + DictAIdxPos, 0);
|
||||
put4byte(header + DictAIdxLen, 0);
|
||||
put4byte(header + DictAIdxPos, 0);
|
||||
put4byte(header + DictAIdxLen, 0);
|
||||
|
||||
put4byte(header + DictASegPos, 0);
|
||||
put4byte(header + DictASegLen, 0);
|
||||
put4byte(header + DictASegPos, 0);
|
||||
put4byte(header + DictASegLen, 0);
|
||||
|
||||
Fseek(outfp, (long)HeaderPos, 0);
|
||||
Fwrite(header, sizeof(header), 1, outfp);
|
||||
Fseek(outfp, (long)IndexPos, 0);
|
||||
Fwrite(segindex, MainIndexLength, 1, outfp);
|
||||
Fseek(outfp, (long)HeaderPos, 0);
|
||||
Fwrite(header, sizeof(header), 1, outfp);
|
||||
Fseek(outfp, (long)IndexPos, 0);
|
||||
Fwrite(segindex, MainIndexLength, 1, outfp);
|
||||
|
||||
#undef IndexPos
|
||||
#undef IndexPos
|
||||
}
|
||||
|
|
|
|||
45
memory.c
45
memory.c
|
|
@ -27,46 +27,31 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: memory.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:00:42 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include "dicttool.h"
|
||||
|
||||
void*
|
||||
Malloc(size_t size)
|
||||
{
|
||||
void* p;
|
||||
void* Malloc(size_t size) {
|
||||
void* p;
|
||||
|
||||
p = malloc(size);
|
||||
if (p == NULL) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\263\316\312\335\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277\241\243\n");
|
||||
exit(1);
|
||||
}
|
||||
return p;
|
||||
p = malloc(size);
|
||||
if(p == NULL) {
|
||||
fprintf(stderr, "\245\341\245\342\245\352\244\254\263\316\312\335\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277\241\243\n");
|
||||
exit(1);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void*
|
||||
Zalloc (size_t size)
|
||||
{
|
||||
void* p;
|
||||
void* Zalloc(size_t size) {
|
||||
void* p;
|
||||
|
||||
p = Malloc(size);
|
||||
memset(p, '\0', size);
|
||||
return p;
|
||||
p = Malloc(size);
|
||||
memset(p, '\0', size);
|
||||
return p;
|
||||
}
|
||||
|
||||
void
|
||||
Free(void *p)
|
||||
{
|
||||
free(p);
|
||||
void Free(void* p) {
|
||||
free(p);
|
||||
}
|
||||
|
|
|
|||
100
memory2.c
100
memory2.c
|
|
@ -27,34 +27,26 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: memory.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:01:58 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
|
||||
void free_jrec(), free_clrec();
|
||||
void free_jrec(), free_clrec();
|
||||
|
||||
JREC *free_jlst(p)
|
||||
JREC *p;
|
||||
JREC* free_jlst(p)
|
||||
JREC* p;
|
||||
{
|
||||
JREC *jpk;
|
||||
JREC *jp;
|
||||
JREC *jn;
|
||||
JREC* jpk;
|
||||
JREC* jp;
|
||||
JREC* jn;
|
||||
|
||||
jp = NULL;
|
||||
|
||||
for ( ; p ; p = jn) {
|
||||
for(; p; p = jn) {
|
||||
|
||||
jn = p -> jsort;
|
||||
jn = p->jsort;
|
||||
|
||||
if (p -> count) {
|
||||
if (jp)
|
||||
jp -> jsort = p;
|
||||
if(p->count) {
|
||||
if(jp)
|
||||
jp->jsort = p;
|
||||
else
|
||||
jpk = p;
|
||||
jp = p;
|
||||
|
|
@ -65,38 +57,36 @@ JREC *p;
|
|||
}
|
||||
}
|
||||
|
||||
if (jp) jp -> jsort = NULL;
|
||||
if(jp) jp->jsort = NULL;
|
||||
|
||||
return jpk;
|
||||
}
|
||||
|
||||
CLREC *free_clst(p, l)
|
||||
CLREC *p;
|
||||
int l;
|
||||
CLREC* free_clst(p, l)
|
||||
CLREC* p;
|
||||
int l;
|
||||
{
|
||||
CLREC *cpk;
|
||||
CLREC *cp;
|
||||
CLREC *cn;
|
||||
int i = FALSE;
|
||||
CLREC* cpk;
|
||||
CLREC* cp;
|
||||
CLREC* cn;
|
||||
int i = FALSE;
|
||||
|
||||
cp = cpk = NULL;
|
||||
|
||||
for ( ; p ; p = cn) {
|
||||
for(; p; p = cn) {
|
||||
|
||||
cn = p -> clsort;
|
||||
cn = p->clsort;
|
||||
|
||||
if ((int)p -> cllen == l) {
|
||||
if (p == selcl) {
|
||||
if (cp) {
|
||||
p -> clsort = cpk;
|
||||
cpk = p;
|
||||
}
|
||||
else
|
||||
if((int)p->cllen == l) {
|
||||
if(p == selcl) {
|
||||
if(cp) {
|
||||
p->clsort = cpk;
|
||||
cpk = p;
|
||||
} else
|
||||
cpk = cp = p;
|
||||
}
|
||||
else {
|
||||
if (cp)
|
||||
cp -> clsort = p;
|
||||
} else {
|
||||
if(cp)
|
||||
cp->clsort = p;
|
||||
else
|
||||
cpk = p;
|
||||
cp = p;
|
||||
|
|
@ -104,48 +94,46 @@ int l;
|
|||
}
|
||||
|
||||
else {
|
||||
(p -> jnode -> count)--;
|
||||
(p->jnode->count)--;
|
||||
|
||||
free_clrec(p);
|
||||
}
|
||||
}
|
||||
|
||||
if (cp) cp -> clsort = NULL;
|
||||
if(cp) cp->clsort = NULL;
|
||||
|
||||
return cpk;
|
||||
}
|
||||
|
||||
void free_clall(p)
|
||||
CLREC *p;
|
||||
void free_clall(p)
|
||||
CLREC* p;
|
||||
{
|
||||
CLREC *next;
|
||||
CLREC* next;
|
||||
|
||||
while (p) {
|
||||
(p -> jnode -> count)--;
|
||||
next = p -> clsort;
|
||||
while(p) {
|
||||
(p->jnode->count)--;
|
||||
next = p->clsort;
|
||||
free_clrec(p);
|
||||
p = next;
|
||||
}
|
||||
}
|
||||
|
||||
void free_jall(p)
|
||||
JREC *p;
|
||||
void free_jall(p)
|
||||
JREC* p;
|
||||
{
|
||||
JREC *next;
|
||||
JREC* next;
|
||||
|
||||
while (p) {
|
||||
next = p -> jsort;
|
||||
while(p) {
|
||||
next = p->jsort;
|
||||
free_jrec(p);
|
||||
p = next;
|
||||
}
|
||||
}
|
||||
|
||||
void freework()
|
||||
{
|
||||
void freework() {
|
||||
free_clall(maxclptr);
|
||||
clt1st = maxclptr = NULL;
|
||||
|
||||
free_jall(maxjptr);
|
||||
jrt1st = maxjptr = NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
104
mk2claus.c
104
mk2claus.c
|
|
@ -27,69 +27,60 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mk2claus.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:00 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_right.h"
|
||||
|
||||
int terminate(), priority();
|
||||
void mkjiritu(), mkbunsetu(), wakachi(), pritiny();
|
||||
void free_clall(), free_jall();
|
||||
int terminate(), priority();
|
||||
void mkjiritsu(), mkbunsetsu(), wakachi(), pritiny();
|
||||
void free_clall(), free_jall();
|
||||
|
||||
static int set2nd(clrec)
|
||||
CLREC *clrec;
|
||||
static int set2nd(clrec)
|
||||
CLREC* clrec;
|
||||
{
|
||||
|
||||
CLREC *rec2;
|
||||
CLREC* rec2;
|
||||
|
||||
mkjiritu(DO_IKKATU | DO_CLSTUDY);
|
||||
mkjiritsu(DO_IKKATU | DO_CLSTUDY);
|
||||
|
||||
mkbunsetu();
|
||||
mkbunsetsu();
|
||||
|
||||
if (!maxclptr) {
|
||||
if(!maxclptr) {
|
||||
wakachi();
|
||||
return clrec -> cllen;
|
||||
return clrec->cllen;
|
||||
}
|
||||
|
||||
for (rec2 = maxclptr ; rec2 ; rec2 = rec2 -> clsort) {
|
||||
if (terminate(rec2->right, cnvstart+rec2->cllen) != SHU)
|
||||
for(rec2 = maxclptr; rec2; rec2 = rec2->clsort) {
|
||||
if(terminate(rec2->right, cnvstart + rec2->cllen) != SHU)
|
||||
break;
|
||||
}
|
||||
|
||||
return rec2 ? (clrec -> cllen + rec2 -> cllen) : (clrec -> cllen);
|
||||
return rec2 ? (clrec->cllen + rec2->cllen) : (clrec->cllen);
|
||||
}
|
||||
|
||||
void mk2claus()
|
||||
{
|
||||
unsigned char *keepptr;
|
||||
int keeplen;
|
||||
CLREC *clrec;
|
||||
int len;
|
||||
int save2ln;
|
||||
int prty;
|
||||
int maxprty;
|
||||
int count;
|
||||
int prty2;
|
||||
void mk2claus() {
|
||||
unsigned char* keepptr;
|
||||
int keeplen;
|
||||
CLREC* clrec;
|
||||
int len;
|
||||
int save2ln;
|
||||
int prty;
|
||||
int maxprty;
|
||||
int count;
|
||||
int prty2;
|
||||
|
||||
prty = maxprty = prty2 = 0;
|
||||
|
||||
clt2nd = maxclptr = NULL;
|
||||
jrt2nd = maxjptr = NULL;
|
||||
jrt2nd = maxjptr = NULL;
|
||||
|
||||
selcl = clt1st;
|
||||
|
||||
if (selcl -> right == R_FZKKGU) {
|
||||
if(selcl->right == R_FZKKGU) {
|
||||
pritiny();
|
||||
return;
|
||||
}
|
||||
|
||||
if (cnvlen == selcl -> cllen) {
|
||||
if(cnvlen == selcl->cllen) {
|
||||
pritiny();
|
||||
return;
|
||||
}
|
||||
|
|
@ -98,13 +89,13 @@ void mk2claus()
|
|||
keeplen = cnvlen;
|
||||
|
||||
len = count = 0;
|
||||
for (clrec = selcl ; clrec && count < 5 ; clrec = clrec -> clsort) {
|
||||
for(clrec = selcl; clrec && count < 5; clrec = clrec->clsort) {
|
||||
|
||||
cnvstart = keepptr + clrec -> cllen;
|
||||
cnvlen = keeplen - clrec -> cllen;
|
||||
cnvstart = keepptr + clrec->cllen;
|
||||
cnvlen = keeplen - clrec->cllen;
|
||||
|
||||
if (len != clrec -> cllen) {
|
||||
if (clt2nd != maxclptr) {
|
||||
if(len != clrec->cllen) {
|
||||
if(clt2nd != maxclptr) {
|
||||
free_clall(maxclptr);
|
||||
free_jall(maxjptr);
|
||||
}
|
||||
|
|
@ -112,37 +103,37 @@ void mk2claus()
|
|||
save2ln = set2nd(clrec);
|
||||
|
||||
count++;
|
||||
len = clrec -> cllen;
|
||||
len = clrec->cllen;
|
||||
prty2 = 0;
|
||||
}
|
||||
|
||||
if (Termtbl[clrec -> right] & T_SHUUJO)
|
||||
clrec -> cl2len = (unsigned char)len;
|
||||
if(Termtbl[clrec->right] & T_SHUUJO)
|
||||
clrec->cl2len = (unsigned char)len;
|
||||
else
|
||||
clrec -> cl2len = (unsigned char)save2ln;
|
||||
clrec->cl2len = (unsigned char)save2ln;
|
||||
|
||||
if (selcl -> cl2len > clrec -> cl2len) continue;
|
||||
if(selcl->cl2len > clrec->cl2len) continue;
|
||||
|
||||
prty = priority(clrec) - prty2;
|
||||
|
||||
prty2++;
|
||||
|
||||
if (selcl -> cl2len == clrec -> cl2len) {
|
||||
if (clrec -> cllen == nextcllen) {
|
||||
if (selcl -> cllen != nextcllen)
|
||||
if(selcl->cl2len == clrec->cl2len) {
|
||||
if(clrec->cllen == nextcllen) {
|
||||
if(selcl->cllen != nextcllen)
|
||||
;
|
||||
else if (prty <= maxprty)
|
||||
else if(prty <= maxprty)
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (prty <= maxprty)
|
||||
else if(prty <= maxprty)
|
||||
continue;
|
||||
}
|
||||
|
||||
selcl = clrec;
|
||||
selcl = clrec;
|
||||
maxprty = prty;
|
||||
|
||||
if (clt2nd == maxclptr) continue;
|
||||
if(clt2nd == maxclptr) continue;
|
||||
|
||||
free_clall(clt2nd);
|
||||
free_jall(jrt2nd);
|
||||
|
|
@ -150,14 +141,13 @@ void mk2claus()
|
|||
clt2nd = maxclptr;
|
||||
}
|
||||
|
||||
if (clt2nd != maxclptr) {
|
||||
if(clt2nd != maxclptr) {
|
||||
free_clall(maxclptr);
|
||||
maxclptr = NULL;
|
||||
maxclptr = NULL;
|
||||
free_jall(maxjptr);
|
||||
maxjptr = NULL;
|
||||
maxjptr = NULL;
|
||||
}
|
||||
|
||||
cnvstart = keepptr;
|
||||
cnvlen = keeplen;
|
||||
cnvlen = keeplen;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,35 +27,24 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mkbunset.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:02 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_hinsi.h"
|
||||
#include "sj_hinshi.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int terminate();
|
||||
void setclrec(), srchfzk();
|
||||
int terminate();
|
||||
void setclrec(), srchfzk();
|
||||
|
||||
void
|
||||
mkbunsetu(void)
|
||||
{
|
||||
JREC *jrec;
|
||||
TypeGram hinsi;
|
||||
unsigned char *cnj;
|
||||
CREC crec[4];
|
||||
int count;
|
||||
TypeCnct right;
|
||||
unsigned char *next;
|
||||
int i;
|
||||
void mkbunsetsu(void) {
|
||||
JREC* jrec;
|
||||
TypeGram hinshi;
|
||||
unsigned char* cnj;
|
||||
CREC crec[4];
|
||||
int count;
|
||||
TypeCnct right;
|
||||
unsigned char* next;
|
||||
int i;
|
||||
|
||||
fzkcount = 0;
|
||||
|
||||
|
|
@ -63,18 +52,18 @@ mkbunsetu(void)
|
|||
|
||||
jrec = maxjptr;
|
||||
|
||||
while (jrec) {
|
||||
while(jrec) {
|
||||
|
||||
if (jrec -> stbofs && (cnj = getstb(jrec -> hinsi)))
|
||||
hinsi = StbHinsi(cnj + jrec -> stbofs - 1);
|
||||
if(jrec->stbofs && (cnj = getstb(jrec->hinshi)))
|
||||
hinshi = StbHinshi(cnj + jrec->stbofs - 1);
|
||||
else
|
||||
hinsi = jrec -> hinsi;
|
||||
hinshi = jrec->hinshi;
|
||||
|
||||
if ((right = Connadr[hinsi]) != '\0') {
|
||||
if((right = Connadr[hinshi]) != '\0') {
|
||||
gobilen = 0;
|
||||
next = cnvstart + jrec->jlen;
|
||||
next = cnvstart + jrec->jlen;
|
||||
|
||||
if (terminate(right, next)) {
|
||||
if(terminate(right, next)) {
|
||||
fzk_ka_flg = 0;
|
||||
setclrec(jrec, next, right);
|
||||
}
|
||||
|
|
@ -82,15 +71,15 @@ mkbunsetu(void)
|
|||
srchfzk(jrec, next, right, 0);
|
||||
}
|
||||
|
||||
else if ((count = setconj(hinsi, jrec, crec)) != 0) {
|
||||
else if((count = setconj(hinshi, jrec, crec)) != 0) {
|
||||
|
||||
for (i = count ; i-- > 0 ; ) {
|
||||
for(i = count; i-- > 0;) {
|
||||
|
||||
right = crec[i].right;
|
||||
right = crec[i].right;
|
||||
gobilen = crec[i].len;
|
||||
next = cnvstart + jrec->jlen + gobilen;
|
||||
next = cnvstart + jrec->jlen + gobilen;
|
||||
|
||||
if (terminate(right, next)) {
|
||||
if(terminate(right, next)) {
|
||||
fzk_ka_flg = 0;
|
||||
setclrec(jrec, next, right);
|
||||
}
|
||||
|
|
@ -99,70 +88,66 @@ mkbunsetu(void)
|
|||
}
|
||||
}
|
||||
|
||||
jrec = jrec -> jsort;
|
||||
jrec = jrec->jsort;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CLREC*
|
||||
argclrec(int len)
|
||||
{
|
||||
CLREC *ptr;
|
||||
CLREC *rec;
|
||||
CLREC *child;
|
||||
argclrec(int len) {
|
||||
CLREC* ptr;
|
||||
CLREC* rec;
|
||||
CLREC* child;
|
||||
|
||||
rec = alloc_clrec();
|
||||
|
||||
if (!rec) {
|
||||
if (maxclptr == NULL) return NULL;
|
||||
if(!rec) {
|
||||
if(maxclptr == NULL) return NULL;
|
||||
|
||||
ptr = NULL;
|
||||
rec = maxclptr;
|
||||
while ((child = rec -> clsort) != NULL) {
|
||||
while((child = rec->clsort) != NULL) {
|
||||
ptr = rec;
|
||||
rec = child;
|
||||
}
|
||||
|
||||
if (len <= (int) rec -> cllen) return NULL;
|
||||
if(len <= (int)rec->cllen) return NULL;
|
||||
|
||||
if (ptr)
|
||||
ptr -> clsort = NULL;
|
||||
if(ptr)
|
||||
ptr->clsort = NULL;
|
||||
else
|
||||
maxclptr = NULL;
|
||||
if (rec -> jnode) (rec -> jnode)--;
|
||||
if(rec->jnode) (rec->jnode)--;
|
||||
}
|
||||
|
||||
memset((unsigned char*)rec, 0, sizeof(*rec));
|
||||
rec -> cllen = rec -> cl2len = (unsigned char)len;
|
||||
rec->cllen = rec->cl2len = (unsigned char)len;
|
||||
|
||||
if (!maxclptr) {
|
||||
if(!maxclptr) {
|
||||
maxclptr = rec;
|
||||
return rec;
|
||||
}
|
||||
|
||||
ptr = maxclptr;
|
||||
|
||||
if (((int)ptr -> cllen < len) ||
|
||||
(((int)ptr -> cllen == len) &&
|
||||
(ptr -> jnode -> hinsi == TANKANJI))) {
|
||||
rec -> clsort = maxclptr;
|
||||
maxclptr = rec;
|
||||
if(((int)ptr->cllen < len) ||
|
||||
(((int)ptr->cllen == len) &&
|
||||
(ptr->jnode->hinshi == TANKANJI))) {
|
||||
rec->clsort = maxclptr;
|
||||
maxclptr = rec;
|
||||
return rec;
|
||||
}
|
||||
|
||||
while ((child = ptr -> clsort) != NULL) {
|
||||
if ((int)child -> cllen < len ||
|
||||
((int)child -> cllen == len &&
|
||||
child->jnode->hinsi == TANKANJI)){
|
||||
ptr -> clsort = rec;
|
||||
rec -> clsort = child;
|
||||
while((child = ptr->clsort) != NULL) {
|
||||
if((int)child->cllen < len ||
|
||||
((int)child->cllen == len &&
|
||||
child->jnode->hinshi == TANKANJI)) {
|
||||
ptr->clsort = rec;
|
||||
rec->clsort = child;
|
||||
return rec;
|
||||
}
|
||||
else
|
||||
} else
|
||||
ptr = child;
|
||||
}
|
||||
|
||||
ptr -> clsort = rec;
|
||||
ptr->clsort = rec;
|
||||
return rec;
|
||||
}
|
||||
|
||||
|
|
@ -27,32 +27,21 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mkjiritu.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:03 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int srchhead();
|
||||
int srchhead();
|
||||
|
||||
static void dic_mu(int mode);
|
||||
static void dic_cl(void);
|
||||
|
||||
void
|
||||
mkjiritu(int mode)
|
||||
{
|
||||
unsigned char chkind1;
|
||||
unsigned char chkind2;
|
||||
JREC *jrec;
|
||||
unsigned char *stb;
|
||||
void mkjiritsu(int mode) {
|
||||
unsigned char chkind1;
|
||||
unsigned char chkind2;
|
||||
JREC* jrec;
|
||||
unsigned char* stb;
|
||||
|
||||
headcode = headlen = 0;
|
||||
|
||||
|
|
@ -60,25 +49,25 @@ mkjiritu(int mode)
|
|||
|
||||
chkind1 = Chrtbl[*cnvstart];
|
||||
|
||||
if (chkind1 & DICTOP) {
|
||||
if(chkind1 & DICTOP) {
|
||||
dic_mu(mode);
|
||||
}
|
||||
|
||||
if (mode & DO_CLSTUDY) dic_cl();
|
||||
if(mode & DO_CLSTUDY) dic_cl();
|
||||
|
||||
srchnum();
|
||||
|
||||
if (srchhead() && cnvlen != headlen) {
|
||||
if(srchhead() && cnvlen != headlen) {
|
||||
cnvstart += headlen;
|
||||
cnvlen -= headlen;
|
||||
|
||||
chkind2 = Chrtbl[*cnvstart];
|
||||
|
||||
if (chkind2 & DICTOP) {
|
||||
if(chkind2 & DICTOP) {
|
||||
dic_mu(mode);
|
||||
}
|
||||
|
||||
if (headcode == SETTOU_DAI) {
|
||||
if(headcode == SETTOU_DAI) {
|
||||
srchnum();
|
||||
}
|
||||
|
||||
|
|
@ -86,111 +75,106 @@ mkjiritu(int mode)
|
|||
cnvlen += headlen;
|
||||
}
|
||||
|
||||
for (jrec = maxjptr ; jrec ; jrec = jrec -> jsort) {
|
||||
if ((stb = getstb(jrec -> hinsi)) != NULL)
|
||||
setubi(jrec, stb);
|
||||
for(jrec = maxjptr; jrec; jrec = jrec->jsort) {
|
||||
if((stb = getstb(jrec->hinshi)) != NULL)
|
||||
setsubi(jrec, stb);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dic_mu(int mode)
|
||||
{
|
||||
unsigned char *tagp;
|
||||
DICTL *dp;
|
||||
dic_mu(int mode) {
|
||||
unsigned char* tagp;
|
||||
DICTL* dp;
|
||||
|
||||
for (dp = dictlist ; dp ; dp = dp -> next) {
|
||||
curdict = dp -> dict;
|
||||
dicinl = 1;
|
||||
for(dp = dictlist; dp; dp = dp->next) {
|
||||
curdict = dp->dict;
|
||||
dicinl = 1;
|
||||
dicsaml = 0;
|
||||
prevseg = -1;
|
||||
|
||||
while ((tagp = srchdict(tagp)) != NULL) setjrec(tagp, mode);
|
||||
while((tagp = srchdict(tagp)) != NULL) setjrec(tagp, mode);
|
||||
}
|
||||
}
|
||||
|
||||
JREC*
|
||||
argjrec(int len, JREC* rec)
|
||||
{
|
||||
JREC *ptr;
|
||||
JREC *jrec;
|
||||
JREC *child;
|
||||
JREC* argjrec(int len, JREC* rec) {
|
||||
JREC* ptr;
|
||||
JREC* jrec;
|
||||
JREC* child;
|
||||
|
||||
jrec = alloc_jrec();
|
||||
|
||||
if (!jrec) {
|
||||
if (!maxjptr) return NULL;
|
||||
if(!jrec) {
|
||||
if(!maxjptr) return NULL;
|
||||
|
||||
ptr = NULL;
|
||||
ptr = NULL;
|
||||
jrec = maxjptr;
|
||||
while ((child = jrec -> jsort) != NULL) {
|
||||
while((child = jrec->jsort) != NULL) {
|
||||
ptr = jrec;
|
||||
jrec = child;
|
||||
}
|
||||
|
||||
if (len <= (int) jrec -> jlen) return NULL;
|
||||
if(len <= (int)jrec->jlen) return NULL;
|
||||
|
||||
if (ptr)
|
||||
ptr -> jsort = NULL;
|
||||
if(ptr)
|
||||
ptr->jsort = NULL;
|
||||
else
|
||||
maxjptr = NULL;
|
||||
}
|
||||
|
||||
if (rec)
|
||||
if(rec)
|
||||
memcpy((unsigned char*)rec, (unsigned char*)jrec, sizeof(JREC));
|
||||
else
|
||||
memset((unsigned char*)jrec, 0, sizeof(*jrec));
|
||||
jrec -> jlen = (unsigned char)len;
|
||||
jrec->jlen = (unsigned char)len;
|
||||
|
||||
if (!maxjptr) {
|
||||
maxjptr = jrec;
|
||||
jrec -> jsort = NULL;
|
||||
if(!maxjptr) {
|
||||
maxjptr = jrec;
|
||||
jrec->jsort = NULL;
|
||||
return jrec;
|
||||
}
|
||||
|
||||
ptr = maxjptr;
|
||||
|
||||
if ((int)ptr -> jlen < len) {
|
||||
jrec -> jsort = maxjptr;
|
||||
maxjptr = jrec;
|
||||
if((int)ptr->jlen < len) {
|
||||
jrec->jsort = maxjptr;
|
||||
maxjptr = jrec;
|
||||
return jrec;
|
||||
}
|
||||
|
||||
while ((child = ptr -> jsort) != NULL) {
|
||||
if ((int)child -> jlen < len) break;
|
||||
while((child = ptr->jsort) != NULL) {
|
||||
if((int)child->jlen < len) break;
|
||||
|
||||
ptr = child;
|
||||
}
|
||||
|
||||
ptr -> jsort = jrec;
|
||||
jrec -> jsort = child;
|
||||
ptr->jsort = jrec;
|
||||
jrec->jsort = child;
|
||||
return jrec;
|
||||
}
|
||||
|
||||
static void
|
||||
dic_cl(void)
|
||||
{
|
||||
unsigned char *p;
|
||||
unsigned short pos;
|
||||
int len;
|
||||
int cmp;
|
||||
dic_cl(void) {
|
||||
unsigned char* p;
|
||||
unsigned short pos;
|
||||
int len;
|
||||
int cmp;
|
||||
|
||||
if (!StudyExist()) return;
|
||||
if(!StudyExist()) return;
|
||||
|
||||
if ((pos = ClStudyIdx[(short) *cnvstart / ClStudyStep]) != (unsigned short)-1) {
|
||||
if((pos = ClStudyIdx[(short)*cnvstart / ClStudyStep]) != (unsigned short)-1) {
|
||||
|
||||
for (p = ClStudyDict + pos ; !iseocl(p) ; p = ClNextTag(p)) {
|
||||
for(p = ClStudyDict + pos; !iseocl(p); p = ClNextTag(p)) {
|
||||
cmp = strncmp(cnvstart, (unsigned char*)ClYomiPos(p),
|
||||
len = ClYomiLen(p));
|
||||
len = ClYomiLen(p));
|
||||
|
||||
if (cmp == MATCH) {
|
||||
if (!isdpnd(*(cnvstart + len))) {
|
||||
if(cmp == MATCH) {
|
||||
if(!isdpnd(*(cnvstart + len))) {
|
||||
setcrec(p);
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmp == OVER)
|
||||
else if(cmp == OVER)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
367
mkkouho.c
367
mkkouho.c
|
|
@ -27,61 +27,42 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mkkouho.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:04 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_euc.h"
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_hinsi.h"
|
||||
#include "sj_hinshi.h"
|
||||
#include "sj_suuji.h"
|
||||
#include "sj_dict.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
static void getkhtbl(CLREC* clrec);
|
||||
static void cl_kanji(JREC* jrec, CLREC* clrec);
|
||||
static void getkhtbl(CLREC* clrec);
|
||||
static void cl_kanji(JREC* jrec, CLREC* clrec);
|
||||
static unsigned char* makekan(unsigned char* s, unsigned char* d, int flg);
|
||||
static int diffknj(JREC* jrec, unsigned char* ptr, int num);
|
||||
static void cl_numcmn(JREC* jrec, CLREC* clrec);
|
||||
|
||||
|
||||
void
|
||||
mkkouho(void)
|
||||
{
|
||||
CLREC *clrec;
|
||||
int keeplen;
|
||||
static int diffknj(JREC* jrec, unsigned char* ptr, int num);
|
||||
static void cl_numcmn(JREC* jrec, CLREC* clrec);
|
||||
|
||||
void mkkouho(void) {
|
||||
CLREC* clrec;
|
||||
int keeplen;
|
||||
|
||||
khcount = nkhcount = 0;
|
||||
|
||||
|
||||
keeplen = clt1st -> cllen;
|
||||
|
||||
keeplen = clt1st->cllen;
|
||||
|
||||
clrec = clt1st;
|
||||
|
||||
|
||||
do {
|
||||
getkhtbl(clrec);
|
||||
clrec = clrec -> clsort;
|
||||
} while (clrec && (keeplen == clrec -> cllen));
|
||||
clrec = clrec->clsort;
|
||||
} while(clrec && (keeplen == clrec->cllen));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
getkhtbl(CLREC* clrec)
|
||||
{
|
||||
JREC *jrec;
|
||||
getkhtbl(CLREC* clrec) {
|
||||
JREC* jrec;
|
||||
|
||||
jrec = clrec -> jnode;
|
||||
jrec = clrec->jnode;
|
||||
|
||||
switch (jrec -> class) {
|
||||
switch(jrec->class) {
|
||||
case C_DICT:
|
||||
cl_kanji(jrec, clrec);
|
||||
break;
|
||||
|
|
@ -99,7 +80,7 @@ getkhtbl(CLREC* clrec)
|
|||
cl_numcmn(jrec, clrec);
|
||||
break;
|
||||
|
||||
case C_BUNSETU:
|
||||
case C_BUNSETSU:
|
||||
|
||||
break;
|
||||
|
||||
|
|
@ -110,166 +91,156 @@ getkhtbl(CLREC* clrec)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
cl_kanji(JREC* jrec, CLREC* clrec)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
int kcount = khcount;
|
||||
cl_kanji(JREC* jrec, CLREC* clrec) {
|
||||
unsigned char* ptr;
|
||||
int kcount = khcount;
|
||||
|
||||
|
||||
if (seldict(jrec -> dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec -> jseg);
|
||||
if(seldict(jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
ptr = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
get_askknj();
|
||||
|
||||
while(*ptr != HinshiBlkTerm) {
|
||||
|
||||
while (*ptr != HinsiBlkTerm) {
|
||||
|
||||
|
||||
if (diffknj(jrec, ptr, kcount)) {
|
||||
if(diffknj(jrec, ptr, kcount)) {
|
||||
|
||||
setkouho(clrec, (TypeDicOfs)(ptr - dicbuf), 0);
|
||||
}
|
||||
|
||||
|
||||
ptr = skipkstr(ptr);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
|
||||
setkouho(clrec, (TypeDicOfs)1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_none(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan_none(unsigned char* s, unsigned char* d, int flg) {
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_1byte(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
if ((*s & KanjiModeMask) == ZenHiraAssyuku)
|
||||
*d++ = 0x10 | (*s & KnjAssyukuMask);
|
||||
makekan_1byte(unsigned char* s, unsigned char* d, int flg) {
|
||||
if((*s & KanjiModeMask) == ZenHiraAsshuku)
|
||||
*d++ = 0x10 | (*s & KnjAsshukuMask);
|
||||
else
|
||||
*d++ = 0x90 | (*s & KnjAssyukuMask);
|
||||
*d++ = 0x90 | (*s & KnjAsshukuMask);
|
||||
|
||||
if (flg) *d++ = KanjiStrEnd;
|
||||
if(flg) *d++ = KanjiStrEnd;
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_knj(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan_knj(unsigned char* s, unsigned char* d, int flg) {
|
||||
|
||||
return makekan(askknj[*s & KnjAssyukuMask], d, flg);
|
||||
return makekan(askknj[*s & KnjAsshukuMask], d, flg);
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_ofs(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan_ofs(unsigned char* s, unsigned char* d, int flg) {
|
||||
|
||||
return makekan(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1),
|
||||
d, flg);
|
||||
return makekan(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1),
|
||||
d, flg);
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_norm(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan_norm(unsigned char* s, unsigned char* d, int flg) {
|
||||
unsigned char c;
|
||||
|
||||
if (*s != 0) {
|
||||
if(*s != 0) {
|
||||
c = s[1];
|
||||
if (c & 0x80)
|
||||
*d++ = SS3;
|
||||
if(c & 0x80)
|
||||
*d++ = SS3;
|
||||
*d++ = *s | 0x80;
|
||||
*d++ = c | 0x80;
|
||||
*d++ = c | 0x80;
|
||||
} else {
|
||||
*d++ = *s;
|
||||
}
|
||||
if (flg) *d++ = KanjiStrEnd;
|
||||
if(flg) *d++ = KanjiStrEnd;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
unsigned char*
|
||||
makekan_ascii(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan_ascii(unsigned char* s, unsigned char* d, int flg) {
|
||||
unsigned char c;
|
||||
|
||||
c = s[1];
|
||||
if (c & 0x80)
|
||||
*d++ = SS2;
|
||||
if(c & 0x80)
|
||||
*d++ = SS2;
|
||||
*d++ = c;
|
||||
|
||||
if (flg) *d++ = KanjiStrEnd;
|
||||
if(flg) *d++ = KanjiStrEnd;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
static unsigned char*
|
||||
makekan(unsigned char* s, unsigned char* d, int flg)
|
||||
{
|
||||
makekan(unsigned char* s, unsigned char* d, int flg) {
|
||||
int csize;
|
||||
|
||||
for ( ; ; ) {
|
||||
for(;;) {
|
||||
csize = codesize(*s);
|
||||
if (s[csize] == KanjiStrEnd) {
|
||||
if(s[csize] == KanjiStrEnd) {
|
||||
switch(*s & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
d = makekan_1byte(s, d, flg); break;
|
||||
case ZenHiraAsshuku:
|
||||
d = makekan_1byte(s, d, flg);
|
||||
break;
|
||||
|
||||
case ZenKataAssyuku:
|
||||
d = makekan_1byte(s, d, flg); break;
|
||||
case ZenKataAsshuku:
|
||||
d = makekan_1byte(s, d, flg);
|
||||
break;
|
||||
|
||||
case OffsetAssyuku:
|
||||
d = makekan_ofs(s, d, flg); break;
|
||||
case OffsetAsshuku:
|
||||
d = makekan_ofs(s, d, flg);
|
||||
break;
|
||||
|
||||
case AiAttribute:
|
||||
d = makekan_none(s, d, flg); break;
|
||||
case AiAttribute:
|
||||
d = makekan_none(s, d, flg);
|
||||
break;
|
||||
|
||||
case LeadingHankaku:
|
||||
d = makekan_ascii(s, d, flg); break;
|
||||
case LeadingHankaku:
|
||||
d = makekan_ascii(s, d, flg);
|
||||
break;
|
||||
|
||||
case KanjiAssyuku:
|
||||
d = makekan_knj(s, d, flg); break;
|
||||
case KanjiAsshuku:
|
||||
d = makekan_knj(s, d, flg);
|
||||
break;
|
||||
|
||||
default:
|
||||
default:
|
||||
d = makekan_norm(s, d, flg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
} else
|
||||
switch(*s & KanjiModeMask) {
|
||||
case ZenHiraAssyuku:
|
||||
d = makekan_1byte(s, d, FALSE); break;
|
||||
case ZenHiraAsshuku:
|
||||
d = makekan_1byte(s, d, FALSE);
|
||||
break;
|
||||
|
||||
case ZenKataAssyuku:
|
||||
d = makekan_1byte(s, d, FALSE); break;
|
||||
case ZenKataAsshuku:
|
||||
d = makekan_1byte(s, d, FALSE);
|
||||
break;
|
||||
|
||||
case OffsetAssyuku:
|
||||
d = makekan_ofs(s, d, FALSE); break;
|
||||
case OffsetAsshuku:
|
||||
d = makekan_ofs(s, d, FALSE);
|
||||
break;
|
||||
|
||||
case AiAttribute:
|
||||
d = makekan_none(s, d, FALSE); break;
|
||||
case AiAttribute:
|
||||
d = makekan_none(s, d, FALSE);
|
||||
break;
|
||||
|
||||
case LeadingHankaku:
|
||||
d = makekan_ascii(s, d, FALSE); break;
|
||||
case LeadingHankaku:
|
||||
d = makekan_ascii(s, d, FALSE);
|
||||
break;
|
||||
|
||||
case KanjiAssyuku:
|
||||
d = makekan_knj(s, d, FALSE); break;
|
||||
case KanjiAsshuku:
|
||||
d = makekan_knj(s, d, FALSE);
|
||||
break;
|
||||
|
||||
default:
|
||||
default:
|
||||
d = makekan_norm(s, d, FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -279,133 +250,124 @@ makekan(unsigned char* s, unsigned char* d, int flg)
|
|||
return d;
|
||||
}
|
||||
|
||||
|
||||
#define PEND 2
|
||||
#define QEND 1
|
||||
#define PEND 2
|
||||
#define QEND 1
|
||||
static int
|
||||
sameknj(unsigned char* p, int plen, unsigned char* q, int qlen)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int endf = 0;
|
||||
int brkf;
|
||||
sameknj(unsigned char* p, int plen, unsigned char* q, int qlen) {
|
||||
int i;
|
||||
int j;
|
||||
int endf = 0;
|
||||
int brkf;
|
||||
|
||||
do {
|
||||
if ((i = euc_codesize(*p)) != euc_codesize(*q)) return FALSE;
|
||||
if((i = euc_codesize(*p)) != euc_codesize(*q)) return FALSE;
|
||||
|
||||
brkf = 0;
|
||||
for (j = 0; j < i; j++) {
|
||||
if (p[j] != q[j] ) {
|
||||
for(j = 0; j < i; j++) {
|
||||
if(p[j] != q[j]) {
|
||||
brkf = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (brkf) break;
|
||||
if(brkf) break;
|
||||
|
||||
if (p[i] == KanjiStrEnd) endf += PEND;
|
||||
if (q[i] == KanjiStrEnd) endf += QEND;
|
||||
if(p[i] == KanjiStrEnd) endf += PEND;
|
||||
if(q[i] == KanjiStrEnd) endf += QEND;
|
||||
|
||||
p += i;
|
||||
q += i;
|
||||
} while (!endf);
|
||||
} while(!endf);
|
||||
|
||||
switch (endf) {
|
||||
case (PEND | QEND):
|
||||
if (plen == qlen) return TRUE;
|
||||
switch(endf) {
|
||||
case(PEND | QEND):
|
||||
if(plen == qlen) return TRUE;
|
||||
break;
|
||||
|
||||
case PEND:
|
||||
i = plen;
|
||||
i = plen;
|
||||
plen = qlen;
|
||||
qlen = i;
|
||||
p = q;
|
||||
p = q;
|
||||
|
||||
case QEND:
|
||||
if (p[euc_codesize(*p)] != KanjiStrEnd) break;
|
||||
if ((*p & KanjiModeMask) != 0x10 ) break;
|
||||
if (qlen != plen - (*p & KanjiCodeMask) - 1) break;
|
||||
if(p[euc_codesize(*p)] != KanjiStrEnd) break;
|
||||
if((*p & KanjiModeMask) != 0x10) break;
|
||||
if(qlen != plen - (*p & KanjiCodeMask) - 1) break;
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
if (q[euc_codesize(*q)] != KanjiStrEnd) break;
|
||||
if (p[euc_codesize(*p)] != KanjiStrEnd) break;
|
||||
if ((*q & KanjiModeMask) != 0x10 ) break;
|
||||
if ((*p & KanjiModeMask) != 0x10 ) break;
|
||||
if (plen - (*p & KanjiCodeMask) != qlen - (*q & KanjiCodeMask))
|
||||
if(q[euc_codesize(*q)] != KanjiStrEnd) break;
|
||||
if(p[euc_codesize(*p)] != KanjiStrEnd) break;
|
||||
if((*q & KanjiModeMask) != 0x10) break;
|
||||
if((*p & KanjiModeMask) != 0x10) break;
|
||||
if(plen - (*p & KanjiCodeMask) != qlen - (*q & KanjiCodeMask))
|
||||
break;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#undef PEND
|
||||
#undef QEND
|
||||
|
||||
#undef PEND
|
||||
#undef QEND
|
||||
|
||||
static int
|
||||
diffknj(JREC* jrec, unsigned char* ptr, int num)
|
||||
{
|
||||
KHREC *kptr;
|
||||
JREC *jptr;
|
||||
int i;
|
||||
unsigned char kbuf1[MaxWdKanjiLen];
|
||||
unsigned char kbuf2[MaxWdKanjiLen];
|
||||
diffknj(JREC* jrec, unsigned char* ptr, int num) {
|
||||
KHREC* kptr;
|
||||
JREC* jptr;
|
||||
int i;
|
||||
unsigned char kbuf1[MaxWdKanjiLen];
|
||||
unsigned char kbuf2[MaxWdKanjiLen];
|
||||
|
||||
if (jrec -> hinsi == TANKANJI) return TRUE;
|
||||
if(jrec->hinshi == TANKANJI) return TRUE;
|
||||
|
||||
makekan(ptr, kbuf1, TRUE);
|
||||
|
||||
for (i = 0, kptr = kouhotbl ; i < num ; i++, kptr++) {
|
||||
if ((jptr = kptr -> clrec -> jnode) == jrec)
|
||||
for(i = 0, kptr = kouhotbl; i < num; i++, kptr++) {
|
||||
if((jptr = kptr->clrec->jnode) == jrec)
|
||||
return FALSE;
|
||||
|
||||
if (jptr -> hinsi == TANKANJI) continue;
|
||||
if(jptr->hinshi == TANKANJI) continue;
|
||||
|
||||
if (jptr -> class != jrec -> class) continue;
|
||||
if(jptr->class != jrec->class) continue;
|
||||
|
||||
if (jptr -> dicid != jrec -> dicid) continue;
|
||||
if(jptr->dicid != jrec->dicid) continue;
|
||||
|
||||
if (jptr -> jseg != jrec -> jseg) continue;
|
||||
if(jptr->jseg != jrec->jseg) continue;
|
||||
|
||||
if (jptr -> sttofs != jrec -> sttofs) continue;
|
||||
if(jptr->sttofs != jrec->sttofs) continue;
|
||||
|
||||
if (jptr -> stbofs != jrec -> stbofs) continue;
|
||||
if(jptr->stbofs != jrec->stbofs) continue;
|
||||
|
||||
makekan(dicbuf + kptr -> offs, kbuf2, TRUE);
|
||||
makekan(dicbuf + kptr->offs, kbuf2, TRUE);
|
||||
|
||||
if (sameknj(kbuf1, jrec -> jlen, kbuf2, jptr -> jlen))
|
||||
if(sameknj(kbuf1, jrec->jlen, kbuf2, jptr->jlen))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
chrck_numtbl(unsigned short flg, unsigned short cond)
|
||||
{
|
||||
unsigned short must;
|
||||
chrck_numtbl(unsigned short flg, unsigned short cond) {
|
||||
unsigned short must;
|
||||
|
||||
if ((cond = SelNumCond(cond)) != 0) {
|
||||
if ((must = (cond & SelNumMust)) != 0) {
|
||||
if ((flg & must) != must) return FALSE;
|
||||
if((cond = SelNumCond(cond)) != 0) {
|
||||
if((must = (cond & SelNumMust)) != 0) {
|
||||
if((flg & must) != must) return FALSE;
|
||||
cond &= ~must;
|
||||
}
|
||||
if (cond && !(cond & flg)) return FALSE;
|
||||
if(cond && !(cond & flg)) return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
sel_sjmode(JREC* jrec)
|
||||
{
|
||||
int sel_sjmode(JREC* jrec) {
|
||||
unsigned short i;
|
||||
unsigned short *p;
|
||||
unsigned short *q;
|
||||
unsigned short* p;
|
||||
unsigned short* q;
|
||||
|
||||
switch (jrec -> class) {
|
||||
switch(jrec->class) {
|
||||
case C_N_ARABIA:
|
||||
case C_N_ARACMA:
|
||||
case C_N_KAZU:
|
||||
|
|
@ -423,55 +385,45 @@ sel_sjmode(JREC* jrec)
|
|||
return SelArb;
|
||||
}
|
||||
|
||||
while((i = *p++) != SelNumTerm) {
|
||||
|
||||
while ((i = *p++) != SelNumTerm) {
|
||||
|
||||
if (chrck_numtbl(jrec -> flags, i)) break;
|
||||
if(chrck_numtbl(jrec->flags, i)) break;
|
||||
}
|
||||
|
||||
if (i == SelNumTerm) i = *q;
|
||||
if(i == SelNumTerm) i = *q;
|
||||
|
||||
return SelNumFunc(i);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
cl_numcmn(JREC* jrec, CLREC* clrec)
|
||||
{
|
||||
unsigned char *p;
|
||||
int i;
|
||||
cl_numcmn(JREC* jrec, CLREC* clrec) {
|
||||
unsigned char* p;
|
||||
int i;
|
||||
unsigned short j;
|
||||
unsigned short *tbl;
|
||||
|
||||
unsigned short* tbl;
|
||||
|
||||
p = cnvstart;
|
||||
if ((i = jrec -> sttofs) == SETTOU_DAI)
|
||||
if((i = jrec->sttofs) == SETTOU_DAI)
|
||||
p += SttYomiLen(Settou_ptr(i));
|
||||
else if (i == SETTOU_KIGOU)
|
||||
else if(i == SETTOU_KIGOU)
|
||||
p++;
|
||||
|
||||
|
||||
if (jrec -> jofsst) {
|
||||
if(jrec->jofsst) {
|
||||
|
||||
i = sel_sjmode(jrec);
|
||||
|
||||
|
||||
if (seldict(jrec -> dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec -> jseg);
|
||||
|
||||
if(seldict(jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
|
||||
p = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
|
||||
while (*p != HinsiBlkTerm) {
|
||||
while(*p != HinshiBlkTerm) {
|
||||
|
||||
setkouho(clrec, (TypeDicOfs)(p - dicbuf), i);
|
||||
|
||||
|
||||
p = skipkstr(p);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
|
||||
setkouho(clrec, (TypeDicOfs)1, i);
|
||||
}
|
||||
|
|
@ -480,10 +432,9 @@ cl_numcmn(JREC* jrec, CLREC* clrec)
|
|||
else {
|
||||
|
||||
tbl = Selsjadrs(jrec->class - C_N_ARABIA);
|
||||
while ((j = *tbl++) != SelNumTerm) {
|
||||
|
||||
if (!chrck_numtbl(jrec -> flags, j)) continue;
|
||||
while((j = *tbl++) != SelNumTerm) {
|
||||
|
||||
if(!chrck_numtbl(jrec->flags, j)) continue;
|
||||
|
||||
setkouho(clrec, (TypeDicOfs)0, (int)SelNumFunc(j));
|
||||
}
|
||||
|
|
|
|||
320
mknumber.c
320
mknumber.c
|
|
@ -27,53 +27,41 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mknumber.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:05 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_yomi.h"
|
||||
#include "sj_suuji.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
|
||||
static int
|
||||
word2char(unsigned short wd, unsigned char* tbl, int keta, int flg)
|
||||
{
|
||||
int mask;
|
||||
int num;
|
||||
unsigned char* src;
|
||||
word2char(unsigned short wd, unsigned char* tbl, int keta, int flg) {
|
||||
int mask;
|
||||
int num;
|
||||
unsigned char* src;
|
||||
|
||||
for (mask = 0x1000 ; mask ; mask >>= 4) {
|
||||
for(mask = 0x1000; mask; mask >>= 4) {
|
||||
|
||||
switch (num = (unsigned int)wd / mask) {
|
||||
switch(num = (unsigned int)wd / mask) {
|
||||
case 0:
|
||||
|
||||
break;
|
||||
|
||||
case _Num0:
|
||||
|
||||
if (!flg) break;
|
||||
if(!flg) break;
|
||||
|
||||
default:
|
||||
src = tbl + (num - _Num0) * 2;
|
||||
src = tbl + (num - _Num0) * 2;
|
||||
*kanjitmp++ = *src++;
|
||||
*kanjitmp++ = *src;
|
||||
flg = TRUE;
|
||||
flg = TRUE;
|
||||
|
||||
if (keta && !(keta % 3)) {
|
||||
if(keta && !(keta % 3)) {
|
||||
*kanjitmp++ = CommaHigh;
|
||||
*kanjitmp++ = CommaLow;
|
||||
}
|
||||
}
|
||||
if (keta) keta--;
|
||||
|
||||
if(keta) keta--;
|
||||
|
||||
wd &= (mask - 1);
|
||||
}
|
||||
|
|
@ -81,190 +69,139 @@ word2char(unsigned short wd, unsigned char* tbl, int keta, int flg)
|
|||
return flg;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
words2num(unsigned short* wd, unsigned char* tbl, int flgc)
|
||||
{
|
||||
int i;
|
||||
int keta;
|
||||
int flg;
|
||||
unsigned char *kp = kanjitmp;
|
||||
words2num(unsigned short* wd, unsigned char* tbl, int flgc) {
|
||||
int i;
|
||||
int keta;
|
||||
int flg;
|
||||
unsigned char* kp = kanjitmp;
|
||||
|
||||
if (flgc) {
|
||||
if(flgc) {
|
||||
keta = NumKetaLength - 1;
|
||||
flg = FALSE;
|
||||
}
|
||||
else {
|
||||
flg = FALSE;
|
||||
} else {
|
||||
keta = 0;
|
||||
flg = TRUE;
|
||||
flg = TRUE;
|
||||
}
|
||||
|
||||
for (i = NumWordBuf ; i-- > 0 ; ) {
|
||||
for(i = NumWordBuf; i-- > 0;) {
|
||||
flg = word2char(*(wd + i), tbl, keta, flg);
|
||||
if (keta) keta -= 4;
|
||||
if(keta) keta -= 4;
|
||||
}
|
||||
|
||||
|
||||
if (kp == kanjitmp) {
|
||||
if(kp == kanjitmp) {
|
||||
|
||||
*kanjitmp++ = *tbl++;
|
||||
*kanjitmp++ = *tbl;
|
||||
}
|
||||
}
|
||||
|
||||
void num_type00(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type00(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num1tbl, FALSE);
|
||||
}
|
||||
|
||||
void num_type01(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type01(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num1tbl, FALSE);
|
||||
}
|
||||
|
||||
void num_type02(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type02(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num1tbl, TRUE);
|
||||
}
|
||||
|
||||
void num_type03(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type03(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num2tbl, FALSE);
|
||||
}
|
||||
|
||||
void num_type04(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type04(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num2tbl, FALSE);
|
||||
}
|
||||
|
||||
void num_type05(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type05(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num2tbl, TRUE);
|
||||
}
|
||||
|
||||
void num_type06(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type06(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num3tbl, FALSE);
|
||||
}
|
||||
|
||||
void num_type07(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type07(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
words2num(num, Num3tbl, FALSE);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
kan_num(unsigned short* wd, unsigned char* tbl1, unsigned char* tbl2)
|
||||
{
|
||||
int ii;
|
||||
unsigned short tmp;
|
||||
int mask;
|
||||
int num;
|
||||
int flg;
|
||||
unsigned char* kurai1;
|
||||
unsigned char* kurai2;
|
||||
unsigned char* src;
|
||||
unsigned char* keep = kanjitmp;
|
||||
|
||||
kan_num(unsigned short* wd, unsigned char* tbl1, unsigned char* tbl2) {
|
||||
int ii;
|
||||
unsigned short tmp;
|
||||
int mask;
|
||||
int num;
|
||||
int flg;
|
||||
unsigned char* kurai1;
|
||||
unsigned char* kurai2;
|
||||
unsigned char* src;
|
||||
unsigned char* keep = kanjitmp;
|
||||
|
||||
kurai2 = Num6tbl - 2;
|
||||
mask = 0;
|
||||
mask = 0;
|
||||
wd += NumWordBuf - 1;
|
||||
flg = FALSE;
|
||||
|
||||
for(ii = NumKetaLength; ii-- > 0;) {
|
||||
|
||||
for (ii = NumKetaLength ; ii-- > 0 ; ) {
|
||||
if(!mask) {
|
||||
|
||||
if (!mask) {
|
||||
|
||||
if (flg) {
|
||||
if(flg) {
|
||||
*kanjitmp++ = *kurai2++;
|
||||
*kanjitmp++ = *kurai2++;
|
||||
}
|
||||
else
|
||||
} else
|
||||
kurai2 += 2;
|
||||
|
||||
mask = 0x1000;
|
||||
tmp = *wd--;
|
||||
flg = FALSE;
|
||||
mask = 0x1000;
|
||||
tmp = *wd--;
|
||||
flg = FALSE;
|
||||
kurai1 = tbl2;
|
||||
}
|
||||
|
||||
if((num = (unsigned int)tmp / mask) > _Num0) {
|
||||
|
||||
if ((num = (unsigned int)tmp / mask) > _Num0) {
|
||||
|
||||
if ((num != _Num1) || !*kurai1) {
|
||||
src = tbl1 + (num - _Num0) * 2;
|
||||
if((num != _Num1) || !*kurai1) {
|
||||
src = tbl1 + (num - _Num0) * 2;
|
||||
*kanjitmp++ = *src++;
|
||||
*kanjitmp++ = *src;
|
||||
}
|
||||
|
||||
|
||||
if (*kurai1) {
|
||||
if(*kurai1) {
|
||||
*kanjitmp++ = *kurai1++;
|
||||
*kanjitmp++ = *kurai1++;
|
||||
}
|
||||
|
|
@ -274,54 +211,38 @@ kan_num(unsigned short* wd, unsigned char* tbl1, unsigned char* tbl2)
|
|||
else
|
||||
kurai1 += 2;
|
||||
|
||||
|
||||
tmp &= (mask - 1);
|
||||
mask >>= 4;
|
||||
}
|
||||
|
||||
|
||||
if (kanjitmp == keep) {
|
||||
if(kanjitmp == keep) {
|
||||
*kanjitmp++ = *tbl1++;
|
||||
*kanjitmp++ = *tbl1;
|
||||
}
|
||||
}
|
||||
|
||||
void num_type08(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type08(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
kan_num(num, Num2tbl, Num4tbl);
|
||||
}
|
||||
|
||||
void num_type09(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
void
|
||||
num_type09(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned short num[NumWordBuf];
|
||||
|
||||
|
||||
setwdnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
setwdnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
kan_num(num, Num3tbl, Num5tbl);
|
||||
}
|
||||
|
||||
void num_type10(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
int i;
|
||||
|
||||
void
|
||||
num_type10(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
int i;
|
||||
for(i = jrec->numlen; i > 0; i--) {
|
||||
|
||||
|
||||
for (i = jrec -> numlen ; i > 0 ; i--) {
|
||||
|
||||
if (Chrtbl[*s1++] & NUMBER) {
|
||||
if(Chrtbl[*s1++] & NUMBER) {
|
||||
*kanjitmp++ = *s2++;
|
||||
*kanjitmp++ = *s2++;
|
||||
}
|
||||
|
|
@ -331,25 +252,20 @@ num_type10(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
|||
}
|
||||
}
|
||||
|
||||
void num_type11(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
int i;
|
||||
int j;
|
||||
|
||||
void
|
||||
num_type11(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
i = j = jrec->numlen;
|
||||
if(!(Chrtbl[*(s1 + j - 4)] & NUMBER)) j -= (j - 1) / 4;
|
||||
|
||||
for(; i > 0; i--) {
|
||||
|
||||
i = j = jrec -> numlen;
|
||||
if (!(Chrtbl[*(s1 + j - 4)] & NUMBER)) j -= (j - 1) / 4;
|
||||
|
||||
|
||||
for ( ; i > 0 ; i--) {
|
||||
|
||||
if (Chrtbl[*s1++] & NUMBER) {
|
||||
if(Chrtbl[*s1++] & NUMBER) {
|
||||
*kanjitmp++ = *s2++;
|
||||
*kanjitmp++ = *s2++;
|
||||
if (--j > 0) {
|
||||
if ((j % 3) == 0) {
|
||||
if(--j > 0) {
|
||||
if((j % 3) == 0) {
|
||||
*kanjitmp++ = CommaHigh;
|
||||
*kanjitmp++ = CommaLow;
|
||||
}
|
||||
|
|
@ -361,72 +277,56 @@ num_type11(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
|||
}
|
||||
}
|
||||
|
||||
void num_type12(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
int i;
|
||||
int j;
|
||||
|
||||
void
|
||||
num_type12(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
for(i = jrec->numlen; i > 0; i--) {
|
||||
|
||||
|
||||
for (i = jrec -> numlen ; i > 0 ; i--) {
|
||||
|
||||
if (Chrtbl[j = *s1++] & NUMBER) {
|
||||
j = (j - N_0) * 2;
|
||||
if(Chrtbl[j = *s1++] & NUMBER) {
|
||||
j = (j - N_0) * 2;
|
||||
*kanjitmp++ = Num2tbl[j];
|
||||
*kanjitmp++ = Num2tbl[j + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
num_kurai(unsigned char* p, int len, unsigned char* tbl)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
unsigned char tmp;
|
||||
num_kurai(unsigned char* p, int len, unsigned char* tbl) {
|
||||
int i;
|
||||
int j;
|
||||
unsigned char tmp;
|
||||
|
||||
for (i = 0 ; i < len ; i++) {
|
||||
for(i = 0; i < len; i++) {
|
||||
tmp = *p++;
|
||||
|
||||
*kanjitmp++ = tbl[j = ((tmp & 0x0f) - _Num0) * 2];
|
||||
*kanjitmp++ = tbl[j + 1];
|
||||
if ((j = ((tmp >> 4) & 3)) != 0) {
|
||||
if((j = ((tmp >> 4) & 3)) != 0) {
|
||||
*kanjitmp++ = Num4tbl[j = (3 - j) * 2];
|
||||
*kanjitmp++ = Num4tbl[j + 1];
|
||||
}
|
||||
if ((j = ((tmp >> 6) & 3)) != 0) {
|
||||
if((j = ((tmp >> 6) & 3)) != 0) {
|
||||
*kanjitmp++ = Num6tbl[j = (3 - j) * 2];
|
||||
*kanjitmp++ = Num6tbl[j + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void num_type13(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned char num[NumKetaLength];
|
||||
int len;
|
||||
|
||||
void
|
||||
num_type13(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned char num[NumKetaLength];
|
||||
int len;
|
||||
|
||||
|
||||
len = setucnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
len = setucnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
num_kurai(num, len, Num1tbl);
|
||||
}
|
||||
|
||||
void num_type14(unsigned char* s1, unsigned char* s2, JREC* jrec) {
|
||||
unsigned char num[NumKetaLength];
|
||||
int len;
|
||||
|
||||
void
|
||||
num_type14(unsigned char* s1, unsigned char* s2, JREC* jrec)
|
||||
{
|
||||
unsigned char num[NumKetaLength];
|
||||
int len;
|
||||
|
||||
|
||||
len = setucnum(s1, (int)jrec -> numlen, num);
|
||||
|
||||
len = setucnum(s1, (int)jrec->numlen, num);
|
||||
|
||||
num_kurai(num, len, Num2tbl);
|
||||
}
|
||||
|
|
|
|||
18
mvmemd.c
18
mvmemd.c
|
|
@ -27,22 +27,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mvmemd.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:05 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
void mvmemd(src, dest, len)
|
||||
unsigned char *src;
|
||||
unsigned char *dest;
|
||||
int len;
|
||||
void mvmemd(src, dest, len) unsigned char* src;
|
||||
unsigned char* dest;
|
||||
int len;
|
||||
{
|
||||
while (len-- > 0) *(--dest) = *(--src);
|
||||
while(len-- > 0) *(--dest) = *(--src);
|
||||
}
|
||||
|
||||
|
|
|
|||
18
mvmemi.c
18
mvmemi.c
|
|
@ -27,22 +27,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: mvmemi.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:06 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
void mvmemi(src, dest, len)
|
||||
unsigned char *src;
|
||||
unsigned char *dest;
|
||||
int len;
|
||||
void mvmemi(src, dest, len) unsigned char* src;
|
||||
unsigned char* dest;
|
||||
int len;
|
||||
{
|
||||
while (len-- > 0) *dest++ = *src++;
|
||||
while(len-- > 0) *dest++ = *src++;
|
||||
}
|
||||
|
||||
|
|
|
|||
70
nmttyslot.c
70
nmttyslot.c
|
|
@ -27,76 +27,61 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: nmttyslot.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:20 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj2.h"
|
||||
#define LINESIZE 128
|
||||
|
||||
|
||||
#define LINESIZE 128
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static char* getttys();
|
||||
static char* ttys = "/etc/ttys";
|
||||
|
||||
#define NULL 0
|
||||
|
||||
|
||||
static char *getttys();
|
||||
static char *ttys = "/etc/ttys";
|
||||
|
||||
#define NULL 0
|
||||
|
||||
nmttyslot (name)
|
||||
char *name;
|
||||
nmttyslot(name) char* name;
|
||||
{
|
||||
char *tp, *p;
|
||||
int s, tf;
|
||||
char *tp, *p;
|
||||
int s, tf;
|
||||
|
||||
tp = name;
|
||||
|
||||
if ((p = strrchr (tp, '/')) == NULL)
|
||||
if((p = strrchr(tp, '/')) == NULL)
|
||||
p = tp;
|
||||
else
|
||||
p++;
|
||||
if ((tf = open (ttys, 0)) < 0)
|
||||
return(0);
|
||||
if((tf = open(ttys, 0)) < 0)
|
||||
return (0);
|
||||
s = 0;
|
||||
while (tp = getttys (tf)) {
|
||||
while(tp = getttys(tf)) {
|
||||
s++;
|
||||
if (strcmp (p, tp) == 0) {
|
||||
close (tf);
|
||||
if(strcmp(p, tp) == 0) {
|
||||
close(tf);
|
||||
return (s);
|
||||
}
|
||||
}
|
||||
close (tf);
|
||||
close(tf);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static char *
|
||||
getttys (f)
|
||||
int f;
|
||||
static char*
|
||||
getttys(f)
|
||||
int f;
|
||||
{
|
||||
static char line[LINESIZE];
|
||||
char *lp;
|
||||
char* lp;
|
||||
top:
|
||||
for (lp = line ; lp < &line[LINESIZE] ; lp ++) {
|
||||
if (read (f, lp, 1) != 1)
|
||||
for(lp = line; lp < &line[LINESIZE]; lp++) {
|
||||
if(read(f, lp, 1) != 1)
|
||||
return (NULL);
|
||||
if (*lp == '\n') {
|
||||
if(*lp == '\n') {
|
||||
*lp = '\0';
|
||||
break;
|
||||
}
|
||||
else if (*lp == ' ' || *lp == '\t') {
|
||||
} else if(*lp == ' ' || *lp == '\t') {
|
||||
|
||||
while (1) {
|
||||
if (read (f, lp, 1) != 1)
|
||||
while(1) {
|
||||
if(read(f, lp, 1) != 1)
|
||||
break;
|
||||
if (*lp == '\n')
|
||||
if(*lp == '\n')
|
||||
break;
|
||||
}
|
||||
*lp = '\0';
|
||||
|
|
@ -104,10 +89,9 @@ top:
|
|||
}
|
||||
}
|
||||
lp = line;
|
||||
if (*lp == '0' || *lp == '1')
|
||||
if(*lp == '0' || *lp == '1')
|
||||
lp += 2;
|
||||
else if (*lp == '#')
|
||||
else if(*lp == '#')
|
||||
goto top;
|
||||
return (lp);
|
||||
}
|
||||
|
||||
|
|
|
|||
139
offset.c
139
offset.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: offset.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1994/08/17 01:50:26 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
|
@ -43,142 +34,116 @@
|
|||
#include "sj_struct.h"
|
||||
#include "dicttool.h"
|
||||
|
||||
extern OffsetRec *ofsrec[];
|
||||
extern int ofsrec_num;
|
||||
|
||||
|
||||
extern OffsetRec* ofsrec[];
|
||||
extern int ofsrec_num;
|
||||
|
||||
static OffsetRec*
|
||||
makeoffset(unsigned char* ptr, int len, int ofs)
|
||||
{
|
||||
OffsetRec *orec;
|
||||
unsigned char *p;
|
||||
makeoffset(unsigned char* ptr, int len, int ofs) {
|
||||
OffsetRec* orec;
|
||||
unsigned char* p;
|
||||
|
||||
orec = (OffsetRec*)Malloc(sizeof(OffsetRec));
|
||||
|
||||
orec = (OffsetRec *)Malloc(sizeof(OffsetRec));
|
||||
|
||||
|
||||
p = (unsigned char *)Malloc(len);
|
||||
p = (unsigned char*)Malloc(len);
|
||||
memcpy(p, ptr, len);
|
||||
|
||||
|
||||
orec -> kptr = p;
|
||||
orec -> klen = len;
|
||||
if (ofs)
|
||||
orec -> offset = ofs;
|
||||
orec->kptr = p;
|
||||
orec->klen = len;
|
||||
if(ofs)
|
||||
orec->offset = ofs;
|
||||
else
|
||||
orec -> offset = ofsrec_num + 1;
|
||||
orec->offset = ofsrec_num + 1;
|
||||
|
||||
return orec;
|
||||
}
|
||||
|
||||
void set_ofsrec(unsigned char* ptr, int len, int ofs) {
|
||||
OffsetRec* orec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
void
|
||||
set_ofsrec(unsigned char* ptr, int len, int ofs)
|
||||
{
|
||||
OffsetRec *orec;
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
|
||||
if (ofsrec_num <= 0) {
|
||||
orec = makeoffset(ptr, len, ofs);
|
||||
ofsrec[0]= orec;
|
||||
if(ofsrec_num <= 0) {
|
||||
orec = makeoffset(ptr, len, ofs);
|
||||
ofsrec[0] = orec;
|
||||
ofsrec_num++;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
low = 0; high = ofsrec_num - 1;
|
||||
while (low <= high) {
|
||||
low = 0;
|
||||
high = ofsrec_num - 1;
|
||||
while(low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, ptr, len);
|
||||
if (i > 0)
|
||||
i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, ptr, len);
|
||||
if(i > 0)
|
||||
high = mid - 1;
|
||||
else if (i < 0)
|
||||
else if(i < 0)
|
||||
low = ++mid;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (i) {
|
||||
if (ofsrec_num >= MaxOffsetNumber) {
|
||||
if(i) {
|
||||
if(ofsrec_num >= MaxOffsetNumber) {
|
||||
fprintf(stderr, "\245\252\245\325\245\273\245\303\245\310\241\246\245\306\241\274\245\326\245\353\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
orec = makeoffset(ptr, len, ofs);
|
||||
|
||||
|
||||
for (i = ofsrec_num ; i > mid ; i--) ofsrec[i] = ofsrec[i - 1];
|
||||
for(i = ofsrec_num; i > mid; i--) ofsrec[i] = ofsrec[i - 1];
|
||||
ofsrec[mid] = orec;
|
||||
ofsrec_num++;
|
||||
}
|
||||
}
|
||||
|
||||
int isknjexist(unsigned char* knj, int len) {
|
||||
int low, high, mid;
|
||||
int i;
|
||||
|
||||
int
|
||||
isknjexist(unsigned char* knj, int len)
|
||||
{
|
||||
int low, high, mid;
|
||||
int i;
|
||||
if(ofsrec_num <= 0) return 0;
|
||||
|
||||
|
||||
if (ofsrec_num <= 0) return 0;
|
||||
|
||||
|
||||
low = 0; high = ofsrec_num - 1;
|
||||
while (low <= high) {
|
||||
low = 0;
|
||||
high = ofsrec_num - 1;
|
||||
while(low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, knj, len);
|
||||
if (i > 0)
|
||||
i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, knj, len);
|
||||
if(i > 0)
|
||||
high = mid - 1;
|
||||
else if (i < 0)
|
||||
else if(i < 0)
|
||||
low = ++mid;
|
||||
else
|
||||
return ofsrec[mid] -> offset;
|
||||
return ofsrec[mid]->offset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void clear_ofsrec(void) {
|
||||
int i;
|
||||
|
||||
void
|
||||
clear_ofsrec(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0 ; i < ofsrec_num ; i++) {
|
||||
Free(ofsrec[i] -> kptr);
|
||||
for(i = 0; i < ofsrec_num; i++) {
|
||||
Free(ofsrec[i]->kptr);
|
||||
Free(ofsrec[i]);
|
||||
}
|
||||
|
||||
ofsrec_num = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
OffsetRec*
|
||||
real_ofsrec(unsigned char* ptr)
|
||||
{
|
||||
int ofs;
|
||||
int i;
|
||||
OffsetRec **p;
|
||||
real_ofsrec(unsigned char* ptr) {
|
||||
int ofs;
|
||||
int i;
|
||||
OffsetRec** p;
|
||||
|
||||
ofs = (*ptr++ & KnjAsshukuMask);
|
||||
ofs <<= 8;
|
||||
ofs += *ptr;
|
||||
|
||||
ofs = (*ptr++ & KnjAssyukuMask);
|
||||
ofs <<= 8;
|
||||
ofs += *ptr;
|
||||
|
||||
|
||||
for (i = ofsrec_num, p = ofsrec ; i-- > 0 ; p++)
|
||||
if ((*p) -> offset == ofs)
|
||||
for(i = ofsrec_num, p = ofsrec; i-- > 0; p++)
|
||||
if((*p)->offset == ofs)
|
||||
return *p;
|
||||
|
||||
|
||||
fprintf(stderr, "real_ofsrec() \244\307\260\333\276\357\244\312\276\365\302\326 %x\n", ofs);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
|||
289
peepdic.c
289
peepdic.c
|
|
@ -27,39 +27,25 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: peepdic.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1995/07/21 05:22:51 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_yomi.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
unsigned char* skiphblk();
|
||||
|
||||
unsigned char *skiphblk();
|
||||
static void add_yomi(void);
|
||||
static void cd2sjh_chr(unsigned char ch, unsigned char* dst);
|
||||
static int next_douon(void);
|
||||
static int next_hinshi(void);
|
||||
static int next_kanji(void);
|
||||
static int prev_douon(void);
|
||||
static int prev_hinshi(void);
|
||||
static int prev_kanji(void);
|
||||
static void set_buf(unsigned char* buf);
|
||||
static void set_idxyomi(void);
|
||||
static void set_kanji(void);
|
||||
|
||||
static void add_yomi (void);
|
||||
static void cd2sjh_chr (unsigned char ch, unsigned char *dst);
|
||||
static int next_douon (void);
|
||||
static int next_hinsi (void);
|
||||
static int next_kanji (void);
|
||||
static int prev_douon (void);
|
||||
static int prev_hinsi (void);
|
||||
static int prev_kanji (void);
|
||||
static void set_buf (unsigned char *buf);
|
||||
static void set_idxyomi (void);
|
||||
static void set_kanji (void);
|
||||
|
||||
|
||||
|
||||
int
|
||||
getusr (unsigned char *buf)
|
||||
{
|
||||
int getusr(unsigned char* buf) {
|
||||
int nlen;
|
||||
|
||||
peepyomi[0] = peepknj[0] = peepgrm = 0;
|
||||
|
|
@ -69,12 +55,12 @@ getusr (unsigned char *buf)
|
|||
|
||||
peepdptr = segtop();
|
||||
|
||||
if (segend(peepdptr)) return 0;
|
||||
if(segend(peepdptr)) return 0;
|
||||
|
||||
add_yomi();
|
||||
|
||||
nlen = getnlen(peepdptr);
|
||||
peephptr = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
nlen = getnlen(peepdptr);
|
||||
peephptr = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
|
||||
peepgrm = *peephptr;
|
||||
|
||||
|
|
@ -87,15 +73,11 @@ getusr (unsigned char *buf)
|
|||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
nextusr (unsigned char *buf)
|
||||
{
|
||||
int nextusr(unsigned char* buf) {
|
||||
(*curdict->getdic)(curdict, peepidx);
|
||||
get_askknj();
|
||||
|
||||
if (next_kanji()) {
|
||||
if(next_kanji()) {
|
||||
set_kanji();
|
||||
set_buf(buf);
|
||||
return -1;
|
||||
|
|
@ -104,15 +86,11 @@ nextusr (unsigned char *buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
prevusr (unsigned char *buf)
|
||||
{
|
||||
int prevusr(unsigned char* buf) {
|
||||
(*curdict->getdic)(curdict, peepidx);
|
||||
get_askknj();
|
||||
|
||||
if (prev_kanji()) {
|
||||
if(prev_kanji()) {
|
||||
set_kanji();
|
||||
set_buf(buf);
|
||||
return -1;
|
||||
|
|
@ -121,32 +99,26 @@ prevusr (unsigned char *buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
set_kanji(void) {
|
||||
int len;
|
||||
|
||||
|
||||
static void
|
||||
set_kanji (void)
|
||||
{
|
||||
int len;
|
||||
|
||||
len = getkanji(peepyomi, getnlen(peepdptr) + getplen(peepdptr),
|
||||
peepkptr, peepknj);
|
||||
len = getkanji(peepyomi, getnlen(peepdptr) + getplen(peepdptr),
|
||||
peepkptr, peepknj);
|
||||
*(peepknj + len) = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
set_buf(unsigned char* buf) {
|
||||
unsigned char* p;
|
||||
int i, csize;
|
||||
|
||||
|
||||
static void
|
||||
set_buf (unsigned char *buf)
|
||||
{
|
||||
unsigned char *p;
|
||||
int i, csize;
|
||||
|
||||
for (p = peepyomi ; *p ; ) *buf++ = *p++;
|
||||
for(p = peepyomi; *p;) *buf++ = *p++;
|
||||
*buf++ = 0;
|
||||
|
||||
for (p = peepknj ; *p ; ) {
|
||||
for(p = peepknj; *p;) {
|
||||
csize = euc_codesize(*p);
|
||||
for (i = 0; i < csize; i++ ) *buf++ = *p++;
|
||||
for(i = 0; i < csize; i++) *buf++ = *p++;
|
||||
}
|
||||
*buf++ = 0;
|
||||
|
||||
|
|
@ -154,68 +126,59 @@ set_buf (unsigned char *buf)
|
|||
*buf++ = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
prev_kanji (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
unsigned char *p2;
|
||||
static int
|
||||
prev_kanji(void) {
|
||||
unsigned char* p1;
|
||||
unsigned char* p2;
|
||||
|
||||
p1 = peephptr + 1;
|
||||
if (peepkptr <= p1) return prev_hinsi();
|
||||
if(peepkptr <= p1) return prev_hinshi();
|
||||
|
||||
p2 = peepkptr;
|
||||
while (p1 < p2) {
|
||||
while(p1 < p2) {
|
||||
peepkptr = p1;
|
||||
p1 = skipkstr(p1);
|
||||
p1 = skipkstr(p1);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
prev_hinsi (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
unsigned char *p2;
|
||||
int nlen;
|
||||
static int
|
||||
prev_hinshi(void) {
|
||||
unsigned char* p1;
|
||||
unsigned char* p2;
|
||||
int nlen;
|
||||
|
||||
nlen = getnlen(peepdptr);
|
||||
p1 = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
p1 = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
|
||||
if (peephptr <= p1) return prev_douon();
|
||||
if(peephptr <= p1) return prev_douon();
|
||||
|
||||
p2 = peephptr;
|
||||
while (p1 < p2) {
|
||||
while(p1 < p2) {
|
||||
peephptr = p1;
|
||||
p1 = skiphblk(p1);
|
||||
p1 = skiphblk(p1);
|
||||
}
|
||||
|
||||
peepgrm = *peephptr;
|
||||
|
||||
p1 = peephptr + 1;
|
||||
while (*p1 != HinsiBlkTerm) {
|
||||
while(*p1 != HinshiBlkTerm) {
|
||||
peepkptr = p1;
|
||||
p1 = skipkstr(p1);
|
||||
p1 = skipkstr(p1);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
prev_douon(void) {
|
||||
unsigned char* p1;
|
||||
unsigned char* p2;
|
||||
int nlen;
|
||||
|
||||
|
||||
static int
|
||||
prev_douon (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
unsigned char *p2;
|
||||
int nlen;
|
||||
|
||||
if (peepdptr <= segtop()) {
|
||||
if (peepidx <= DicSegBase) return 0;
|
||||
if(peepdptr <= segtop()) {
|
||||
if(peepidx <= DicSegBase) return 0;
|
||||
|
||||
(*curdict->getdic)(curdict, --peepidx);
|
||||
get_askknj();
|
||||
|
|
@ -227,9 +190,8 @@ prev_douon (void)
|
|||
peepdptr = p1;
|
||||
add_yomi();
|
||||
p1 = getntag(p1);
|
||||
} while (!segend(p1));
|
||||
}
|
||||
else {
|
||||
} while(!segend(p1));
|
||||
} else {
|
||||
set_idxyomi();
|
||||
|
||||
p1 = segtop();
|
||||
|
|
@ -238,86 +200,75 @@ prev_douon (void)
|
|||
peepdptr = p1;
|
||||
add_yomi();
|
||||
p1 = getntag(p1);
|
||||
} while (p1 < p2);
|
||||
} while(p1 < p2);
|
||||
}
|
||||
|
||||
nlen = getnlen(peepdptr);
|
||||
p1 = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
p1 = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
|
||||
p2 = getntag(peepdptr);
|
||||
do {
|
||||
peephptr = p1;
|
||||
p1 = skiphblk(p1);
|
||||
} while (p1 < p2);
|
||||
p1 = skiphblk(p1);
|
||||
} while(p1 < p2);
|
||||
|
||||
peepgrm = *peephptr;
|
||||
|
||||
p1 = peephptr + 1;
|
||||
do {
|
||||
peepkptr = p1;
|
||||
p1 = skipkstr(p1);
|
||||
} while (*p1 != HinsiBlkTerm);
|
||||
p1 = skipkstr(p1);
|
||||
} while(*p1 != HinshiBlkTerm);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
next_kanji (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
static int
|
||||
next_kanji(void) {
|
||||
unsigned char* p1;
|
||||
|
||||
p1 = skipkstr(peepkptr);
|
||||
if (*p1 == HinsiBlkTerm) return next_hinsi();
|
||||
if(*p1 == HinshiBlkTerm) return next_hinshi();
|
||||
peepkptr = p1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
next_hinsi (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
static int
|
||||
next_hinshi(void) {
|
||||
unsigned char* p1;
|
||||
|
||||
p1 = skiphblk(peephptr);
|
||||
if (p1 >= getntag(peepdptr)) return next_douon();
|
||||
if(p1 >= getntag(peepdptr)) return next_douon();
|
||||
peephptr = p1;
|
||||
peepgrm = *p1;
|
||||
peepgrm = *p1;
|
||||
peepkptr = p1 + 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
next_douon (void)
|
||||
{
|
||||
unsigned char *p1;
|
||||
int nlen;
|
||||
static int
|
||||
next_douon(void) {
|
||||
unsigned char* p1;
|
||||
int nlen;
|
||||
|
||||
p1 = getntag(peepdptr);
|
||||
|
||||
if (segend(p1)) {
|
||||
if (peepidx + 1 < curdict->segunit) {
|
||||
if(segend(p1)) {
|
||||
if(peepidx + 1 < curdict->segunit) {
|
||||
(*curdict->getdic)(curdict, ++peepidx);
|
||||
get_askknj();
|
||||
peepdptr = segtop();
|
||||
|
||||
set_idxyomi();
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
} else
|
||||
return 0;
|
||||
} else {
|
||||
peepdptr = p1;
|
||||
}
|
||||
|
||||
add_yomi();
|
||||
|
||||
nlen = getnlen(peepdptr);
|
||||
peephptr = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
nlen = getnlen(peepdptr);
|
||||
peephptr = peepdptr + DouonBlkSizeNumber + nlen;
|
||||
|
||||
peepgrm = *peephptr;
|
||||
|
||||
|
|
@ -326,16 +277,13 @@ next_douon (void)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static void
|
||||
set_idxyomi(void) {
|
||||
unsigned char *p1, *p2;
|
||||
|
||||
|
||||
static void
|
||||
set_idxyomi (void)
|
||||
{
|
||||
unsigned char *p1, *p2;
|
||||
|
||||
if ((p2 = get_idxptr(peepidx)) != NULL) {
|
||||
if((p2 = get_idxptr(peepidx)) != NULL) {
|
||||
p1 = peepyomi;
|
||||
while (*p2) {
|
||||
while(*p2) {
|
||||
cd2sjh_chr(*p2++, p1);
|
||||
p1 += 2;
|
||||
}
|
||||
|
|
@ -343,19 +291,16 @@ set_idxyomi (void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
add_yomi (void)
|
||||
{
|
||||
int nlen;
|
||||
unsigned char *p1, *p2;
|
||||
static void
|
||||
add_yomi(void) {
|
||||
int nlen;
|
||||
unsigned char *p1, *p2;
|
||||
|
||||
nlen = getnlen(peepdptr);
|
||||
p1 = peepyomi + getplen(peepdptr) * 2;
|
||||
p2 = peepdptr + DouonBlkSizeNumber;
|
||||
p1 = peepyomi + getplen(peepdptr) * 2;
|
||||
p2 = peepdptr + DouonBlkSizeNumber;
|
||||
|
||||
while (nlen--) {
|
||||
while(nlen--) {
|
||||
cd2sjh_chr(*p2++, p1);
|
||||
p1 += 2;
|
||||
}
|
||||
|
|
@ -363,50 +308,36 @@ add_yomi (void)
|
|||
*p1 = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
cd2sjh_chr (unsigned char ch, unsigned char *dst)
|
||||
{
|
||||
if (ch == _TYOUON) {
|
||||
static void
|
||||
cd2sjh_chr(unsigned char ch, unsigned char* dst) {
|
||||
if(ch == _TYOUON) {
|
||||
*dst++ = 0xa1;
|
||||
*dst++ = 0xbc;
|
||||
}
|
||||
else if (ch == _IGETA) {
|
||||
} else if(ch == _IGETA) {
|
||||
*dst++ = 0xa1;
|
||||
*dst++ = 0xf4;
|
||||
}
|
||||
else if (ch == _ATTO) {
|
||||
} else if(ch == _ATTO) {
|
||||
*dst++ = 0xa1;
|
||||
*dst++ = 0xf7;
|
||||
}
|
||||
else if (ch == _YUUBIN) {
|
||||
} else if(ch == _YUUBIN) {
|
||||
*dst++ = 0xa2;
|
||||
*dst++ = 0xa9;
|
||||
}
|
||||
else if (ch < N_0) {
|
||||
}
|
||||
else if (ch <= N_9) {
|
||||
} else if(ch < N_0) {
|
||||
} else if(ch <= N_9) {
|
||||
*dst++ = 0xa3;
|
||||
*dst++ = ch + 0xa0;
|
||||
}
|
||||
else if (ch <= A_Z) {
|
||||
} else if(ch <= A_Z) {
|
||||
*dst++ = 0xa3;
|
||||
*dst++ = ch + 0xa7;
|
||||
}
|
||||
else if (ch <= A_z) {
|
||||
} else if(ch <= A_z) {
|
||||
*dst++ = 0xa3;
|
||||
*dst++ = ch + 0xad;
|
||||
}
|
||||
else if (ch <= _NN) {
|
||||
} else if(ch <= _NN) {
|
||||
*dst++ = 0xa4;
|
||||
*dst++ = ch + 0x53;
|
||||
}
|
||||
else if (ch <= _XKE) {
|
||||
} else if(ch <= _XKE) {
|
||||
*dst++ = 0xa5;
|
||||
*dst++ = ch + 0x53;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
84
ph2knj.c
84
ph2knj.c
|
|
@ -27,39 +27,28 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: ph2knj.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:09 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_yomi.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
int sj2cd_chr();
|
||||
void mk2claus();
|
||||
void freework();
|
||||
void selclrec();
|
||||
CLREC* free_clst();
|
||||
JREC* free_jlst();
|
||||
|
||||
int sj2cd_chr();
|
||||
void mk2claus();
|
||||
void freework();
|
||||
void selclrec();
|
||||
CLREC *free_clst();
|
||||
JREC *free_jlst();
|
||||
int ph2knj(unsigned char* zyomi, unsigned char* kanji, int knjlen) {
|
||||
unsigned char* ptr;
|
||||
unsigned char* dst;
|
||||
int i;
|
||||
|
||||
|
||||
|
||||
int ph2knj
|
||||
(unsigned char *zyomi, unsigned char *kanji, int knjlen)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
unsigned char *dst;
|
||||
int i;
|
||||
|
||||
for (ptr = zyomi, dst = hyomi, i = 0 ; *ptr ; ) {
|
||||
if (i++ >= MaxPhInputLen) { *kanji = 0; return 0; }
|
||||
for(ptr = zyomi, dst = hyomi, i = 0; *ptr;) {
|
||||
if(i++ >= MaxPhInputLen) {
|
||||
*kanji = 0;
|
||||
return 0;
|
||||
}
|
||||
ptr += sj2cd_chr(ptr, dst++);
|
||||
}
|
||||
*dst = 0;
|
||||
|
|
@ -68,21 +57,21 @@ int ph2knj
|
|||
prevclgrm = 0;
|
||||
prevclrow = 0;
|
||||
|
||||
khcount = 0;
|
||||
khcount = 0;
|
||||
nextcllen = 0;
|
||||
|
||||
inputyomi = zyomi;
|
||||
cnvstart = ystart = hyomi;
|
||||
cnvlen = strlen(hyomi);
|
||||
cnvlen = strlen(hyomi);
|
||||
|
||||
kanjipos = kanji;
|
||||
kanjilen = knjlen;
|
||||
|
||||
while (cnvlen && kanjilen) {
|
||||
if (!clt1st) {
|
||||
mkjiritu(DO_CLSTUDY | DO_IKKATU);
|
||||
mkbunsetu();
|
||||
if (!maxclptr) wakachi();
|
||||
while(cnvlen && kanjilen) {
|
||||
if(!clt1st) {
|
||||
mkjiritsu(DO_CLSTUDY | DO_IKKATU);
|
||||
mkbunsetsu();
|
||||
if(!maxclptr) wakachi();
|
||||
jrt1st = maxjptr;
|
||||
clt1st = maxclptr;
|
||||
}
|
||||
|
|
@ -91,28 +80,27 @@ int ph2knj
|
|||
|
||||
selclrec();
|
||||
|
||||
prevclgrm = selcl -> jnode -> hinsi;
|
||||
prevclrow = selcl -> right;
|
||||
prevclgrm = selcl->jnode->hinshi;
|
||||
prevclrow = selcl->right;
|
||||
|
||||
clt1st = free_clst(clt1st, (int)selcl -> cllen);
|
||||
jrt1st = free_jlst(jrt1st);
|
||||
clt1st = free_clst(clt1st, (int)selcl->cllen);
|
||||
jrt1st = free_jlst(jrt1st);
|
||||
|
||||
cnvstart += selcl -> cllen;
|
||||
cnvlen -= selcl -> cllen;
|
||||
cnvstart += selcl->cllen;
|
||||
cnvlen -= selcl->cllen;
|
||||
|
||||
cvtphknj();
|
||||
cvtphknj();
|
||||
|
||||
clt1st = clt2nd;
|
||||
jrt1st = jrt2nd;
|
||||
clt1st = clt2nd;
|
||||
jrt1st = jrt2nd;
|
||||
}
|
||||
|
||||
if (!kanjilen) {
|
||||
free_clall(clt1st);
|
||||
free_jall (jrt1st);
|
||||
}
|
||||
if(!kanjilen) {
|
||||
free_clall(clt1st);
|
||||
free_jall(jrt1st);
|
||||
}
|
||||
|
||||
*kanjipos = 0;
|
||||
|
||||
return(inputyomi - zyomi);
|
||||
return (inputyomi - zyomi);
|
||||
}
|
||||
|
||||
|
|
|
|||
71
ph_khtbl.c
71
ph_khtbl.c
|
|
@ -27,69 +27,52 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: ph_khtbl.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:09 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "kanakan.h"
|
||||
|
||||
static void
|
||||
ph_setsty(CLREC* clrec) {
|
||||
JREC* jrec;
|
||||
TypeDicOfs offset;
|
||||
unsigned char* ptr;
|
||||
STDYIN* sptr;
|
||||
|
||||
|
||||
static void
|
||||
ph_setsty (CLREC *clrec)
|
||||
{
|
||||
JREC *jrec;
|
||||
TypeDicOfs offset;
|
||||
unsigned char *ptr;
|
||||
STDYIN *sptr;
|
||||
|
||||
if (!seldict((jrec = clrec -> jnode) -> dicid)) {
|
||||
if (!khcount)
|
||||
ph_setkouho(clrec, (TypeDicOfs)1, (STDYIN *)NULL);
|
||||
if(!seldict((jrec = clrec->jnode)->dicid)) {
|
||||
if(!khcount)
|
||||
ph_setkouho(clrec, (TypeDicOfs)1, (STDYIN*)NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
(*curdict->getdic)(curdict, jrec -> jseg);
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
ptr = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
for ( ; *ptr != HinsiBlkTerm ; ptr = skipkstr(ptr)) {
|
||||
for(; *ptr != HinshiBlkTerm; ptr = skipkstr(ptr)) {
|
||||
offset = ptr - dicbuf;
|
||||
sptr = srchstdy(jrec -> jseg, offset, jrec -> dicid);
|
||||
sptr = srchstdy(jrec->jseg, offset, jrec->dicid);
|
||||
|
||||
if (!khcount){
|
||||
if(!khcount) {
|
||||
ph_setkouho(clrec, offset, sptr);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!sptr) continue;
|
||||
if(!sptr) continue;
|
||||
|
||||
if (sptr -> styno < kouhotbl[0].styno) {
|
||||
if(sptr->styno < kouhotbl[0].styno) {
|
||||
ph_setkouho(clrec, offset, sptr);
|
||||
}
|
||||
else if (sptr -> styno == kouhotbl -> styno) {
|
||||
if (!(kouhotbl[0].ka_fg &&
|
||||
sptr -> ka_kj == kouhotbl[0].ka_kj)) {
|
||||
} else if(sptr->styno == kouhotbl->styno) {
|
||||
if(!(kouhotbl[0].ka_fg &&
|
||||
sptr->ka_kj == kouhotbl[0].ka_kj)) {
|
||||
ph_setkouho(clrec, offset, sptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ph_khtbl(CLREC* clrec) {
|
||||
JREC* jrec;
|
||||
int flg = FALSE;
|
||||
|
||||
|
||||
int
|
||||
ph_khtbl (CLREC *clrec)
|
||||
{
|
||||
JREC *jrec;
|
||||
int flg = FALSE;
|
||||
|
||||
switch((jrec = clrec -> jnode) -> class) {
|
||||
switch((jrec = clrec->jnode)->class) {
|
||||
case C_DICT:
|
||||
ph_setsty(clrec);
|
||||
break;
|
||||
|
|
@ -104,19 +87,17 @@ ph_khtbl (CLREC *clrec)
|
|||
case C_N_KAZULONG:
|
||||
case C_N_KAZULCMA:
|
||||
case C_N_SUUJILONG:
|
||||
if (jrec -> jofsst) {
|
||||
if(jrec->jofsst) {
|
||||
ph_setsty(clrec);
|
||||
break;
|
||||
}
|
||||
else
|
||||
} else
|
||||
flg = TRUE;
|
||||
case C_BUNSETU:
|
||||
case C_BUNSETSU:
|
||||
case C_MINASI:
|
||||
case C_WAKACHI:
|
||||
if (!khcount) ph_setkouho(clrec, (TypeDicOfs)0, (STDYIN *)0);
|
||||
if(!khcount) ph_setkouho(clrec, (TypeDicOfs)0, (STDYIN*)0);
|
||||
break;
|
||||
}
|
||||
|
||||
return flg;
|
||||
}
|
||||
|
||||
|
|
|
|||
221
priority.c
221
priority.c
|
|
@ -27,136 +27,124 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: priority.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:10 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_kcnv.h"
|
||||
#include "sj_hinsi.h"
|
||||
#include "sj_hinshi.h"
|
||||
#include "sj_right.h"
|
||||
#include "sj_prty.h"
|
||||
|
||||
static int isfukusi(hinsi)
|
||||
TypeGram hinsi;
|
||||
static int isfukusi(hinshi)
|
||||
TypeGram hinshi;
|
||||
{
|
||||
if (FUKUSI_1 <= hinsi && hinsi <= FUKUSI_7)
|
||||
if(FUKUSHI_1 <= hinshi && hinshi <= FUKUSHI_7)
|
||||
return TRUE;
|
||||
else if (hinsi == MEISI_11 || hinsi == D_MEISI_6)
|
||||
else if(hinshi == MEISHI_11 || hinshi == D_MEISHI_6)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int istaigen(right)
|
||||
TypeCnct right;
|
||||
static int istaigen(right)
|
||||
TypeCnct right;
|
||||
{
|
||||
if (right == R_MEISI || right == R_DMEISI || right == R_SMEISI1)
|
||||
if(right == R_MEISHI || right == R_DMEISHI || right == R_SMEISHI1)
|
||||
return TRUE;
|
||||
if (right == R_WO_MEISI || right == R_DAIMEISI || right == R_JOSUUSI)
|
||||
if(right == R_WO_MEISHI || right == R_DAIMEISHI || right == R_JOSUUSHI)
|
||||
return TRUE;
|
||||
if (right == R_RENYOU1 || (R_RENYOU3 <= right && right <= R_SA5RENYOU4))
|
||||
if(right == R_RENYOU1 || (R_RENYOU3 <= right && right <= R_SA5RENYOU4))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int taicnt(hinsi1, hinsi2)
|
||||
TypeGram hinsi1;
|
||||
TypeGram hinsi2;
|
||||
static int taicnt(hinshi1, hinshi2)
|
||||
TypeGram hinshi1;
|
||||
TypeGram hinshi2;
|
||||
{
|
||||
if (hinsi2 == TANKANJI) return 0;
|
||||
if(hinshi2 == TANKANJI) return 0;
|
||||
|
||||
if (MYOUJI <= hinsi1 && hinsi1 <= KEN_KU) {
|
||||
if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9)
|
||||
return Taipri(hinsi1 - MYOUJI, hinsi2);
|
||||
if(MYOUJI <= hinshi1 && hinshi1 <= KEN_KU) {
|
||||
if(MEISHI_1 <= hinshi2 && hinshi2 <= SETSUBI_9)
|
||||
return Taipri(hinshi1 - MYOUJI, hinshi2);
|
||||
else
|
||||
return 3;
|
||||
}
|
||||
else if ((MEISI_1 <= hinsi1 && hinsi1 <= MEISI_11) ||
|
||||
hinsi1 == D_MEISI_2) {
|
||||
if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9) {
|
||||
return Taipri(5, hinsi2);
|
||||
}
|
||||
else
|
||||
} else if((MEISHI_1 <= hinshi1 && hinshi1 <= MEISHI_11) ||
|
||||
hinshi1 == D_MEISHI_2) {
|
||||
if(MEISHI_1 <= hinshi2 && hinshi2 <= SETSUBI_9) {
|
||||
return Taipri(5, hinshi2);
|
||||
} else
|
||||
return 5;
|
||||
}
|
||||
|
||||
else {
|
||||
if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9)
|
||||
return Taipri(6, hinsi2);
|
||||
if(MEISHI_1 <= hinshi2 && hinshi2 <= SETSUBI_9)
|
||||
return Taipri(6, hinshi2);
|
||||
else
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
static int sttcnt(hinsi1, hinsi2)
|
||||
TypeGram hinsi1;
|
||||
TypeGram hinsi2;
|
||||
static int sttcnt(hinshi1, hinshi2)
|
||||
TypeGram hinshi1;
|
||||
TypeGram hinshi2;
|
||||
{
|
||||
if (SETTOU_1 <= hinsi1 && hinsi1 <= SETTOU_5) {
|
||||
if (MEISI_1 <= hinsi2 && hinsi2 <= SUUSI)
|
||||
return Sttpri(hinsi1 - SETTOU_1, hinsi2);
|
||||
if(SETTOU_1 <= hinshi1 && hinshi1 <= SETTOU_5) {
|
||||
if(MEISHI_1 <= hinshi2 && hinshi2 <= SUUSHI)
|
||||
return Sttpri(hinshi1 - SETTOU_1, hinshi2);
|
||||
}
|
||||
return 4;
|
||||
}
|
||||
|
||||
int priority(clrec)
|
||||
CLREC *clrec;
|
||||
int priority(clrec)
|
||||
CLREC* clrec;
|
||||
{
|
||||
int prty;
|
||||
CLREC *cl2rec;
|
||||
int keeplen;
|
||||
TypeGram hinsi1;
|
||||
int i;
|
||||
int prev = 0;
|
||||
int prty;
|
||||
CLREC* cl2rec;
|
||||
int keeplen;
|
||||
TypeGram hinshi1;
|
||||
int i;
|
||||
int prev = 0;
|
||||
|
||||
if (clrec->cllen == clrec->cl2len) return 0xff;
|
||||
if(clrec->cllen == clrec->cl2len) return 0xff;
|
||||
|
||||
if (clrec->jnode->class == C_BUNSETU) {
|
||||
if(clrec->jnode->class == C_BUNSETSU) {
|
||||
prty = Termtbl[clrec->right] & GETPRI;
|
||||
return(0xf0 + prty);
|
||||
return (0xf0 + prty);
|
||||
}
|
||||
|
||||
hinshi1 = clrec->jnode->hinshi;
|
||||
|
||||
hinsi1 = clrec->jnode->hinsi;
|
||||
|
||||
if (prevclrow == R_WO || prevclrow == R_WO_S ||
|
||||
prevclrow == R_NI1 || prevclrow == R_DRENYOU2) {
|
||||
if (clrec -> kubun == K_DOUSHI || isfukusi(hinsi1))
|
||||
if(prevclrow == R_WO || prevclrow == R_WO_S ||
|
||||
prevclrow == R_NI1 || prevclrow == R_DRENYOU2) {
|
||||
if(clrec->kubun == K_DOUSHI || isfukusi(hinshi1))
|
||||
prev = 5;
|
||||
}
|
||||
|
||||
else if (istaigen(prevclrow)) {
|
||||
else if(istaigen(prevclrow)) {
|
||||
|
||||
if (clrec -> kubun == K_TAIGEN)
|
||||
prev = taicnt(prevclgrm, hinsi1);
|
||||
if(clrec->kubun == K_TAIGEN)
|
||||
prev = taicnt(prevclgrm, hinshi1);
|
||||
|
||||
else
|
||||
prev = 0;
|
||||
}
|
||||
|
||||
else if (prevclrow == R_SETTOU) {
|
||||
if (clrec -> jnode -> sttofs)
|
||||
else if(prevclrow == R_SETTOU) {
|
||||
if(clrec->jnode->sttofs)
|
||||
prty = 2;
|
||||
else
|
||||
prty = sttcnt(prevclgrm, hinsi1);
|
||||
prty = sttcnt(prevclgrm, hinshi1);
|
||||
}
|
||||
|
||||
|
||||
if (hinsi1 >= SETUBI_1 && hinsi1 <= SETUBI_9 && (!prev)) {
|
||||
if(hinshi1 >= SETSUBI_1 && hinshi1 <= SETSUBI_9 && (!prev)) {
|
||||
prty = 1;
|
||||
goto finish;
|
||||
}
|
||||
|
||||
cl2rec = maxclptr;
|
||||
keeplen = cl2rec -> cllen;
|
||||
cl2rec = maxclptr;
|
||||
keeplen = cl2rec->cllen;
|
||||
|
||||
if (clrec->right == R_WO || clrec->right == R_WO_S ||
|
||||
clrec->right == R_NI1 || clrec->right == R_DRENYOU2) {
|
||||
while (cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
if (cl2rec->kubun == K_DOUSHI) {
|
||||
if(clrec->right == R_WO || clrec->right == R_WO_S ||
|
||||
clrec->right == R_NI1 || clrec->right == R_DRENYOU2) {
|
||||
while(cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
if(cl2rec->kubun == K_DOUSHI) {
|
||||
prty = 14;
|
||||
goto finish;
|
||||
}
|
||||
|
|
@ -164,42 +152,40 @@ CLREC *clrec;
|
|||
}
|
||||
}
|
||||
|
||||
else if (clrec->right == R_SETTOU) {
|
||||
else if(clrec->right == R_SETTOU) {
|
||||
prty = 0;
|
||||
while (cl2rec && (int)cl2rec -> cllen == keeplen) {
|
||||
if (cl2rec -> jnode -> sttofs )
|
||||
while(cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
if(cl2rec->jnode->sttofs)
|
||||
i = 2;
|
||||
else
|
||||
i = sttcnt(hinsi1, cl2rec->jnode->hinsi);
|
||||
i = sttcnt(hinshi1, cl2rec->jnode->hinshi);
|
||||
|
||||
if (i > prty)
|
||||
if(i > prty)
|
||||
prty = i;
|
||||
cl2rec = cl2rec -> clsort;
|
||||
cl2rec = cl2rec->clsort;
|
||||
}
|
||||
goto finish;
|
||||
}
|
||||
|
||||
else if (istaigen(clrec->right)) {
|
||||
else if(istaigen(clrec->right)) {
|
||||
prty = 0;
|
||||
while (cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
i = taicnt(hinsi1, cl2rec->jnode->hinsi);
|
||||
if (i > prty)
|
||||
while(cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
i = taicnt(hinshi1, cl2rec->jnode->hinshi);
|
||||
if(i > prty)
|
||||
prty = i;
|
||||
cl2rec = cl2rec->clsort;
|
||||
}
|
||||
if (clrec->jnode->stbofs) {
|
||||
if(clrec->jnode->stbofs) {
|
||||
prty -= 3;
|
||||
}
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
||||
prty = Termtbl[clrec->right];
|
||||
|
||||
|
||||
if (prty & RENTAI) {
|
||||
while (cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
if (cl2rec -> kubun == K_TAIGEN) {
|
||||
if(prty & RENTAI) {
|
||||
while(cl2rec && (int)cl2rec->cllen == keeplen) {
|
||||
if(cl2rec->kubun == K_TAIGEN) {
|
||||
prty &= GETPRI;
|
||||
goto finish;
|
||||
}
|
||||
|
|
@ -211,15 +197,14 @@ CLREC *clrec;
|
|||
else {
|
||||
prty &= GETPRI;
|
||||
|
||||
if (prty == P_RENYOU_J || prty == P_RENYOU_M ) {
|
||||
while (clrec->cllen != 1 && cl2rec &&
|
||||
(int)cl2rec->cllen == keeplen ) {
|
||||
if (cl2rec->kubun == K_DOUSHI) {
|
||||
if(prty == P_RENYOU_J || prty == P_RENYOU_M) {
|
||||
while(clrec->cllen != 1 && cl2rec &&
|
||||
(int)cl2rec->cllen == keeplen) {
|
||||
if(cl2rec->kubun == K_DOUSHI) {
|
||||
prty = 6;
|
||||
goto finish;
|
||||
}
|
||||
else if (cl2rec->jnode->hinsi == SETUBI_1 ||
|
||||
cl2rec->jnode->hinsi == SETUBI_2) {
|
||||
} else if(cl2rec->jnode->hinshi == SETSUBI_1 ||
|
||||
cl2rec->jnode->hinshi == SETSUBI_2) {
|
||||
prty = 7;
|
||||
goto finish;
|
||||
}
|
||||
|
|
@ -229,56 +214,53 @@ CLREC *clrec;
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
finish:
|
||||
cl2rec = maxclptr;
|
||||
|
||||
if (hinsi1 == SUUSI) prty -= 4;
|
||||
if(hinshi1 == SUUSHI) prty -= 4;
|
||||
|
||||
if (cl2rec -> jnode -> hinsi == SUUSI) prty -= 3;
|
||||
if(cl2rec->jnode->hinshi == SUUSHI) prty -= 3;
|
||||
|
||||
if (cl2rec->jnode->class == C_DICT &&
|
||||
cl2rec->jnode->jlen == 1 && (cl2rec->kubun != K_DOUSHI)) {
|
||||
if(cl2rec->jnode->class == C_DICT &&
|
||||
cl2rec->jnode->jlen == 1 && (cl2rec->kubun != K_DOUSHI)) {
|
||||
prty -= 2;
|
||||
}
|
||||
|
||||
if ((!istaigen(clrec->right)) && (cl2rec->jnode->hinsi == SETUBI_2)) {
|
||||
if((!istaigen(clrec->right)) && (cl2rec->jnode->hinshi == SETSUBI_2)) {
|
||||
prty -= 4;
|
||||
}
|
||||
|
||||
prty += 20 - clrec->cllen + clrec->jnode->jlen + clrec->gobiln;
|
||||
return(prty + prev);
|
||||
return (prty + prev);
|
||||
}
|
||||
|
||||
void pritiny() {
|
||||
CLREC* clrec;
|
||||
int keeplen;
|
||||
int i, prty = 0;
|
||||
|
||||
void pritiny()
|
||||
{
|
||||
CLREC *clrec;
|
||||
int keeplen;
|
||||
int i, prty = 0;
|
||||
clrec = selcl;
|
||||
keeplen = clrec->cllen;
|
||||
|
||||
clrec = selcl;
|
||||
keeplen = clrec -> cllen;
|
||||
|
||||
if (istaigen(prevclrow)) {
|
||||
while (clrec && (int)clrec -> cllen == keeplen) {
|
||||
i = taicnt(prevclgrm, clrec -> jnode -> hinsi);
|
||||
if (i > prty) {
|
||||
if(istaigen(prevclrow)) {
|
||||
while(clrec && (int)clrec->cllen == keeplen) {
|
||||
i = taicnt(prevclgrm, clrec->jnode->hinshi);
|
||||
if(i > prty) {
|
||||
selcl = clrec;
|
||||
prty = i;
|
||||
prty = i;
|
||||
}
|
||||
clrec = clrec -> clsort;
|
||||
clrec = clrec->clsort;
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
while (clrec && (int)clrec -> cllen == keeplen) {
|
||||
if (clrec -> jnode -> hinsi >= MYOUJI &&
|
||||
clrec -> jnode -> hinsi <= KEN_KU)
|
||||
clrec = clrec -> clsort;
|
||||
while(clrec && (int)clrec->cllen == keeplen) {
|
||||
if(clrec->jnode->hinshi >= MYOUJI &&
|
||||
clrec->jnode->hinshi <= KEN_KU)
|
||||
clrec = clrec->clsort;
|
||||
|
||||
else if (clrec -> jnode -> hinsi == TANKANJI)
|
||||
else if(clrec->jnode->hinshi == TANKANJI)
|
||||
return;
|
||||
else {
|
||||
selcl = clrec;
|
||||
|
|
@ -287,4 +269,3 @@ void pritiny()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
252
prtytbl.c
252
prtytbl.c
|
|
@ -27,76 +27,214 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: prtytbl.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:02:11 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "sj_rename.h"
|
||||
#include "sj_typedef.h"
|
||||
|
||||
unsigned char taipri[7][45] = {
|
||||
unsigned char taipri[7][45] = {
|
||||
|
||||
{ 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 3, 20, 4, 3, 3, 4, 4, 4, 4,
|
||||
4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||
{0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 3, 20, 4, 3, 3, 4, 4, 4, 4,
|
||||
4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||
|
||||
{ 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||
{0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||
|
||||
{ 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6},
|
||||
{0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6},
|
||||
|
||||
{ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 3, 3, 3, 4, 5, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 4, 4, 4, 4, 6},
|
||||
{0, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 3, 3, 3, 3, 3, 3, 0, 0,
|
||||
0, 3, 3, 3, 4, 5, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 4, 4, 4, 4, 6},
|
||||
|
||||
{ 0, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 4, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 4, 4, 4, 20, 20, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6},
|
||||
{0, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 4, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 4, 4, 4, 20, 20, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6},
|
||||
|
||||
{ 0, 8, 8, 8, 8, 8, 7, 8, 8, 8,
|
||||
8, 8, 3, 6, 7, 3, 3, 5, 0, 0,
|
||||
0, 3, 3, 3, 3, 3, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 8, 8, 11, 5, 7, 7, 7, 7, 7},
|
||||
{0, 8, 8, 8, 8, 8, 7, 8, 8, 8,
|
||||
8, 8, 3, 6, 7, 3, 3, 5, 0, 0,
|
||||
0, 3, 3, 3, 3, 3, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 8, 8, 11, 5, 7, 7, 7, 7, 7},
|
||||
|
||||
{ 0, 5, 6, 6, 6, 6, 5, 6, 6, 6,
|
||||
6, 6, 3, 3, 3, 3, 3, 5, 0, 0,
|
||||
0, 3, 3, 3, 3, 3, 5, 5, 5, 5,
|
||||
4, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5}
|
||||
};
|
||||
{0, 5, 6, 6, 6, 6, 5, 6, 6, 6,
|
||||
6, 6, 3, 3, 3, 3, 3, 5, 0, 0,
|
||||
0, 3, 3, 3, 3, 3, 5, 5, 5, 5,
|
||||
4, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5}};
|
||||
|
||||
unsigned char sttpri[5][31] = {
|
||||
|
||||
{
|
||||
0,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
2,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
},
|
||||
|
||||
unsigned char sttpri[5][31] = {
|
||||
{
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
10,
|
||||
10,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
},
|
||||
|
||||
{ 0, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 2, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
|
||||
{
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
10,
|
||||
10,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
},
|
||||
|
||||
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 4, 4, 4, 10, 10, 4, 4, 4, 4, 4, },
|
||||
{
|
||||
0,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
15,
|
||||
},
|
||||
|
||||
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, },
|
||||
|
||||
{ 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, },
|
||||
|
||||
{ 0, 12, 12, 12, 12, 12, 12, 12, 12, 12,
|
||||
12, 12, 9, 9, 9, 9, 9, 9, 0, 0,
|
||||
0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }
|
||||
};
|
||||
{
|
||||
0,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
9,
|
||||
9,
|
||||
9,
|
||||
9,
|
||||
9,
|
||||
9,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
}};
|
||||
|
|
|
|||
240
readline.c
240
readline.c
|
|
@ -27,15 +27,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: readline.c,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:00:44 $
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "sj_euc.h"
|
||||
|
|
@ -43,139 +34,122 @@
|
|||
#include "sj_macro.h"
|
||||
#include "dicttool.h"
|
||||
|
||||
|
||||
/* static long lineloc; */
|
||||
static int yomi[MaxYomiLength + 1];
|
||||
static int kanji[MaxKanjiLength + 1];
|
||||
static int hinsi[MaxHinsiNumber + 1];
|
||||
static int atr[MaxAtrNumber + 1];
|
||||
|
||||
|
||||
static int yomi[MaxYomiLength + 1];
|
||||
static int kanji[MaxKanjiLength + 1];
|
||||
static int hinshi[MaxHinshiNumber + 1];
|
||||
static int atr[MaxAtrNumber + 1];
|
||||
|
||||
static void
|
||||
error(char *s)
|
||||
{
|
||||
if (s) fprintf(stderr, "%s\n", s);
|
||||
error(char* s) {
|
||||
if(s) fprintf(stderr, "%s\n", s);
|
||||
mark_file(stderr);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
readchar(void)
|
||||
{
|
||||
int c1;
|
||||
int c2;
|
||||
readchar(void) {
|
||||
int c1;
|
||||
int c2;
|
||||
|
||||
c1 = getch();
|
||||
if(c1 == EOF) return EOF;
|
||||
|
||||
c1 = getch(); if (c1 == EOF) return EOF;
|
||||
|
||||
|
||||
if (c1 != SS3) {
|
||||
if (c1 & 0x80) {
|
||||
c2 = getch(); if (c2 == EOF) error(NULL);
|
||||
if(c1 != SS3) {
|
||||
if(c1 & 0x80) {
|
||||
c2 = getch();
|
||||
if(c2 == EOF) error(NULL);
|
||||
c1 = ((c1 & 0xff) << 8) + (c2 & 0xff);
|
||||
}
|
||||
} else {
|
||||
c2 = getch(); if (c2 == EOF) error(NULL);
|
||||
c2 = getch();
|
||||
if(c2 == EOF) error(NULL);
|
||||
c1 = ((c1 & 0xff) << 8) + (c2 & 0xff);
|
||||
c2 = getch(); if (c2 == EOF) error(NULL);
|
||||
c2 = getch();
|
||||
if(c2 == EOF) error(NULL);
|
||||
c1 = ((c1 & 0xffff) << 8) + (c2 & 0xff);
|
||||
}
|
||||
|
||||
return c1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
skip_blank(void)
|
||||
{
|
||||
int c;
|
||||
skip_blank(void) {
|
||||
int c;
|
||||
|
||||
c = readchar();
|
||||
while (Isblank(c)) c = readchar();
|
||||
|
||||
while(Isblank(c)) c = readchar();
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
readhinsi(void)
|
||||
{
|
||||
static int c = 0;
|
||||
int i;
|
||||
unsigned char hinsi[128];
|
||||
int flg;
|
||||
readhinshi(void) {
|
||||
static int c = 0;
|
||||
int i;
|
||||
unsigned char hinshi[128];
|
||||
int flg;
|
||||
|
||||
retry:
|
||||
|
||||
if (c == '\n') {
|
||||
if(c == '\n') {
|
||||
c = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
c = skip_blank();
|
||||
if (c == '\n') {
|
||||
if(c == '\n') {
|
||||
c = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0 ; !Isblank(c) ; ) {
|
||||
if (c == '\n' || c == ':') break;
|
||||
if (Isillegal(c)) error(IllegalFormat);
|
||||
if (c > 0xffffff) {
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 24) & 0xff);
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 16) & 0xff);
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 8) & 0xff);
|
||||
} else if (c > 0xffff) {
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 16) & 0xff);
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 8) & 0xff);
|
||||
} else if (c > 0xff) {
|
||||
if (i >= 126) error(TooLongHinsi);
|
||||
hinsi[i++] = ((c >> 8) & 0xff);
|
||||
for(i = 0; !Isblank(c);) {
|
||||
if(c == '\n' || c == ':') break;
|
||||
if(Isillegal(c)) error(IllegalFormat);
|
||||
if(c > 0xffffff) {
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 24) & 0xff);
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 16) & 0xff);
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 8) & 0xff);
|
||||
} else if(c > 0xffff) {
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 16) & 0xff);
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 8) & 0xff);
|
||||
} else if(c > 0xff) {
|
||||
if(i >= 126) error(TooLongHinshi);
|
||||
hinshi[i++] = ((c >> 8) & 0xff);
|
||||
}
|
||||
if (i >= 127) error(TooLongHinsi);
|
||||
hinsi[i++] = (c & 0xff);
|
||||
c = readchar();
|
||||
if(i >= 127) error(TooLongHinshi);
|
||||
hinshi[i++] = (c & 0xff);
|
||||
c = readchar();
|
||||
}
|
||||
|
||||
if(i == 0) return 0;
|
||||
|
||||
if (i == 0) return 0;
|
||||
|
||||
|
||||
if (hinsi[0] == '[' && hinsi[i - 1] == ']') {
|
||||
hinsi[i - 1] = 0;
|
||||
i = cnvhinsi(hinsi + 1);
|
||||
if (i > 0) {
|
||||
if(hinshi[0] == '[' && hinshi[i - 1] == ']') {
|
||||
hinshi[i - 1] = 0;
|
||||
i = cnvhinshi(hinshi + 1);
|
||||
if(i > 0) {
|
||||
fprintf(stderr, "\311\312\273\354 \"%s\" \244\313\263\347\270\314\244\254\244\304\244\244\244\306\244\244\244\353\n",
|
||||
hinsi + 1);
|
||||
}
|
||||
else if (!i) {
|
||||
hinshi + 1);
|
||||
} else if(!i) {
|
||||
|
||||
fprintf(stderr, "\"%s\" \244\254\245\263\241\274\245\311\262\275\244\307\244\255\244\336\244\273\244\363\n",
|
||||
hinsi + 1);
|
||||
hinshi + 1);
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
hinsi[i] = 0;
|
||||
i = cnvhinsi(hinsi);
|
||||
if (!i) {
|
||||
hinshi[i] = 0;
|
||||
i = cnvhinshi(hinshi);
|
||||
if(!i) {
|
||||
|
||||
fprintf(stderr, "\"%s\" \244\254\245\263\241\274\245\311\262\275\244\307\244\255\244\336\244\273\244\363\n", hinsi);
|
||||
fprintf(stderr, "\"%s\" \244\254\245\263\241\274\245\311\262\275\244\307\244\255\244\336\244\273\244\363\n", hinshi);
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
|
@ -183,93 +157,75 @@ retry:
|
|||
return i;
|
||||
}
|
||||
|
||||
int* readline(void) {
|
||||
int c;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
|
||||
int*
|
||||
readline(void)
|
||||
{
|
||||
int c;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
|
||||
for ( ; ; ) {
|
||||
for(;;) {
|
||||
|
||||
mark_file(NULL);
|
||||
|
||||
c = skip_blank();
|
||||
|
||||
|
||||
if (c == '#') {
|
||||
while (c != '\n') c = skip_blank();
|
||||
if(c == '#') {
|
||||
while(c != '\n') c = skip_blank();
|
||||
}
|
||||
|
||||
if(c == EOF) return NULL;
|
||||
|
||||
if (c == EOF) return NULL;
|
||||
|
||||
|
||||
if (c != '\n') break;
|
||||
if(c != '\n') break;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0 ; !Isblank(c) ; ) {
|
||||
if (Isillegal(c)) error(IllegalFormat);
|
||||
if (i >= MaxYomiLength) error(TooLongYomi);
|
||||
for(i = 0; !Isblank(c);) {
|
||||
if(Isillegal(c)) error(IllegalFormat);
|
||||
if(i >= MaxYomiLength) error(TooLongYomi);
|
||||
yomi[i++] = c;
|
||||
c = readchar();
|
||||
c = readchar();
|
||||
}
|
||||
yomi[i] = 0;
|
||||
if (i == 0) error(NoYomiString);
|
||||
|
||||
if(i == 0) error(NoYomiString);
|
||||
|
||||
c = skip_blank();
|
||||
|
||||
|
||||
if (c != '"') {
|
||||
for (i = 0 ; !Isblank(c) ; ) {
|
||||
if (Isillegal(c)) error(IllegalFormat);
|
||||
if (i >= MaxKanjiLength) error(TooLongKanji);
|
||||
if(c != '"') {
|
||||
for(i = 0; !Isblank(c);) {
|
||||
if(Isillegal(c)) error(IllegalFormat);
|
||||
if(i >= MaxKanjiLength) error(TooLongKanji);
|
||||
kanji[i++] = c;
|
||||
c = readchar();
|
||||
c = readchar();
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
c = readchar();
|
||||
for (i = 0 ; c != '"' ; ) {
|
||||
if (Isillegal(c)) error(IllegalFormat);
|
||||
if (i >= MaxKanjiLength) error(TooLongKanji);
|
||||
for(i = 0; c != '"';) {
|
||||
if(Isillegal(c)) error(IllegalFormat);
|
||||
if(i >= MaxKanjiLength) error(TooLongKanji);
|
||||
kanji[i++] = c;
|
||||
c = readchar();
|
||||
c = readchar();
|
||||
}
|
||||
}
|
||||
kanji[i] = 0;
|
||||
if (i == 0) error(NoKanjiString);
|
||||
|
||||
if(i == 0) error(NoKanjiString);
|
||||
|
||||
i = j = 0;
|
||||
while ((c = readhinsi())!=0) {
|
||||
if (c < 0) {
|
||||
if (i >= MaxAtrNumber) error(TooManyAtr);
|
||||
while((c = readhinshi()) != 0) {
|
||||
if(c < 0) {
|
||||
if(i >= MaxAtrNumber) error(TooManyAtr);
|
||||
atr[i++] = -c;
|
||||
}
|
||||
else {
|
||||
if (j >= MaxHinsiNumber) error(TooManyHinsi);
|
||||
hinsi[j++] = c;
|
||||
} else {
|
||||
if(j >= MaxHinshiNumber) error(TooManyHinshi);
|
||||
hinshi[j++] = c;
|
||||
}
|
||||
}
|
||||
atr[i] = 0;
|
||||
if (j == 0) hinsi[j++] = HinsiTankan;
|
||||
hinsi[j] = 0;
|
||||
|
||||
if(j == 0) hinshi[j++] = HinshiTankan;
|
||||
hinshi[j] = 0;
|
||||
|
||||
return yomi;
|
||||
}
|
||||
|
||||
void setline(void (*func)(int*, int*, int, int*)) {
|
||||
int i;
|
||||
|
||||
void
|
||||
setline(void (*func)(int*, int*, int, int*))
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0 ; hinsi[i] ; i++) (*func)(yomi, kanji, hinsi[i], atr);
|
||||
for(i = 0; hinshi[i]; i++) (*func)(yomi, kanji, hinshi[i], atr);
|
||||
}
|
||||
|
|
|
|||
73
rk.h
73
rk.h
|
|
@ -27,56 +27,47 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: rk.h,v $
|
||||
* $SonyRevision: 1.1 $
|
||||
* $SonyDate: 1994/06/03 08:03:48 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "wchar16.h"
|
||||
|
||||
#define SPACE 0x20
|
||||
#define TAB 0x09
|
||||
#define EOL 0x0a
|
||||
#define NSTR '\0'
|
||||
#define SPACE 0x20
|
||||
#define TAB 0x09
|
||||
#define EOL 0x0a
|
||||
#define NSTR '\0'
|
||||
#ifndef ESC
|
||||
#define ESC 0x1b
|
||||
#define ESC 0x1b
|
||||
#endif
|
||||
#define QUOTA '\''
|
||||
#define BSL '\\'
|
||||
#define MASK 0xff
|
||||
#define QUOTA '\''
|
||||
#define BSL '\\'
|
||||
#define MASK 0xff
|
||||
|
||||
#define MAXLEN 256
|
||||
#define MAXWLEN 16
|
||||
#define MAXLLEN 64
|
||||
#define MAXCODE 256
|
||||
#define MAXLEN 256
|
||||
#define MAXWLEN 16
|
||||
#define MAXLLEN 64
|
||||
#define MAXCODE 256
|
||||
|
||||
#define CONTINUE 0
|
||||
#define NOMACH -1
|
||||
#define FAIL -1
|
||||
#define RKEND 0xffffffff
|
||||
#define ERRBEL 0xfffffffc
|
||||
#define ERRCODE 0x80000000
|
||||
#define RKMASK 0x0000ffff
|
||||
#define RKZEN 0xff00
|
||||
#define CONTINUE 0
|
||||
#define NOMACH -1
|
||||
#define FAIL -1
|
||||
#define RKEND 0xffffffff
|
||||
#define ERRBEL 0xfffffffc
|
||||
#define ERRCODE 0x80000000
|
||||
#define RKMASK 0x0000ffff
|
||||
#define RKZEN 0xff00
|
||||
|
||||
#define SetMojilen(c) ((c << 16) & 0x00ff0000)
|
||||
#define GetMojilen(c) ((c & ERRCODE) ? (1) : ((c >> 16) & 0xff))
|
||||
#define SetMojilen(c) ((c << 16) & 0x00ff0000)
|
||||
#define GetMojilen(c) ((c & ERRCODE) ? (1) : ((c >> 16) & 0xff))
|
||||
|
||||
typedef struct rktable_w16 {
|
||||
wchar16_t *r_key;
|
||||
unsigned short *k_yomi;
|
||||
wchar16_t *r_str;
|
||||
struct rktable_w16 *next;
|
||||
typedef struct rktable_w16 {
|
||||
wchar16_t* r_key;
|
||||
unsigned short* k_yomi;
|
||||
wchar16_t* r_str;
|
||||
struct rktable_w16* next;
|
||||
} RkTablW16;
|
||||
|
||||
typedef struct rktable {
|
||||
unsigned char *r_key;
|
||||
unsigned short *k_yomi;
|
||||
unsigned char *r_str;
|
||||
struct rktable *next;
|
||||
typedef struct rktable {
|
||||
unsigned char* r_key;
|
||||
unsigned short* k_yomi;
|
||||
unsigned char* r_str;
|
||||
struct rktable* next;
|
||||
} RkTabl;
|
||||
|
||||
|
|
|
|||
397
romaji.c
397
romaji.c
|
|
@ -27,50 +27,40 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* $SonyRCSfile: romaji.c,v $
|
||||
* $SonyRevision: 1.2 $
|
||||
* $SonyDate: 1997/01/23 11:09:37 $
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "common.h"
|
||||
#include "rk.h"
|
||||
#include "key.h"
|
||||
|
||||
extern int rkerrbell;
|
||||
|
||||
|
||||
|
||||
exec_romaji(c)
|
||||
wchar16_t c;
|
||||
wchar16_t c;
|
||||
{
|
||||
Conversion *cv;
|
||||
wchar16_t *p;
|
||||
Conversion* cv;
|
||||
wchar16_t* p;
|
||||
unsigned short c1, cc;
|
||||
unsigned int c2;
|
||||
unsigned int c2;
|
||||
unsigned short op;
|
||||
unsigned char mode;
|
||||
int len, i;
|
||||
unsigned int rkstr[MAXLLEN], *rkp;
|
||||
extern char erase_str[];
|
||||
unsigned char mode;
|
||||
int len, i;
|
||||
unsigned int rkstr[MAXLLEN], *rkp;
|
||||
extern char erase_str[];
|
||||
|
||||
cv = GetConversion ();
|
||||
cv = GetConversion();
|
||||
op = cv->out_point;
|
||||
|
||||
if (!is_bs(c) && BuffYes()) {
|
||||
if ((unsigned int) cv->ha_point + hs_point >= BUFFLENGTH - 2 &&
|
||||
!iswcntrl(c)) {
|
||||
if(!is_bs(c) && BuffYes()) {
|
||||
if((unsigned int)cv->ha_point + hs_point >= BUFFLENGTH - 2 &&
|
||||
!iswcntrl(c)) {
|
||||
beep();
|
||||
return(1);
|
||||
return (1);
|
||||
}
|
||||
cv->Halpha[cv->ha_point++] = c;
|
||||
}
|
||||
|
||||
if ((mode = cv->Imode) & MODE_CONV) {
|
||||
if((mode = cv->Imode) & MODE_CONV) {
|
||||
sj3_rkconvc(c, rkstr);
|
||||
} else if (mode == MODE_CODE) {
|
||||
} else if(mode == MODE_CODE) {
|
||||
codeconv(c, rkstr);
|
||||
} else {
|
||||
rkstr[0] = SetMojilen(1) + c;
|
||||
|
|
@ -78,30 +68,30 @@ wchar16_t c;
|
|||
}
|
||||
|
||||
rkp = rkstr;
|
||||
i = 1;
|
||||
i = 1;
|
||||
while(*rkp != RKEND) {
|
||||
c1 = ((c2 = *rkp++) & RKMASK);
|
||||
if (c2 == ERRBEL) {
|
||||
if(c2 == ERRBEL) {
|
||||
beep();
|
||||
cv->ha_point--;
|
||||
break;
|
||||
}
|
||||
if (is_bs(c1)) {
|
||||
if (op <= 0) {
|
||||
if (os_point <= 0) {
|
||||
if(is_bs(c1)) {
|
||||
if(op <= 0) {
|
||||
if(os_point <= 0) {
|
||||
master_write(erase_str, 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (WcIsZENKAKU(cv->out_buf[op - 1])) {
|
||||
if(WcIsZENKAKU(cv->out_buf[op - 1])) {
|
||||
vbackchar(2);
|
||||
op -=1;
|
||||
op -= 1;
|
||||
} else {
|
||||
vbackchar(1);
|
||||
op--;
|
||||
}
|
||||
cv->out_point = op;
|
||||
if (BuffYes() && is_bs(c)) {
|
||||
if (!(cv->out_mode[op] & OMODE_MASK))
|
||||
if(BuffYes() && is_bs(c)) {
|
||||
if(!(cv->out_mode[op] & OMODE_MASK))
|
||||
chhstr(cv->Halpha, cv->out_buf,
|
||||
cv->out_mode, op);
|
||||
cv->ha_point = getipos(op);
|
||||
|
|
@ -109,111 +99,108 @@ wchar16_t c;
|
|||
}
|
||||
continue;
|
||||
}
|
||||
if (WcIsZENKAKU(c1)) {
|
||||
if (op >= 1 && (cc = addten(op - 1, c1)) != 0) {
|
||||
if(WcIsZENKAKU(c1)) {
|
||||
if(op >= 1 && (cc = addten(op - 1, c1)) != 0) {
|
||||
c1 = cc;
|
||||
vbackchar(2);
|
||||
op -= 1;
|
||||
cv->out_point = op;
|
||||
len = cv->out_mode[op] + GetMojilen(c2);
|
||||
c2 = SetMojilen(len);
|
||||
len = cv->out_mode[op] + GetMojilen(c2);
|
||||
c2 = SetMojilen(len);
|
||||
} else {
|
||||
if (!GetMojilen(c2) && (mode == MODE_CODE))
|
||||
c2 = SetMojilen(1);
|
||||
if(!GetMojilen(c2) && (mode == MODE_CODE))
|
||||
c2 = SetMojilen(1);
|
||||
}
|
||||
if (mode == MODE_ZKATA) {
|
||||
if(mode == MODE_ZKATA) {
|
||||
c1 = sj_tokata(c1);
|
||||
} else if (mode == MODE_HKATA) {
|
||||
} else if(mode == MODE_HKATA) {
|
||||
c1 = sj_zen2han(c1);
|
||||
}
|
||||
} else {
|
||||
if ((c2 & ERRCODE) && is_bs(c))
|
||||
if((c2 & ERRCODE) && is_bs(c))
|
||||
cv->Halpha[cv->ha_point++] = c1;
|
||||
if (WcIsKANJI(c1)) {
|
||||
if(WcIsKANJI(c1)) {
|
||||
c2 = SetMojilen(1);
|
||||
} else if (iswcntrl(c1) && !(c2 & ERRCODE)) {
|
||||
if (BuffYes())
|
||||
} else if(iswcntrl(c1) && !(c2 & ERRCODE)) {
|
||||
if(BuffYes())
|
||||
cv->ha_point--;
|
||||
sj3_rkreset();
|
||||
i = 0;
|
||||
break;
|
||||
} else if (mode & MODE_ZEN) {
|
||||
} else if(mode & MODE_ZEN) {
|
||||
c1 = sj_han2zen(c1);
|
||||
if (mode == MODE_ZKATA)
|
||||
if(mode == MODE_ZKATA)
|
||||
c1 = sj_tokata(c1);
|
||||
if (op >=1 && (cc = addten(op-1, c1)) != 0){
|
||||
if(op >= 1 && (cc = addten(op - 1, c1)) != 0) {
|
||||
c1 = cc;
|
||||
vbackchar(2);
|
||||
op --;
|
||||
op--;
|
||||
cv->out_point = op;
|
||||
len = cv->out_mode[op]
|
||||
+ GetMojilen(c2);
|
||||
c2 = SetMojilen(len);
|
||||
len = cv->out_mode[op] + GetMojilen(c2);
|
||||
c2 = SetMojilen(len);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((unsigned int)cv->out_point + os_point >= BUFFLENGTH * 2 - 2) {
|
||||
if((unsigned int)cv->out_point + os_point >= BUFFLENGTH * 2 - 2) {
|
||||
beep();
|
||||
op = cv->out_point;
|
||||
break;
|
||||
}
|
||||
if (WcIsZENKAKU(c1)) {
|
||||
cv->out_buf[op] = c1;
|
||||
cv->in_mode[op] = mode;
|
||||
if(WcIsZENKAKU(c1)) {
|
||||
cv->out_buf[op] = c1;
|
||||
cv->in_mode[op] = mode;
|
||||
cv->out_mode[op++] = GetMojilen(c2);
|
||||
if (mode == MODE_HKATA || WcIsKANA(cv->out_buf[op - 1])) {
|
||||
if(mode == MODE_HKATA || WcIsKANA(cv->out_buf[op - 1])) {
|
||||
cv->out_buf[op - 1] = c1 >> 8;
|
||||
cv->out_buf[op] = c1 &MASK;
|
||||
cv->in_mode[op] = mode;
|
||||
cv->out_mode[op++] = 0;
|
||||
cv->out_buf[op] = c1 & MASK;
|
||||
cv->in_mode[op] = mode;
|
||||
cv->out_mode[op++] = 0;
|
||||
sj3_rkreset();
|
||||
}
|
||||
} else {
|
||||
cv->out_buf[op] = c1;
|
||||
cv->in_mode[op] = mode;
|
||||
cv->out_buf[op] = c1;
|
||||
cv->in_mode[op] = mode;
|
||||
cv->out_mode[op++] = GetMojilen(c2);
|
||||
}
|
||||
if (!BuffYes() && !(c2 & ERRCODE)) {
|
||||
if(!BuffYes() && !(c2 & ERRCODE)) {
|
||||
cv->out_buf[op] = '\0';
|
||||
master_out(cv->out_buf, op);
|
||||
sj3_rkreset();
|
||||
op = 0;
|
||||
}
|
||||
}
|
||||
cv->out_buf[op] = '\0';
|
||||
cv->out_buf[op] = '\0';
|
||||
cv->Halpha[cv->ha_point] = '\0';
|
||||
if (is_bs(c) && op <= 0 && os_point <= 0) {
|
||||
if(is_bs(c) && op <= 0 && os_point <= 0) {
|
||||
ResetHenkan();
|
||||
if (BuffYes()) {
|
||||
if(BuffYes()) {
|
||||
SetCflag();
|
||||
buffers_clear();
|
||||
}
|
||||
}
|
||||
else if ((len = op - cv->out_point) > 0) {
|
||||
} else if((len = op - cv->out_point) > 0) {
|
||||
p = &cv->out_buf[cv->out_point];
|
||||
if (BuffYes() && IsCflag ()) {
|
||||
Csave ();
|
||||
ClearCflag ();
|
||||
if(BuffYes() && IsCflag()) {
|
||||
Csave();
|
||||
ClearCflag();
|
||||
}
|
||||
if (mode & MODE_ZEN) {
|
||||
if (!BuffYes() && len == 2)
|
||||
if(mode & MODE_ZEN) {
|
||||
if(!BuffYes() && len == 2)
|
||||
Csave();
|
||||
vprintU(p, 1);
|
||||
} else {
|
||||
if (!BuffYes() && len == 1)
|
||||
if(!BuffYes() && len == 1)
|
||||
Csave();
|
||||
vprintU(p, 0);
|
||||
}
|
||||
}
|
||||
cv->out_point = op;
|
||||
return(i);
|
||||
return (i);
|
||||
}
|
||||
|
||||
move_cur(kval)
|
||||
int kval;
|
||||
move_cur(kval) int kval;
|
||||
{
|
||||
Conversion *cv;
|
||||
int i;
|
||||
Conversion* cv;
|
||||
int i;
|
||||
|
||||
cv = GetConversion();
|
||||
switch(kval) {
|
||||
|
|
@ -222,112 +209,110 @@ int kval;
|
|||
break;
|
||||
case KEY_END:
|
||||
cv->out_point = cv->out_epoint;
|
||||
cv->ha_point = cv->ha_epoint;
|
||||
cv->ha_point = cv->ha_epoint;
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
if ((i = cv->out_point) > 0) {
|
||||
if((i = cv->out_point) > 0) {
|
||||
i--;
|
||||
if (i > 0 && (WcIsZENKAKU(cv->out_buf[i])))
|
||||
if(i > 0 && (WcIsZENKAKU(cv->out_buf[i])))
|
||||
i--;
|
||||
cv->out_point = i;
|
||||
}
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
if ((i = cv->out_point) < cv->out_epoint) {
|
||||
if((i = cv->out_point) < cv->out_epoint) {
|
||||
i++;
|
||||
if (i < cv->out_epoint && (WcIsZENKAKU(cv->out_buf[i])))
|
||||
if(i < cv->out_epoint && (WcIsZENKAKU(cv->out_buf[i])))
|
||||
i++;
|
||||
cv->out_point = i;
|
||||
if (cv->out_point >= cv->out_epoint)
|
||||
if(cv->out_point >= cv->out_epoint)
|
||||
cv->ha_point = cv->ha_epoint;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (cv->out_point != cv->Vlen) {
|
||||
if(cv->out_point != cv->Vlen) {
|
||||
Cgoto(cv->out_point);
|
||||
if (cv->out_point == cv->out_epoint) {
|
||||
if(cv->out_point == cv->out_epoint) {
|
||||
os_point = 0;
|
||||
hs_point = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addten(pos, c)
|
||||
unsigned short pos, c;
|
||||
addten(pos, c) unsigned short pos, c;
|
||||
{
|
||||
unsigned short prefix;
|
||||
Conversion *cv;
|
||||
Conversion* cv;
|
||||
|
||||
cv = GetConversion();
|
||||
cv = GetConversion();
|
||||
prefix = cv->out_buf[pos];
|
||||
return(sj_addten(prefix, c));
|
||||
return (sj_addten(prefix, c));
|
||||
}
|
||||
|
||||
getipos(pos)
|
||||
unsigned short pos;
|
||||
getipos(pos) unsigned short pos;
|
||||
{
|
||||
Conversion *cv;
|
||||
Conversion* cv;
|
||||
|
||||
cv = GetConversion();
|
||||
return(getipos2(cv->out_mode, pos));
|
||||
return (getipos2(cv->out_mode, pos));
|
||||
}
|
||||
|
||||
getipos2(omode, pos)
|
||||
unsigned short *omode;
|
||||
getipos2(omode, pos) unsigned short* omode;
|
||||
unsigned short pos;
|
||||
{
|
||||
unsigned short ipos;
|
||||
int i;
|
||||
int i;
|
||||
|
||||
ipos = 0;
|
||||
for (i = 0; i < (unsigned int)pos; i++) {
|
||||
for(i = 0; i < (unsigned int)pos; i++) {
|
||||
ipos += omode[i] & OMODE_MASK;
|
||||
}
|
||||
return(ipos);
|
||||
return (ipos);
|
||||
}
|
||||
|
||||
sj_rkconv(s1, s2, len)
|
||||
wchar16_t *s1, *s2;
|
||||
wchar16_t* s1,
|
||||
*s2;
|
||||
int len;
|
||||
{
|
||||
int i, rlen;
|
||||
unsigned int *kp;
|
||||
int res, klen;
|
||||
wchar16_t roma[SHORTBUFFSIZE + 1];
|
||||
unsigned int kstr[MAXLLEN];
|
||||
int i, rlen;
|
||||
unsigned int* kp;
|
||||
int res, klen;
|
||||
wchar16_t roma[SHORTBUFFSIZE + 1];
|
||||
unsigned int kstr[MAXLLEN];
|
||||
|
||||
sj3_rkebell(0);
|
||||
klen = 0;
|
||||
res = 0;
|
||||
while (len > 0) {
|
||||
if (len + res > SHORTBUFFSIZE) {
|
||||
res = 0;
|
||||
while(len > 0) {
|
||||
if(len + res > SHORTBUFFSIZE) {
|
||||
i = SHORTBUFFSIZE - res;
|
||||
len -= i;
|
||||
} else {
|
||||
i = len;
|
||||
i = len;
|
||||
len = 0;
|
||||
}
|
||||
Strncpy(&roma[res], s2, i);
|
||||
s2 += i;
|
||||
roma[res + i] = '\0';
|
||||
rlen = sj3_rkconv2(roma, kstr, i + res - 1);
|
||||
res = wslen(roma);
|
||||
if (rlen > 0) {
|
||||
rlen = sj3_rkconv2(roma, kstr, i + res - 1);
|
||||
res = wslen(roma);
|
||||
if(rlen > 0) {
|
||||
kp = kstr;
|
||||
while (*kp != 0) {
|
||||
*s1++ = (wchar16_t) *kp++;
|
||||
while(*kp != 0) {
|
||||
*s1++ = (wchar16_t)*kp++;
|
||||
klen++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (res > 0) {
|
||||
roma[res] = 0x0a;
|
||||
if(res > 0) {
|
||||
roma[res] = 0x0a;
|
||||
roma[res + 1] = '\0';
|
||||
rlen = sj3_rkconv2(roma, kstr, res);
|
||||
if (rlen > 0) {
|
||||
rlen = sj3_rkconv2(roma, kstr, res);
|
||||
if(rlen > 0) {
|
||||
kp = kstr;
|
||||
while ((*kp & RKMASK) != 0x0a && *kp != 0) {
|
||||
*s1++ = (wchar16_t) *kp++;
|
||||
while((*kp & RKMASK) != 0x0a && *kp != 0) {
|
||||
*s1++ = (wchar16_t)*kp++;
|
||||
klen++;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -339,108 +324,109 @@ int len;
|
|||
}
|
||||
*s1 = '\0';
|
||||
sj3_rkebell(rkerrbell);
|
||||
return(klen);
|
||||
return (klen);
|
||||
}
|
||||
|
||||
sj_rkconv2(s1, s2, omode, len)
|
||||
wchar16_t *s1, *s2;
|
||||
unsigned short *omode;
|
||||
int len;
|
||||
wchar16_t* s1,
|
||||
*s2;
|
||||
unsigned short* omode;
|
||||
int len;
|
||||
{
|
||||
int i, rlen;
|
||||
unsigned int *kp;
|
||||
int res, klen, mlen;
|
||||
int i, rlen;
|
||||
unsigned int* kp;
|
||||
int res, klen, mlen;
|
||||
unsigned short cc, c, prefix;
|
||||
wchar16_t roma[SHORTBUFFSIZE + 1];
|
||||
unsigned int kstr[BUFFLENGTH];
|
||||
wchar16_t roma[SHORTBUFFSIZE + 1];
|
||||
unsigned int kstr[BUFFLENGTH];
|
||||
|
||||
sj3_rkebell(0);
|
||||
klen = 0;
|
||||
res = 0;
|
||||
klen = 0;
|
||||
res = 0;
|
||||
prefix = 0;
|
||||
while (len > 0) {
|
||||
if (len + res > SHORTBUFFSIZE) {
|
||||
while(len > 0) {
|
||||
if(len + res > SHORTBUFFSIZE) {
|
||||
i = SHORTBUFFSIZE - res;
|
||||
len -= i;
|
||||
} else {
|
||||
i = len;
|
||||
i = len;
|
||||
len = 0;
|
||||
}
|
||||
Strncpy(&roma[res], s2, i);
|
||||
s2 += i;
|
||||
roma[res + i] = '\0';
|
||||
rlen = sj3_rkconv2(roma, kstr, i + res - 1);
|
||||
/*
|
||||
* Remove warning.
|
||||
* Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
|
||||
*/
|
||||
res = strlen((char *)roma);
|
||||
if (rlen <= 0)
|
||||
rlen = sj3_rkconv2(roma, kstr, i + res - 1);
|
||||
/*
|
||||
* Remove warning.
|
||||
* Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
|
||||
*/
|
||||
res = strlen((char*)roma);
|
||||
if(rlen <= 0)
|
||||
continue;
|
||||
kp = kstr;
|
||||
while ((c = *kp & RKMASK) != 0) {
|
||||
if (c & RKZEN) {
|
||||
if ((cc = sj_addten(prefix, c)) != 0) {
|
||||
while((c = *kp & RKMASK) != 0) {
|
||||
if(c & RKZEN) {
|
||||
if((cc = sj_addten(prefix, c)) != 0) {
|
||||
omode -= 1;
|
||||
s1 -= 1;
|
||||
*omode += GetMojilen(*kp);
|
||||
c = cc;
|
||||
c = cc;
|
||||
prefix = 0;
|
||||
} else {
|
||||
*omode = GetMojilen(*kp);
|
||||
klen += 1;
|
||||
prefix = c;
|
||||
}
|
||||
*s1++ = (wchar16_t) c;
|
||||
*s1++ = (wchar16_t)c;
|
||||
omode++;
|
||||
kp++;
|
||||
} else {
|
||||
mlen = GetMojilen(*kp);
|
||||
*kp = sj_han2zen(c) + SetMojilen(mlen);
|
||||
*kp = sj_han2zen(c) + SetMojilen(mlen);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (res > 0) {
|
||||
roma[res] = 0x0a;
|
||||
if(res > 0) {
|
||||
roma[res] = 0x0a;
|
||||
roma[res + 1] = '\0';
|
||||
rlen = sj3_rkconv2(roma, kstr, res);
|
||||
if (rlen > 0) {
|
||||
rlen = sj3_rkconv2(roma, kstr, res);
|
||||
if(rlen > 0) {
|
||||
kp = kstr;
|
||||
while ((c = *kp & RKMASK) != 0x0a && c != 0) {
|
||||
if (*kp & RKZEN) {
|
||||
if ((cc = sj_addten(prefix, c)) != 0) {
|
||||
while((c = *kp & RKMASK) != 0x0a && c != 0) {
|
||||
if(*kp & RKZEN) {
|
||||
if((cc = sj_addten(prefix, c)) != 0) {
|
||||
omode -= 1;
|
||||
s1 -= 1;
|
||||
*omode += GetMojilen(*kp);
|
||||
c = cc;
|
||||
c = cc;
|
||||
prefix = 0;
|
||||
} else {
|
||||
*omode = GetMojilen(*kp);
|
||||
klen += 1;
|
||||
prefix = c;
|
||||
}
|
||||
*s1++ = (wchar16_t) c;
|
||||
*s1++ = (wchar16_t)c;
|
||||
omode++;
|
||||
kp++;
|
||||
} else {
|
||||
mlen = GetMojilen(*kp);
|
||||
*kp = sj_han2zen(c) + SetMojilen(mlen);
|
||||
*kp = sj_han2zen(c) + SetMojilen(mlen);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < res; i++) {
|
||||
if (WcIsKANJI(roma[i])) {
|
||||
c = roma[i];
|
||||
for(i = 0; i < res; i++) {
|
||||
if(WcIsKANJI(roma[i])) {
|
||||
c = roma[i];
|
||||
mlen = 1;
|
||||
} else {
|
||||
c = sj_han2zen(roma[i]);
|
||||
c = sj_han2zen(roma[i]);
|
||||
mlen = 1;
|
||||
}
|
||||
if ((cc = sj_addten(prefix, c)) != 0) {
|
||||
if((cc = sj_addten(prefix, c)) != 0) {
|
||||
s1 -= 1;
|
||||
omode -= 1;
|
||||
*omode += mlen;
|
||||
c = cc;
|
||||
c = cc;
|
||||
prefix = 0;
|
||||
} else {
|
||||
prefix = c;
|
||||
|
|
@ -454,97 +440,94 @@ int len;
|
|||
}
|
||||
*s1 = '\0';
|
||||
sj3_rkebell(rkerrbell);
|
||||
return(klen);
|
||||
return (klen);
|
||||
}
|
||||
|
||||
|
||||
|
||||
exec_romaji2(c, hbuf, kbuf, omode, cur, hcur)
|
||||
wchar16_t c, *hbuf, *kbuf;
|
||||
unsigned short *omode;
|
||||
int cur, hcur;
|
||||
wchar16_t c,
|
||||
*hbuf, *kbuf;
|
||||
unsigned short* omode;
|
||||
int cur, hcur;
|
||||
{
|
||||
unsigned short c1, cc;
|
||||
unsigned int c2;
|
||||
int i;
|
||||
int ocur, len, retv;
|
||||
unsigned int rkstr[MAXLLEN], *rkp;
|
||||
unsigned int c2;
|
||||
int i;
|
||||
int ocur, len, retv;
|
||||
unsigned int rkstr[MAXLLEN], *rkp;
|
||||
|
||||
retv = 1;
|
||||
ocur = cur;
|
||||
if (hcur >= 0 && !is_bs(c))
|
||||
if(hcur >= 0 && !is_bs(c))
|
||||
hbuf[hcur++] = c;
|
||||
sj3_rkconvc(c, rkstr);
|
||||
|
||||
rkp = rkstr;
|
||||
while(*rkp != RKEND) {
|
||||
c1 = ((c2 = *rkp++) & RKMASK);
|
||||
if (c2 == ERRBEL) {
|
||||
if (c != 0)
|
||||
if(c2 == ERRBEL) {
|
||||
if(c != 0)
|
||||
beep();
|
||||
hcur--;
|
||||
break;
|
||||
}
|
||||
if (is_bs(c1)) {
|
||||
if (cur <= 0) {
|
||||
if(is_bs(c1)) {
|
||||
if(cur <= 0) {
|
||||
beep();
|
||||
} else {
|
||||
vbackchar(2);
|
||||
cur -= 1;
|
||||
ocur = cur;
|
||||
}
|
||||
if (hcur >= 0 && is_bs(c)) {
|
||||
for (i = cur; i > 0 ; i--){
|
||||
if (omode[i] & OMODE_MASK)
|
||||
break;
|
||||
if(hcur >= 0 && is_bs(c)) {
|
||||
for(i = cur; i > 0; i--) {
|
||||
if(omode[i] & OMODE_MASK)
|
||||
break;
|
||||
}
|
||||
hcur -= omode[i];
|
||||
while (i < cur) {
|
||||
len = sj_zentohan(&hbuf[hcur],&kbuf[i],1);
|
||||
omode[i] = len;
|
||||
hcur += len;
|
||||
i ++;
|
||||
while(i < cur) {
|
||||
len = sj_zentohan(&hbuf[hcur], &kbuf[i], 1);
|
||||
omode[i] = len;
|
||||
hcur += len;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (!WcIsZENKAKU(c1)) {
|
||||
if (hcur >= 0 && (c2 & ERRCODE) && is_bs(c))
|
||||
if(!WcIsZENKAKU(c1)) {
|
||||
if(hcur >= 0 && (c2 & ERRCODE) && is_bs(c))
|
||||
hbuf[hcur++] = c1;
|
||||
if (c1 == 0) {
|
||||
if(c1 == 0) {
|
||||
hcur--;
|
||||
break;
|
||||
} else {
|
||||
if (c2 & ERRCODE)
|
||||
if(c2 & ERRCODE)
|
||||
retv = 0;
|
||||
c1 = sj_han2zen(c1);
|
||||
}
|
||||
}
|
||||
if (cur >= 1) {
|
||||
if(cur >= 1) {
|
||||
cc = kbuf[cur - 1];
|
||||
if ((cc = sj_addten(cc, c1)) != 0){
|
||||
if((cc = sj_addten(cc, c1)) != 0) {
|
||||
c1 = cc;
|
||||
vbackchar(2);
|
||||
cur --;
|
||||
cur--;
|
||||
ocur = cur;
|
||||
if (hcur >= 0) {
|
||||
if(hcur >= 0) {
|
||||
len = omode[cur] + GetMojilen(c2);
|
||||
c2 = SetMojilen(len);
|
||||
c2 = SetMojilen(len);
|
||||
}
|
||||
}
|
||||
}
|
||||
kbuf[cur] = c1;
|
||||
if (hcur >= 0) {
|
||||
if(hcur >= 0) {
|
||||
omode[cur] = GetMojilen(c2);
|
||||
}
|
||||
cur ++;
|
||||
cur++;
|
||||
}
|
||||
kbuf[cur] = '\0';
|
||||
if (hcur >= 0)
|
||||
if(hcur >= 0)
|
||||
hbuf[hcur] = '\0';
|
||||
if (cur > ocur)
|
||||
if(cur > ocur)
|
||||
vprintU(&kbuf[ocur], 1);
|
||||
return(retv);
|
||||
return (retv);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue