sj3lib: KNF
Formatter: knfmt 4.2.0 Signed-off-by: Masanori Ogino <mogino@acm.org>
This commit is contained in:
parent
b2ee9feb0c
commit
e00547f414
4 changed files with 1182 additions and 1097 deletions
455
sj3lib/level1.c
455
sj3lib/level1.c
|
|
@ -130,13 +130,13 @@ put_cmd(int cmd)
|
||||||
static u_char *
|
static u_char *
|
||||||
put_ndata(u_char *p, int n)
|
put_ndata(u_char *p, int n)
|
||||||
{
|
{
|
||||||
while (n-- > 0) put_byte(p ? *p++ : 0);
|
while (n-- > 0)
|
||||||
|
put_byte(p ? *p++ : 0);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
put_over(
|
put_over(int buflen,
|
||||||
int buflen,
|
|
||||||
int n,
|
int n,
|
||||||
u_char *(*func1)(), u_char *str1, int len1,
|
u_char *(*func1)(), u_char *str1, int len1,
|
||||||
u_char *(*func2)(), u_char *str2, int len2,
|
u_char *(*func2)(), u_char *str2, int len2,
|
||||||
|
|
@ -149,10 +149,18 @@ put_over(
|
||||||
int len[ARGNUM];
|
int len[ARGNUM];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
func[0] = func1; data[0] = str1; len[0] = len1;
|
func[0] = func1;
|
||||||
func[1] = func2; data[1] = str2; len[1] = len2;
|
data[0] = str1;
|
||||||
func[2] = func3; data[2] = str3; len[2] = len3;
|
len[0] = len1;
|
||||||
func[3] = func4; data[3] = str4; len[3] = len4;
|
func[1] = func2;
|
||||||
|
data[1] = str2;
|
||||||
|
len[1] = len2;
|
||||||
|
func[2] = func3;
|
||||||
|
data[2] = str3;
|
||||||
|
len[2] = len3;
|
||||||
|
func[3] = func4;
|
||||||
|
data[3] = str4;
|
||||||
|
len[3] = len4;
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (len[i] < buflen) {
|
if (len[i] < buflen) {
|
||||||
|
|
@ -160,8 +168,10 @@ put_over(
|
||||||
buflen -= len[i];
|
buflen -= len[i];
|
||||||
} else {
|
} else {
|
||||||
while (len[i] > 0) {
|
while (len[i] > 0) {
|
||||||
data[i] = (*func[i])(data[i], (len[i] < buflen) ? len[i] : buflen);
|
data[i] = (*func[i])(data[i],
|
||||||
if (put_flush() == ERROR) return ERROR;
|
(len[i] < buflen) ? len[i] : buflen);
|
||||||
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
len[i] -= buflen;
|
len[i] -= buflen;
|
||||||
buflen = BUFFER_SIZE;
|
buflen = BUFFER_SIZE;
|
||||||
}
|
}
|
||||||
|
|
@ -176,7 +186,8 @@ put_over(
|
||||||
static int
|
static int
|
||||||
get_buffer(void)
|
get_buffer(void)
|
||||||
{
|
{
|
||||||
if (ReadErrorFlag) return ERROR;
|
if (ReadErrorFlag)
|
||||||
|
return ERROR;
|
||||||
getpos = getlen = 0;
|
getpos = getlen = 0;
|
||||||
|
|
||||||
getlen = read(server_fd, getbuf, sizeof(getbuf));
|
getlen = read(server_fd, getbuf, sizeof(getbuf));
|
||||||
|
|
@ -241,30 +252,37 @@ get_nstring(u_char* p, int n)
|
||||||
|
|
||||||
c = get_byte();
|
c = get_byte();
|
||||||
while (c) {
|
while (c) {
|
||||||
if (n > 1) { *p++ = c; n--; }
|
if (n > 1) {
|
||||||
|
*p++ = c;
|
||||||
|
n--;
|
||||||
|
}
|
||||||
c = get_byte();
|
c = get_byte();
|
||||||
}
|
}
|
||||||
if (n > 0) *p++ = 0;
|
if (n > 0)
|
||||||
|
*p++ = 0;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u_char *
|
static u_char *
|
||||||
get_ndata(u_char *p, int n)
|
get_ndata(u_char *p, int n)
|
||||||
{
|
{
|
||||||
while (n-- > 0) *p++ = get_byte();
|
while (n-- > 0)
|
||||||
|
*p++ = get_byte();
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
skip_string(void)
|
skip_string(void)
|
||||||
{
|
{
|
||||||
while (get_byte()) ;
|
while (get_byte())
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
skip_ndata(int n)
|
skip_ndata(int n)
|
||||||
{
|
{
|
||||||
while (n-- > 0) get_byte();
|
while (n-- > 0)
|
||||||
|
get_byte();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
@ -285,8 +303,8 @@ open_unix(void)
|
||||||
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
|
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
len += sizeof(sunix.sun_len);
|
len += sizeof(sunix.sun_len);
|
||||||
#endif
|
#endif
|
||||||
if (connect(fd, (struct sockaddr *)&sunix, len)
|
if (connect(fd, (struct sockaddr *)&sunix, len) ==
|
||||||
== ERROR) {
|
ERROR) {
|
||||||
sj3_error_number = SJ3_ConnectSocket;
|
sj3_error_number = SJ3_ConnectSocket;
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
@ -351,13 +369,8 @@ open_inet(char* host)
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_make_connection(
|
sj3_make_connection(SJ3_CLIENT_ENV *client, char *serv, char *user, char *prog)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
char* serv,
|
|
||||||
char* user,
|
|
||||||
char* prog)
|
|
||||||
{
|
{
|
||||||
char host[MAXHOSTNAMELEN];
|
char host[MAXHOSTNAMELEN];
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
@ -367,13 +380,13 @@ sj3_make_connection(
|
||||||
|
|
||||||
client->fd = -1;
|
client->fd = -1;
|
||||||
|
|
||||||
if (!serv || *serv == '\0' || !strcmp(serv, af_unix_str))
|
if (!serv || *serv == '\0' || !strcmp(serv, af_unix_str)) {
|
||||||
{
|
if ((server_fd = open_unix()) == ERROR)
|
||||||
if ((server_fd = open_unix()) == ERROR) return ERROR;
|
return ERROR;
|
||||||
strcpy(host, af_unix_str);
|
strcpy(host, af_unix_str);
|
||||||
}
|
} else {
|
||||||
else {
|
if ((server_fd = open_inet(serv)) == ERROR)
|
||||||
if ((server_fd = open_inet(serv)) == ERROR) return ERROR;
|
return ERROR;
|
||||||
gethostname(host, sizeof(host));
|
gethostname(host, sizeof(host));
|
||||||
}
|
}
|
||||||
client->fd = server_fd;
|
client->fd = server_fd;
|
||||||
|
|
@ -390,25 +403,30 @@ sj3_make_connection(
|
||||||
put_string(host, hostlen);
|
put_string(host, hostlen);
|
||||||
put_string(user, userlen);
|
put_string(user, userlen);
|
||||||
put_string(prog, proglen);
|
put_string(prog, proglen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 3, put_string, host, hostlen, put_string, user,
|
if (put_over(buflen, 3, put_string, host, hostlen, put_string,
|
||||||
userlen, put_string, prog, proglen, NULL, NULL, 0) == ERROR)
|
user, userlen, put_string, prog, proglen, NULL, NULL, 0) ==
|
||||||
|
ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tmp = get_int()) == SJ3_DifferentVersion) {
|
if ((tmp = get_int()) == SJ3_DifferentVersion) {
|
||||||
if (ReadErrorFlag) return ERROR;
|
if (ReadErrorFlag)
|
||||||
|
return ERROR;
|
||||||
put_cmd(SJ3_CONNECT);
|
put_cmd(SJ3_CONNECT);
|
||||||
put_int(1);
|
put_int(1);
|
||||||
if (datalen <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
if (datalen <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
||||||
put_string(host, hostlen);
|
put_string(host, hostlen);
|
||||||
put_string(user, userlen);
|
put_string(user, userlen);
|
||||||
put_string(prog, proglen);
|
put_string(prog, proglen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 3, put_string, host, hostlen, put_string, user,
|
if (put_over(buflen, 3, put_string, host, hostlen,
|
||||||
userlen, put_string, prog, proglen, NULL, NULL, 0) == ERROR)
|
put_string, user, userlen, put_string, prog,
|
||||||
|
proglen, NULL, NULL, 0) == ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
if ((tmp = get_int())) {
|
if ((tmp = get_int())) {
|
||||||
|
|
@ -427,9 +445,11 @@ sj3_make_connection(
|
||||||
cliptr->default_char[1] = 0x40;
|
cliptr->default_char[1] = 0x40;
|
||||||
sj3_error_number = 0;
|
sj3_error_number = 0;
|
||||||
|
|
||||||
if (ReadErrorFlag) return ERROR;
|
if (ReadErrorFlag)
|
||||||
|
return ERROR;
|
||||||
put_cmd(SJ3_STDYSIZE);
|
put_cmd(SJ3_STDYSIZE);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((tmp = get_int())) {
|
if ((tmp = get_int())) {
|
||||||
sj3_erase_connection(client);
|
sj3_erase_connection(client);
|
||||||
|
|
@ -449,19 +469,19 @@ sj3_erase_connection(SJ3_CLIENT_ENV* client)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_DISCONNECT);
|
put_cmd(SJ3_DISCONNECT);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
sj3_error_number = get_int();
|
sj3_error_number = get_int();
|
||||||
close(server_fd);
|
close(server_fd);
|
||||||
cliptr->fd = -1;
|
cliptr->fd = -1;
|
||||||
if (ReadErrorFlag) return ERROR;
|
if (ReadErrorFlag)
|
||||||
|
return ERROR;
|
||||||
return sj3_error_number ? ERROR : 0;
|
return sj3_error_number ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
long
|
long
|
||||||
sj3_open_dictionary(
|
sj3_open_dictionary(SJ3_CLIENT_ENV *client,
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
char *dictname, char *password)
|
char *dictname, char *password)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
|
@ -478,14 +498,17 @@ sj3_open_dictionary(
|
||||||
if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_string(dictname, dictlen);
|
put_string(dictname, dictlen);
|
||||||
put_string(password, passlen);
|
put_string(password, passlen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 2, put_string, dictname, dictlen, put_string,
|
if (put_over(buflen, 2, put_string, dictname, dictlen,
|
||||||
password, passlen, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
put_string, password, passlen, NULL, NULL, 0, NULL, NULL,
|
||||||
|
0) == ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return 0;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return 0;
|
||||||
res = get_int();
|
res = get_int();
|
||||||
return ReadErrorFlag ? ERROR : res;
|
return ReadErrorFlag ? ERROR : res;
|
||||||
}
|
}
|
||||||
|
|
@ -497,17 +520,16 @@ sj3_close_dictionary(SJ3_CLIENT_ENV* client, long dicid)
|
||||||
|
|
||||||
put_cmd(SJ3_CLOSEDICT);
|
put_cmd(SJ3_CLOSEDICT);
|
||||||
put_int(dicid);
|
put_int(dicid);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_open_study_file(
|
sj3_open_study_file(SJ3_CLIENT_ENV *client, char *stdyname, char *password)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
char* stdyname, char* password)
|
|
||||||
{
|
{
|
||||||
int stdylen, passlen;
|
int stdylen, passlen;
|
||||||
int datalen, buflen;
|
int datalen, buflen;
|
||||||
|
|
@ -522,14 +544,17 @@ sj3_open_study_file(
|
||||||
if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_string(stdyname, stdylen);
|
put_string(stdyname, stdylen);
|
||||||
put_string(password, passlen);
|
put_string(password, passlen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 2, put_string, stdyname, stdylen, put_string,
|
if (put_over(buflen, 2, put_string, stdyname, stdylen,
|
||||||
password, passlen, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
put_string, password, passlen, NULL, NULL, 0, NULL, NULL,
|
||||||
|
0) == ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -539,36 +564,40 @@ sj3_close_study_file(SJ3_CLIENT_ENV* client)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_CLOSESTDY);
|
put_cmd(SJ3_CLOSESTDY);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_get_id_size(SJ3_CLIENT_ENV *client)
|
sj3_get_id_size(SJ3_CLIENT_ENV *client)
|
||||||
{
|
{
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_STDYSIZE);
|
put_cmd(SJ3_STDYSIZE);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
cliptr->stdy_size = get_int();
|
cliptr->stdy_size = get_int();
|
||||||
return ReadErrorFlag ? ERROR : cliptr->stdy_size;
|
return ReadErrorFlag ? ERROR : cliptr->stdy_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_lock_server(SJ3_CLIENT_ENV *client)
|
sj3_lock_server(SJ3_CLIENT_ENV *client)
|
||||||
{
|
{
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_LOCK);
|
put_cmd(SJ3_LOCK);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -578,19 +607,16 @@ sj3_unlock_server(SJ3_CLIENT_ENV *client)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_UNLOCK);
|
put_cmd(SJ3_UNLOCK);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_ikkatu_henkan(
|
sj3_ikkatu_henkan(SJ3_CLIENT_ENV *client, u_char *src, u_char *dst, int dstsiz,
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
u_char* src,
|
|
||||||
u_char* dst,
|
|
||||||
int dstsiz,
|
|
||||||
int mb_flag)
|
int mb_flag)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
@ -613,32 +639,34 @@ sj3_ikkatu_henkan(
|
||||||
put_cmd(SJ3_PH2KNJ_EUC);
|
put_cmd(SJ3_PH2KNJ_EUC);
|
||||||
if (srclen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (srclen < (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_string(src, srclen);
|
put_string(src, srclen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 1, put_string, src, srclen, NULL, NULL, 0,
|
if (put_over(buflen, 1, put_string, src, srclen, NULL, NULL, 0,
|
||||||
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
result = get_int();
|
result = get_int();
|
||||||
|
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
stysiz = cliptr->stdy_size;
|
stysiz = cliptr->stdy_size;
|
||||||
len1 = 1 + stysiz + 1 + 1;
|
len1 = 1 + stysiz + 1 + 1;
|
||||||
while ((c = get_byte())) {
|
while ((c = get_byte())) {
|
||||||
|
|
||||||
top = dst;
|
top = dst;
|
||||||
if (dstsiz < len1) goto error1;
|
if (dstsiz < len1)
|
||||||
|
goto error1;
|
||||||
|
|
||||||
*dst++ = len = c;
|
*dst++ = len = c;
|
||||||
dst = get_ndata(dst, stysiz);
|
dst = get_ndata(dst, stysiz);
|
||||||
dstsiz -= (stysiz + 1);
|
dstsiz -= (stysiz + 1);
|
||||||
|
|
||||||
while ((c = get_byte())) {
|
while ((c = get_byte())) {
|
||||||
if (dstsiz-- < 3) goto error2;
|
if (dstsiz-- < 3)
|
||||||
|
goto error2;
|
||||||
*dst++ = c;
|
*dst++ = c;
|
||||||
}
|
}
|
||||||
*dst++ = 0;
|
*dst++ = 0;
|
||||||
|
|
@ -649,26 +677,21 @@ sj3_ikkatu_henkan(
|
||||||
*dst = 0;
|
*dst = 0;
|
||||||
return ReadErrorFlag ? ERROR : result;
|
return ReadErrorFlag ? ERROR : result;
|
||||||
|
|
||||||
|
|
||||||
error1:
|
error1:
|
||||||
do {
|
do {
|
||||||
skip_ndata(stysiz);
|
skip_ndata(stysiz);
|
||||||
error2:
|
error2:
|
||||||
while (get_byte()) ;
|
while (get_byte())
|
||||||
|
;
|
||||||
} while (get_byte());
|
} while (get_byte());
|
||||||
|
|
||||||
*top = 0;
|
*top = 0;
|
||||||
return ReadErrorFlag ? ERROR : result;
|
return ReadErrorFlag ? ERROR : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_henkan(
|
sj3_bunsetu_henkan(SJ3_CLIENT_ENV *client, u_char *yomi, int len,
|
||||||
SJ3_CLIENT_ENV* client,
|
u_char *kanji, int mb_flag)
|
||||||
u_char* yomi,
|
|
||||||
int len,
|
|
||||||
u_char* kanji,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
int buflen;
|
int buflen;
|
||||||
|
|
@ -683,15 +706,16 @@ sj3_bunsetu_henkan(
|
||||||
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
||||||
put_ndata(yomi, len);
|
put_ndata(yomi, len);
|
||||||
put_byte(0);
|
put_byte(0);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
|
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL,
|
||||||
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1,
|
1, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
result = get_int();
|
result = get_int();
|
||||||
get_string(get_ndata(kanji, cliptr->stdy_size));
|
get_string(get_ndata(kanji, cliptr->stdy_size));
|
||||||
|
|
@ -699,10 +723,7 @@ sj3_bunsetu_henkan(
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_jikouho(
|
sj3_bunsetu_jikouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode,
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
u_char* kanji,
|
|
||||||
int mode,
|
|
||||||
int mb_flag)
|
int mb_flag)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
@ -714,9 +735,11 @@ sj3_bunsetu_jikouho(
|
||||||
else
|
else
|
||||||
put_cmd(SJ3_NEXTCL_EUC);
|
put_cmd(SJ3_NEXTCL_EUC);
|
||||||
put_int(mode);
|
put_int(mode);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
result = get_int();
|
result = get_int();
|
||||||
get_string(get_ndata(kanji, cliptr->stdy_size));
|
get_string(get_ndata(kanji, cliptr->stdy_size));
|
||||||
|
|
@ -724,9 +747,8 @@ sj3_bunsetu_jikouho(
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_maekouho(
|
sj3_bunsetu_maekouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode,
|
||||||
SJ3_CLIENT_ENV* client,
|
int mb_flag)
|
||||||
u_char* kanji, int mode, int mb_flag)
|
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
|
@ -737,22 +759,19 @@ sj3_bunsetu_maekouho(
|
||||||
else
|
else
|
||||||
put_cmd(SJ3_PREVCL_EUC);
|
put_cmd(SJ3_PREVCL_EUC);
|
||||||
put_int(mode);
|
put_int(mode);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
result = get_int();
|
result = get_int();
|
||||||
get_string(get_ndata(kanji, cliptr->stdy_size));
|
get_string(get_ndata(kanji, cliptr->stdy_size));
|
||||||
return ReadErrorFlag ? ERROR : result;
|
return ReadErrorFlag ? ERROR : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_kouhosuu(
|
sj3_bunsetu_kouhosuu(SJ3_CLIENT_ENV *client, u_char *yomi, int len, int mb_flag)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
u_char* yomi,
|
|
||||||
int len,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
int buflen;
|
int buflen;
|
||||||
|
|
@ -767,27 +786,24 @@ sj3_bunsetu_kouhosuu(
|
||||||
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
||||||
put_ndata(yomi, len);
|
put_ndata(yomi, len);
|
||||||
put_byte(0);
|
put_byte(0);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
|
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL,
|
||||||
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1,
|
1, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
result = get_int();
|
result = get_int();
|
||||||
return ReadErrorFlag ? ERROR : result;
|
return ReadErrorFlag ? ERROR : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_zenkouho(
|
sj3_bunsetu_zenkouho(SJ3_CLIENT_ENV *client, u_char *yomi, int len,
|
||||||
SJ3_CLIENT_ENV* client,
|
SJ3_DOUON *douon, int mb_flag)
|
||||||
u_char* yomi,
|
|
||||||
int len,
|
|
||||||
SJ3_DOUON* douon,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
int buflen;
|
int buflen;
|
||||||
|
|
@ -802,15 +818,16 @@ sj3_bunsetu_zenkouho(
|
||||||
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) {
|
||||||
put_ndata(yomi, len);
|
put_ndata(yomi, len);
|
||||||
put_byte(0);
|
put_byte(0);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
|
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL,
|
||||||
if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1,
|
1, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
while (get_int()) {
|
while (get_int()) {
|
||||||
get_ndata(&(douon->dcid), cliptr->stdy_size);
|
get_ndata(&(douon->dcid), cliptr->stdy_size);
|
||||||
|
|
@ -823,7 +840,6 @@ sj3_bunsetu_zenkouho(
|
||||||
return ReadErrorFlag ? ERROR : cnt;
|
return ReadErrorFlag ? ERROR : cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_gakusyuu(SJ3_CLIENT_ENV *client, SJ3_STUDYREC *stdy)
|
sj3_tango_gakusyuu(SJ3_CLIENT_ENV *client, SJ3_STUDYREC *stdy)
|
||||||
{
|
{
|
||||||
|
|
@ -834,26 +850,22 @@ sj3_tango_gakusyuu(SJ3_CLIENT_ENV* client, SJ3_STUDYREC* stdy)
|
||||||
put_cmd(SJ3_STUDY);
|
put_cmd(SJ3_STUDY);
|
||||||
if (cliptr->stdy_size <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (cliptr->stdy_size <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_ndata(stdy, cliptr->stdy_size);
|
put_ndata(stdy, cliptr->stdy_size);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
|
if (put_over(buflen, 1, put_ndata, stdy, cliptr->stdy_size,
|
||||||
if (put_over(buflen, 1, put_ndata, stdy, cliptr -> stdy_size, NULL,
|
NULL, NULL, 0, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
NULL, 0, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((sj3_error_number = get_int()))
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_bunsetu_gakusyuu(
|
sj3_bunsetu_gakusyuu(SJ3_CLIENT_ENV *client, u_char *yomi1, u_char *yomi2,
|
||||||
SJ3_CLIENT_ENV* client,
|
SJ3_STUDYREC *stdy, int mb_flag)
|
||||||
u_char* yomi1,
|
|
||||||
u_char* yomi2,
|
|
||||||
SJ3_STUDYREC* stdy,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int yomilen1, yomilen2;
|
int yomilen1, yomilen2;
|
||||||
int datalen, buflen;
|
int datalen, buflen;
|
||||||
|
|
@ -872,7 +884,8 @@ sj3_bunsetu_gakusyuu(
|
||||||
put_string(yomi1, yomilen1);
|
put_string(yomi1, yomilen1);
|
||||||
put_string(yomi2, yomilen2);
|
put_string(yomi2, yomilen2);
|
||||||
put_ndata(stdy, cliptr->stdy_size);
|
put_ndata(stdy, cliptr->stdy_size);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 3, put_string, yomi1, yomilen1, put_string,
|
if (put_over(buflen, 3, put_string, yomi1, yomilen1, put_string,
|
||||||
yomi2, yomilen2, put_ndata, stdy, cliptr->stdy_size,
|
yomi2, yomilen2, put_ndata, stdy, cliptr->stdy_size,
|
||||||
|
|
@ -880,19 +893,14 @@ sj3_bunsetu_gakusyuu(
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_touroku(
|
sj3_tango_touroku(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi,
|
||||||
SJ3_CLIENT_ENV* client,
|
u_char *kanji, int code, int mb_flag)
|
||||||
long dicid,
|
|
||||||
u_char* yomi,
|
|
||||||
u_char* kanji,
|
|
||||||
int code,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int yomilen, kanjilen;
|
int yomilen, kanjilen;
|
||||||
int datalen, buflen;
|
int datalen, buflen;
|
||||||
|
|
@ -912,25 +920,23 @@ sj3_tango_touroku(
|
||||||
put_string(yomi, yomilen);
|
put_string(yomi, yomilen);
|
||||||
put_string(kanji, kanjilen);
|
put_string(kanji, kanjilen);
|
||||||
put_int(code);
|
put_int(code);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 3, put_string, yomi, yomilen, put_string, kanji,
|
if (put_over(buflen, 3, put_string, yomi, yomilen, put_string,
|
||||||
kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) == ERROR)
|
kanji, kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) ==
|
||||||
|
ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_sakujo(
|
sj3_tango_sakujo(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi,
|
||||||
SJ3_CLIENT_ENV* client,
|
u_char *kanji, int code, int mb_flag)
|
||||||
long dicid,
|
|
||||||
u_char* yomi,
|
|
||||||
u_char* kanji,
|
|
||||||
int code,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
int yomilen, kanjilen;
|
int yomilen, kanjilen;
|
||||||
int datalen, buflen;
|
int datalen, buflen;
|
||||||
|
|
@ -950,24 +956,22 @@ sj3_tango_sakujo(
|
||||||
put_string(yomi, yomilen);
|
put_string(yomi, yomilen);
|
||||||
put_string(kanji, kanjilen);
|
put_string(kanji, kanjilen);
|
||||||
put_int(code);
|
put_int(code);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 3, put_string, yomi, yomilen, put_string, kanji,
|
if (put_over(buflen, 3, put_string, yomi, yomilen, put_string,
|
||||||
kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) == ERROR)
|
kanji, kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) ==
|
||||||
|
ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_syutoku(
|
sj3_tango_syutoku(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
int dicid,
|
|
||||||
u_char* buf,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
u_char *p;
|
u_char *p;
|
||||||
|
|
||||||
|
|
@ -978,9 +982,11 @@ sj3_tango_syutoku(
|
||||||
else
|
else
|
||||||
put_cmd(SJ3_GETDICT_EUC);
|
put_cmd(SJ3_GETDICT_EUC);
|
||||||
put_int(dicid);
|
put_int(dicid);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
p = get_string(buf);
|
p = get_string(buf);
|
||||||
p = get_string(p);
|
p = get_string(p);
|
||||||
|
|
@ -989,11 +995,7 @@ sj3_tango_syutoku(
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_jikouho(
|
sj3_tango_jikouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
int dicid,
|
|
||||||
u_char* buf,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
u_char *p;
|
u_char *p;
|
||||||
|
|
||||||
|
|
@ -1004,9 +1006,11 @@ sj3_tango_jikouho(
|
||||||
else
|
else
|
||||||
put_cmd(SJ3_NEXTDICT_EUC);
|
put_cmd(SJ3_NEXTDICT_EUC);
|
||||||
put_int(dicid);
|
put_int(dicid);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
p = get_string(buf);
|
p = get_string(buf);
|
||||||
p = get_string(p);
|
p = get_string(p);
|
||||||
|
|
@ -1015,11 +1019,7 @@ sj3_tango_jikouho(
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_tango_maekouho(
|
sj3_tango_maekouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag)
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
int dicid,
|
|
||||||
u_char* buf,
|
|
||||||
int mb_flag)
|
|
||||||
{
|
{
|
||||||
u_char *p;
|
u_char *p;
|
||||||
|
|
||||||
|
|
@ -1030,9 +1030,11 @@ sj3_tango_maekouho(
|
||||||
else
|
else
|
||||||
put_cmd(SJ3_PREVDICT_EUC);
|
put_cmd(SJ3_PREVDICT_EUC);
|
||||||
put_int(dicid);
|
put_int(dicid);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
p = get_string(buf);
|
p = get_string(buf);
|
||||||
p = get_string(p);
|
p = get_string(p);
|
||||||
|
|
@ -1040,13 +1042,8 @@ sj3_tango_maekouho(
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_make_dict_file(
|
sj3_make_dict_file(SJ3_CLIENT_ENV *client, char *path, int idxlen, int seglen,
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
char* path,
|
|
||||||
int idxlen,
|
|
||||||
int seglen,
|
|
||||||
int segnum)
|
int segnum)
|
||||||
{
|
{
|
||||||
int pathlen;
|
int pathlen;
|
||||||
|
|
@ -1063,7 +1060,8 @@ sj3_make_dict_file(
|
||||||
put_int(idxlen);
|
put_int(idxlen);
|
||||||
put_int(seglen);
|
put_int(seglen);
|
||||||
put_int(segnum);
|
put_int(segnum);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 4, put_string, path, pathlen, put_ndata,
|
if (put_over(buflen, 4, put_string, path, pathlen, put_ndata,
|
||||||
&idxlen, INTLEN, put_ndata, &seglen, INTLEN,
|
&idxlen, INTLEN, put_ndata, &seglen, INTLEN,
|
||||||
|
|
@ -1071,17 +1069,13 @@ sj3_make_dict_file(
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_make_study_file(
|
sj3_make_study_file(SJ3_CLIENT_ENV *client, char *path, int stynum, int clstep,
|
||||||
SJ3_CLIENT_ENV* client,
|
|
||||||
char* path,
|
|
||||||
int stynum,
|
|
||||||
int clstep,
|
|
||||||
int cllen)
|
int cllen)
|
||||||
{
|
{
|
||||||
int pathlen;
|
int pathlen;
|
||||||
|
|
@ -1098,7 +1092,8 @@ sj3_make_study_file(
|
||||||
put_int(stynum);
|
put_int(stynum);
|
||||||
put_int(clstep);
|
put_int(clstep);
|
||||||
put_int(cllen);
|
put_int(cllen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 4, put_string, path, pathlen, put_ndata,
|
if (put_over(buflen, 4, put_string, path, pathlen, put_ndata,
|
||||||
&stynum, INTLEN, put_ndata, &clstep, INTLEN,
|
&stynum, INTLEN, put_ndata, &clstep, INTLEN,
|
||||||
|
|
@ -1106,11 +1101,11 @@ sj3_make_study_file(
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_make_directory(SJ3_CLIENT_ENV *client, char *path)
|
sj3_make_directory(SJ3_CLIENT_ENV *client, char *path)
|
||||||
{
|
{
|
||||||
|
|
@ -1124,19 +1119,19 @@ sj3_make_directory(SJ3_CLIENT_ENV* client, char* path)
|
||||||
put_cmd(SJ3_MAKEDIR);
|
put_cmd(SJ3_MAKEDIR);
|
||||||
if (pathlen <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (pathlen <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_string(path, pathlen);
|
put_string(path, pathlen);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 1, put_string, path, pathlen, NULL, NULL, 0,
|
if (put_over(buflen, 1, put_string, path, pathlen, NULL, NULL,
|
||||||
NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
0, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((sj3_error_number = get_int()))
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_access(SJ3_CLIENT_ENV *client, char *path, int mode)
|
sj3_access(SJ3_CLIENT_ENV *client, char *path, int mode)
|
||||||
{
|
{
|
||||||
|
|
@ -1153,7 +1148,8 @@ sj3_access(SJ3_CLIENT_ENV* client, char* path, int mode)
|
||||||
if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) {
|
||||||
put_string(path, pathlen);
|
put_string(path, pathlen);
|
||||||
put_int(mode);
|
put_int(mode);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (put_over(buflen, 2, put_string, path, pathlen, put_ndata,
|
if (put_over(buflen, 2, put_string, path, pathlen, put_ndata,
|
||||||
&mode, INTLEN, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
&mode, INTLEN, NULL, NULL, 0, NULL, NULL, 0) == ERROR)
|
||||||
|
|
@ -1165,7 +1161,6 @@ sj3_access(SJ3_CLIENT_ENV* client, char* path, int mode)
|
||||||
return ReadErrorFlag ? ERROR : result;
|
return ReadErrorFlag ? ERROR : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_who(SJ3_CLIENT_ENV *client, SJ3_WHO_STRUCT *ret, int num)
|
sj3_who(SJ3_CLIENT_ENV *client, SJ3_WHO_STRUCT *ret, int num)
|
||||||
{
|
{
|
||||||
|
|
@ -1174,7 +1169,8 @@ sj3_who(SJ3_CLIENT_ENV* client, SJ3_WHO_STRUCT* ret, int num)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_WHO);
|
put_cmd(SJ3_WHO);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((i = get_int()) < 0) {
|
if ((i = get_int()) < 0) {
|
||||||
sj3_error_number = SJ3_InternalError;
|
sj3_error_number = SJ3_InternalError;
|
||||||
|
|
@ -1189,8 +1185,7 @@ sj3_who(SJ3_CLIENT_ENV* client, SJ3_WHO_STRUCT* ret, int num)
|
||||||
get_nstring(ret->username, SJ3_NAME_LENGTH);
|
get_nstring(ret->username, SJ3_NAME_LENGTH);
|
||||||
get_nstring(ret->progname, SJ3_NAME_LENGTH);
|
get_nstring(ret->progname, SJ3_NAME_LENGTH);
|
||||||
ret++;
|
ret++;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
get_int();
|
get_int();
|
||||||
skip_string();
|
skip_string();
|
||||||
skip_string();
|
skip_string();
|
||||||
|
|
@ -1201,16 +1196,17 @@ sj3_who(SJ3_CLIENT_ENV* client, SJ3_WHO_STRUCT* ret, int num)
|
||||||
return ReadErrorFlag ? ERROR : ((i < num) ? i : num);
|
return ReadErrorFlag ? ERROR : ((i < num) ? i : num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_quit(SJ3_CLIENT_ENV *client)
|
sj3_quit(SJ3_CLIENT_ENV *client)
|
||||||
{
|
{
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_QUIT);
|
put_cmd(SJ3_QUIT);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1220,13 +1216,14 @@ sj3_kill(SJ3_CLIENT_ENV* client)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_KILL);
|
put_cmd(SJ3_KILL);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if ((sj3_error_number = get_int())) return ERROR;
|
if ((sj3_error_number = get_int()))
|
||||||
|
return ERROR;
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_version(SJ3_CLIENT_ENV *client, char *dst, int dstsiz)
|
sj3_version(SJ3_CLIENT_ENV *client, char *dst, int dstsiz)
|
||||||
{
|
{
|
||||||
|
|
@ -1235,18 +1232,28 @@ sj3_version(SJ3_CLIENT_ENV* client, char* dst, int dstsiz)
|
||||||
client_init(client);
|
client_init(client);
|
||||||
|
|
||||||
put_cmd(SJ3_VERSION);
|
put_cmd(SJ3_VERSION);
|
||||||
if (put_flush() == ERROR) return ERROR;
|
if (put_flush() == ERROR)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
sj3_error_number = get_int();
|
sj3_error_number = get_int();
|
||||||
c = get_byte();
|
c = get_byte();
|
||||||
while (c) {
|
while (c) {
|
||||||
while (c) {
|
while (c) {
|
||||||
if (dstsiz > 2) { *dst++ = c; dstsiz--; }
|
if (dstsiz > 2) {
|
||||||
|
*dst++ = c;
|
||||||
|
dstsiz--;
|
||||||
|
}
|
||||||
c = get_byte();
|
c = get_byte();
|
||||||
}
|
}
|
||||||
if (dstsiz > 1) { *dst++ = 0; dstsiz--; }
|
if (dstsiz > 1) {
|
||||||
|
*dst++ = 0;
|
||||||
|
dstsiz--;
|
||||||
|
}
|
||||||
c = get_byte();
|
c = get_byte();
|
||||||
}
|
}
|
||||||
if (dstsiz > 0) { *dst++ = 0; dstsiz--; }
|
if (dstsiz > 0) {
|
||||||
|
*dst++ = 0;
|
||||||
|
dstsiz--;
|
||||||
|
}
|
||||||
return ReadErrorFlag ? ERROR : 0;
|
return ReadErrorFlag ? ERROR : 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
398
sj3lib/sj.c
398
sj3lib/sj.c
|
|
@ -48,6 +48,7 @@
|
||||||
#include "sj_string.h"
|
#include "sj_string.h"
|
||||||
|
|
||||||
extern int sj3_error_number;
|
extern int sj3_error_number;
|
||||||
|
|
||||||
#define SYS_SJIS 0
|
#define SYS_SJIS 0
|
||||||
#define SYS_EUC 1
|
#define SYS_EUC 1
|
||||||
#define SYS_NOTDEF -1
|
#define SYS_NOTDEF -1
|
||||||
|
|
@ -86,19 +87,22 @@ make_dirs(char* path)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (p = path; *p; p++) {
|
for (p = path; *p; p++) {
|
||||||
if (*p != *path_delimiter) continue;
|
if (*p != *path_delimiter)
|
||||||
|
continue;
|
||||||
|
|
||||||
strncpy(tmp, path, (i = p - path));
|
strncpy(tmp, path, (i = p - path));
|
||||||
tmp[i] = '\0';
|
tmp[i] = '\0';
|
||||||
if (sj3_access(&client, tmp, F_OK) != ERROR) continue;
|
if (sj3_access(&client, tmp, F_OK) != ERROR)
|
||||||
if (sj3_error_number == SJ3_ServerDown) return ERROR;
|
continue;
|
||||||
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
return ERROR;
|
||||||
|
|
||||||
if (sj3_make_directory(&client, tmp) == ERROR) return ERROR;
|
if (sj3_make_directory(&client, tmp) == ERROR)
|
||||||
|
return ERROR;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_open(char *host, char *user)
|
sj3_open(char *host, char *user)
|
||||||
{
|
{
|
||||||
|
|
@ -106,12 +110,15 @@ sj3_open(char* host, char* user)
|
||||||
char *p;
|
char *p;
|
||||||
int err = SJ3_NORMAL_END;
|
int err = SJ3_NORMAL_END;
|
||||||
|
|
||||||
if (client.fd != -1) return SJ3_ALREADY_CONNECTED;
|
if (client.fd != -1)
|
||||||
|
return SJ3_ALREADY_CONNECTED;
|
||||||
|
|
||||||
sprintf(tmp, "%d.sj3lib", getpid());
|
sprintf(tmp, "%d.sj3lib", getpid());
|
||||||
if (sj3_make_connection(&client, host, user, tmp) == ERROR) {
|
if (sj3_make_connection(&client, host, user, tmp) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
client.fd = -1; return SJ3_CONNECT_ERROR;
|
goto server_dead;
|
||||||
|
client.fd = -1;
|
||||||
|
return SJ3_CONNECT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.stdy_size > SJ3_WORD_ID_SIZE) {
|
if (client.stdy_size > SJ3_WORD_ID_SIZE) {
|
||||||
|
|
@ -121,7 +128,8 @@ sj3_open(char* host, char* user)
|
||||||
|
|
||||||
mdicid = sj3_open_dictionary(&client, MainDictionary, NULL);
|
mdicid = sj3_open_dictionary(&client, MainDictionary, NULL);
|
||||||
if (mdicid == 0) {
|
if (mdicid == 0) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CANNOT_OPEN_MDICT;
|
err |= SJ3_CANNOT_OPEN_MDICT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -131,14 +139,17 @@ sj3_open(char* host, char* user)
|
||||||
strcat(tmp, user);
|
strcat(tmp, user);
|
||||||
strcat(tmp, path_delimiter);
|
strcat(tmp, path_delimiter);
|
||||||
if (make_dirs(tmp) == ERROR) {
|
if (make_dirs(tmp) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
return (err | SJ3_CANNOT_MAKE_UDIR);
|
return (err | SJ3_CANNOT_MAKE_UDIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (p = tmp ; *p ; p++) ;
|
for (p = tmp; *p; p++)
|
||||||
|
;
|
||||||
strcpy(p, UserDictionary);
|
strcpy(p, UserDictionary);
|
||||||
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
if (sj3_make_dict_file(&client, tmp, DefIdxLen,
|
if (sj3_make_dict_file(&client, tmp, DefIdxLen,
|
||||||
DefSegLen, DefSegNum) == ERROR) {
|
DefSegLen, DefSegNum) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown)
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
|
@ -148,13 +159,15 @@ sj3_open(char* host, char* user)
|
||||||
}
|
}
|
||||||
udicid = sj3_open_dictionary(&client, tmp, "");
|
udicid = sj3_open_dictionary(&client, tmp, "");
|
||||||
if (udicid == 0) {
|
if (udicid == 0) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CANNOT_OPEN_UDICT;
|
err |= SJ3_CANNOT_OPEN_UDICT;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(p, StudyFile);
|
strcpy(p, StudyFile);
|
||||||
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep,
|
if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep,
|
||||||
DefClLen) == ERROR) {
|
DefClLen) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown)
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
|
@ -163,7 +176,8 @@ sj3_open(char* host, char* user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sj3_open_study_file(&client, tmp, "") == ERROR) {
|
if (sj3_open_study_file(&client, tmp, "") == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CANNOT_OPEN_STUDY;
|
err |= SJ3_CANNOT_OPEN_STUDY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,11 +188,9 @@ server_dead:
|
||||||
return SJ3_SERVER_DEAD;
|
return SJ3_SERVER_DEAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_open_with_list(
|
sj3_open_with_list(char *host, char *user, int dicts_num, char **dicts,
|
||||||
char* host, char* user, int dicts_num,
|
int *error_num, int **error_index)
|
||||||
char** dicts, int* error_num, int** error_index)
|
|
||||||
{
|
{
|
||||||
char tmp[PathNameLen];
|
char tmp[PathNameLen];
|
||||||
char *p;
|
char *p;
|
||||||
|
|
@ -186,12 +198,15 @@ sj3_open_with_list(
|
||||||
int i, err_id_num = 0;
|
int i, err_id_num = 0;
|
||||||
long *dict_idx = NULL;
|
long *dict_idx = NULL;
|
||||||
|
|
||||||
if (client.fd != -1) return SJ3_ALREADY_CONNECTED;
|
if (client.fd != -1)
|
||||||
|
return SJ3_ALREADY_CONNECTED;
|
||||||
|
|
||||||
sprintf(tmp, "%d.sj3lib", getpid());
|
sprintf(tmp, "%d.sj3lib", getpid());
|
||||||
if (sj3_make_connection(&client, host, user, tmp) == ERROR) {
|
if (sj3_make_connection(&client, host, user, tmp) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
client.fd = -1; return SJ3_CONNECT_ERROR;
|
goto server_dead;
|
||||||
|
client.fd = -1;
|
||||||
|
return SJ3_CONNECT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.stdy_size > SJ3_WORD_ID_SIZE) {
|
if (client.stdy_size > SJ3_WORD_ID_SIZE) {
|
||||||
|
|
@ -200,7 +215,8 @@ sj3_open_with_list(
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((dicts_num > 0) && dicts) {
|
if ((dicts_num > 0) && dicts) {
|
||||||
if (!(dict_idx = (long *)malloc(sizeof(long) * dicts_num * 2))) {
|
if (!(dict_idx = (long *)malloc(sizeof(long) * dicts_num *
|
||||||
|
2))) {
|
||||||
return SJ3_CONNECT_ERROR;
|
return SJ3_CONNECT_ERROR;
|
||||||
}
|
}
|
||||||
memset(dict_idx, 0, sizeof(long) * dicts_num * 2);
|
memset(dict_idx, 0, sizeof(long) * dicts_num * 2);
|
||||||
|
|
@ -208,9 +224,11 @@ sj3_open_with_list(
|
||||||
dicid_list = dict_idx;
|
dicid_list = dict_idx;
|
||||||
err_id_num = 0;
|
err_id_num = 0;
|
||||||
for (i = 0; i < dicts_num; i++) {
|
for (i = 0; i < dicts_num; i++) {
|
||||||
dict_idx[i] = sj3_open_dictionary(&client, dicts[i], NULL);
|
dict_idx[i] = sj3_open_dictionary(&client, dicts[i],
|
||||||
|
NULL);
|
||||||
if (dict_idx[i] == 0) {
|
if (dict_idx[i] == 0) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
dict_idx[dicts_num + err_id_num] = i;
|
dict_idx[dicts_num + err_id_num] = i;
|
||||||
err_id_num++;
|
err_id_num++;
|
||||||
} else if (mdicid == 0) {
|
} else if (mdicid == 0) {
|
||||||
|
|
@ -222,8 +240,10 @@ sj3_open_with_list(
|
||||||
err |= SJ3_CANNOT_OPEN_MDICT;
|
err |= SJ3_CANNOT_OPEN_MDICT;
|
||||||
mdicid = 0;
|
mdicid = 0;
|
||||||
}
|
}
|
||||||
if (error_num) *error_num = err_id_num;
|
if (error_num)
|
||||||
if (error_index) *error_index = (int *) &(dict_idx[dicts_num]);
|
*error_num = err_id_num;
|
||||||
|
if (error_index)
|
||||||
|
*error_index = (int *)&(dict_idx[dicts_num]);
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(tmp, sj3_user_dir);
|
strcpy(tmp, sj3_user_dir);
|
||||||
|
|
@ -232,14 +252,17 @@ sj3_open_with_list(
|
||||||
strcat(tmp, user);
|
strcat(tmp, user);
|
||||||
strcat(tmp, path_delimiter);
|
strcat(tmp, path_delimiter);
|
||||||
if (make_dirs(tmp) == ERROR) {
|
if (make_dirs(tmp) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
return (err | SJ3_CANNOT_MAKE_UDIR);
|
return (err | SJ3_CANNOT_MAKE_UDIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (p = tmp ; *p ; p++) ;
|
for (p = tmp; *p; p++)
|
||||||
|
;
|
||||||
strcpy(p, UserDictionary);
|
strcpy(p, UserDictionary);
|
||||||
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
if (sj3_make_dict_file(&client, tmp, DefIdxLen,
|
if (sj3_make_dict_file(&client, tmp, DefIdxLen,
|
||||||
DefSegLen, DefSegNum) == ERROR) {
|
DefSegLen, DefSegNum) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown)
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
|
@ -250,13 +273,15 @@ sj3_open_with_list(
|
||||||
|
|
||||||
udicid = sj3_open_dictionary(&client, tmp, "");
|
udicid = sj3_open_dictionary(&client, tmp, "");
|
||||||
if (udicid == 0) {
|
if (udicid == 0) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CANNOT_OPEN_UDICT;
|
err |= SJ3_CANNOT_OPEN_UDICT;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(p, StudyFile);
|
strcpy(p, StudyFile);
|
||||||
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
if (sj3_access(&client, tmp, F_OK) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep,
|
if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep,
|
||||||
DefClLen) == ERROR) {
|
DefClLen) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown)
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
|
@ -265,7 +290,8 @@ sj3_open_with_list(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sj3_open_study_file(&client, tmp, "") == ERROR) {
|
if (sj3_open_study_file(&client, tmp, "") == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CANNOT_OPEN_STUDY;
|
err |= SJ3_CANNOT_OPEN_STUDY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -275,28 +301,32 @@ server_dead:
|
||||||
if (dict_idx) {
|
if (dict_idx) {
|
||||||
free(dict_idx);
|
free(dict_idx);
|
||||||
dict_idx = NULL;
|
dict_idx = NULL;
|
||||||
if (error_num) *error_num = 0;
|
if (error_num)
|
||||||
if (error_index) *error_index = NULL;
|
*error_num = 0;
|
||||||
|
if (error_index)
|
||||||
|
*error_index = NULL;
|
||||||
}
|
}
|
||||||
mdicid = udicid = 0;
|
mdicid = udicid = 0;
|
||||||
return SJ3_SERVER_DEAD;
|
return SJ3_SERVER_DEAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_close(void)
|
sj3_close(void)
|
||||||
{
|
{
|
||||||
int err = SJ3_NORMAL_END;
|
int err = SJ3_NORMAL_END;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (client.fd == -1) return SJ3_NOT_CONNECTED;
|
if (client.fd == -1)
|
||||||
|
return SJ3_NOT_CONNECTED;
|
||||||
|
|
||||||
if (mdicid == 0)
|
if (mdicid == 0)
|
||||||
err |= SJ3_NOT_OPENED_MDICT;
|
err |= SJ3_NOT_OPENED_MDICT;
|
||||||
else if (dicid_list) {
|
else if (dicid_list) {
|
||||||
for (i = 0; i < dicid_num; i++) {
|
for (i = 0; i < dicid_num; i++) {
|
||||||
if (sj3_close_dictionary(&client, dicid_list[i]) == ERROR) {
|
if (sj3_close_dictionary(&client, dicid_list[i]) ==
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
ERROR) {
|
||||||
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CLOSE_MDICT_ERROR;
|
err |= SJ3_CLOSE_MDICT_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -304,7 +334,8 @@ sj3_close(void)
|
||||||
dicid_list = NULL;
|
dicid_list = NULL;
|
||||||
dicid_num = 0;
|
dicid_num = 0;
|
||||||
} else if (sj3_close_dictionary(&client, mdicid) == ERROR) {
|
} else if (sj3_close_dictionary(&client, mdicid) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CLOSE_MDICT_ERROR;
|
err |= SJ3_CLOSE_MDICT_ERROR;
|
||||||
}
|
}
|
||||||
mdicid = 0;
|
mdicid = 0;
|
||||||
|
|
@ -312,7 +343,8 @@ sj3_close(void)
|
||||||
if (udicid == 0)
|
if (udicid == 0)
|
||||||
err |= SJ3_NOT_OPENED_UDICT;
|
err |= SJ3_NOT_OPENED_UDICT;
|
||||||
else if (sj3_close_dictionary(&client, udicid) == ERROR) {
|
else if (sj3_close_dictionary(&client, udicid) == ERROR) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_CLOSE_UDICT_ERROR;
|
err |= SJ3_CLOSE_UDICT_ERROR;
|
||||||
}
|
}
|
||||||
udicid = 0;
|
udicid = 0;
|
||||||
|
|
@ -323,15 +355,18 @@ sj3_close(void)
|
||||||
goto server_dead;
|
goto server_dead;
|
||||||
|
|
||||||
case SJ3_StdyFileNotOpened:
|
case SJ3_StdyFileNotOpened:
|
||||||
err |= SJ3_NOT_OPENED_STUDY; break;
|
err |= SJ3_NOT_OPENED_STUDY;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
err |= SJ3_CLOSE_STUDY_ERROR; break;
|
err |= SJ3_CLOSE_STUDY_ERROR;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sj3_erase_connection(&client)) {
|
if (sj3_erase_connection(&client)) {
|
||||||
if (sj3_error_number == SJ3_ServerDown) goto server_dead;
|
if (sj3_error_number == SJ3_ServerDown)
|
||||||
|
goto server_dead;
|
||||||
err |= SJ3_DISCONNECT_ERROR;
|
err |= SJ3_DISCONNECT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -347,7 +382,6 @@ server_dead:
|
||||||
return SJ3_SERVER_DEAD;
|
return SJ3_SERVER_DEAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getkan(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
sj3_getkan(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
||||||
{
|
{
|
||||||
|
|
@ -356,10 +390,12 @@ sj3_getkan(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
int len;
|
int len;
|
||||||
int stysiz = client.stdy_size;
|
int stysiz = client.stdy_size;
|
||||||
|
|
||||||
if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI) return 0;
|
if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI)
|
||||||
|
return 0;
|
||||||
|
|
||||||
while (*yomi) {
|
while (*yomi) {
|
||||||
len = sj3_ikkatu_henkan(&client, yomi, knj, knjsiz, MBCODE_SJIS);
|
len = sj3_ikkatu_henkan(&client, yomi, knj, knjsiz,
|
||||||
|
MBCODE_SJIS);
|
||||||
if (len == ERROR) {
|
if (len == ERROR) {
|
||||||
if (client.fd < 0) {
|
if (client.fd < 0) {
|
||||||
mdicid = udicid = 0;
|
mdicid = udicid = 0;
|
||||||
|
|
@ -367,8 +403,7 @@ sj3_getkan(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
} else if (len == 0)
|
||||||
else if (len == 0)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
src = knj;
|
src = knj;
|
||||||
|
|
@ -379,7 +414,8 @@ sj3_getkan(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
bun->destlen = strlen(src);
|
bun->destlen = strlen(src);
|
||||||
bun->srcstr = yomi;
|
bun->srcstr = yomi;
|
||||||
bun->deststr = knj;
|
bun->deststr = knj;
|
||||||
while (*src) *knj++ = *src++;
|
while (*src)
|
||||||
|
*knj++ = *src++;
|
||||||
knjsiz -= bun->destlen;
|
knjsiz -= bun->destlen;
|
||||||
src++;
|
src++;
|
||||||
yomi += bun->srclen;
|
yomi += bun->srclen;
|
||||||
|
|
@ -401,7 +437,6 @@ sj3_getkan(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
return buncnt;
|
return buncnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getkan_euc(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
sj3_getkan_euc(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
||||||
{
|
{
|
||||||
|
|
@ -413,11 +448,14 @@ sj3_getkan_euc(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
int knjorg = knjsiz;
|
int knjorg = knjsiz;
|
||||||
SJ3_BUNSETU *hbun = bun;
|
SJ3_BUNSETU *hbun = bun;
|
||||||
|
|
||||||
if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI) return 0;
|
if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI)
|
||||||
|
return 0;
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
len = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse);
|
len = sj3_str_euctosjis(buf1, sizeof(buf1), yomi,
|
||||||
if ((len < 0) || defuse) return 0;
|
client.default_char, &defuse);
|
||||||
|
if ((len < 0) || defuse)
|
||||||
|
return 0;
|
||||||
yp = buf1;
|
yp = buf1;
|
||||||
if (knjsiz > sizeof(kbuf)) {
|
if (knjsiz > sizeof(kbuf)) {
|
||||||
mflag = 1;
|
mflag = 1;
|
||||||
|
|
@ -441,8 +479,7 @@ sj3_getkan_euc(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
} else if (len == 0)
|
||||||
else if (len == 0)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
src = kp;
|
src = kp;
|
||||||
|
|
@ -453,7 +490,8 @@ sj3_getkan_euc(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
bun->destlen = strlen(src);
|
bun->destlen = strlen(src);
|
||||||
bun->srcstr = yp;
|
bun->srcstr = yp;
|
||||||
bun->deststr = kp;
|
bun->deststr = kp;
|
||||||
while (*src) *kp++ = *src++;
|
while (*src)
|
||||||
|
*kp++ = *src++;
|
||||||
knjsiz -= bun->destlen;
|
knjsiz -= bun->destlen;
|
||||||
src++;
|
src++;
|
||||||
yp += bun->srclen;
|
yp += bun->srclen;
|
||||||
|
|
@ -477,15 +515,18 @@ sj3_getkan_euc(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
yp = buf1;
|
yp = buf1;
|
||||||
bun = hbun;
|
bun = hbun;
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
len = sj3_str_sjistoeuc(knj, knjorg, kp, client.default_char, &defuse);
|
len = sj3_str_sjistoeuc(knj, knjorg, kp, client.default_char,
|
||||||
if ((len < 0) || defuse) return 0;
|
&defuse);
|
||||||
|
if ((len < 0) || defuse)
|
||||||
|
return 0;
|
||||||
for (i = 0; i < buncnt; i++) {
|
for (i = 0; i < buncnt; i++) {
|
||||||
sentou = sj3_sjistoeuclen(yp, bun[i].srcstr - yp);
|
sentou = sj3_sjistoeuclen(yp, bun[i].srcstr - yp);
|
||||||
saigo = sj3_sjistoeuclen(bun[i].srcstr, bun[i].srclen);
|
saigo = sj3_sjistoeuclen(bun[i].srcstr, bun[i].srclen);
|
||||||
bun[i].srclen = saigo;
|
bun[i].srclen = saigo;
|
||||||
bun[i].srcstr = yomi + sentou;
|
bun[i].srcstr = yomi + sentou;
|
||||||
sentou = sj3_sjistoeuclen(kp, bun[i].deststr - kp);
|
sentou = sj3_sjistoeuclen(kp, bun[i].deststr - kp);
|
||||||
saigo = sj3_sjistoeuclen(bun[i].deststr, bun[i].destlen);
|
saigo = sj3_sjistoeuclen(bun[i].deststr,
|
||||||
|
bun[i].destlen);
|
||||||
bun[i].destlen = saigo;
|
bun[i].destlen = saigo;
|
||||||
bun[i].deststr = knj + sentou;
|
bun[i].deststr = knj + sentou;
|
||||||
}
|
}
|
||||||
|
|
@ -498,7 +539,6 @@ sj3_getkan_euc(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
return buncnt;
|
return buncnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getkan_mb(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
sj3_getkan_mb(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz)
|
||||||
{
|
{
|
||||||
|
|
@ -510,13 +550,13 @@ sj3_getkan_mb(u_char* yomi, SJ3_BUNSETU* bun, u_char* knj, int knjsiz)
|
||||||
return sj3_getkan(yomi, bun, knj, knjsiz);
|
return sj3_getkan(yomi, bun, knj, knjsiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_douoncnt(u_char *yomi)
|
sj3_douoncnt(u_char *yomi)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0;
|
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI)
|
||||||
|
return 0;
|
||||||
|
|
||||||
i = sj3_bunsetu_kouhosuu(&client, yomi, i, MBCODE_SJIS);
|
i = sj3_bunsetu_kouhosuu(&client, yomi, i, MBCODE_SJIS);
|
||||||
if (i == ERROR) {
|
if (i == ERROR) {
|
||||||
|
|
@ -531,19 +571,21 @@ sj3_douoncnt(u_char* yomi)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_douoncnt_euc(u_char *yomi)
|
sj3_douoncnt_euc(u_char *yomi)
|
||||||
{
|
{
|
||||||
int i, l, flag;
|
int i, l, flag;
|
||||||
u_char *yp;
|
u_char *yp;
|
||||||
|
|
||||||
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0;
|
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi,
|
||||||
if ((l < 0) || defuse) return 0;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return 0;
|
||||||
yp = buf1;
|
yp = buf1;
|
||||||
flag = MBCODE_SJIS;
|
flag = MBCODE_SJIS;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -563,7 +605,6 @@ sj3_douoncnt_euc(u_char* yomi)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_douoncnt_mb(u_char *yomi)
|
sj3_douoncnt_mb(u_char *yomi)
|
||||||
{
|
{
|
||||||
|
|
@ -575,13 +616,13 @@ sj3_douoncnt_mb(u_char* yomi)
|
||||||
return sj3_douoncnt(yomi);
|
return sj3_douoncnt(yomi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdouon(u_char *yomi, SJ3_DOUON *dou)
|
sj3_getdouon(u_char *yomi, SJ3_DOUON *dou)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0;
|
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI)
|
||||||
|
return 0;
|
||||||
|
|
||||||
i = sj3_bunsetu_zenkouho(&client, yomi, i, dou, MBCODE_SJIS);
|
i = sj3_bunsetu_zenkouho(&client, yomi, i, dou, MBCODE_SJIS);
|
||||||
if (i == ERROR) {
|
if (i == ERROR) {
|
||||||
|
|
@ -595,18 +636,20 @@ sj3_getdouon(u_char* yomi, SJ3_DOUON* dou)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdouon_euc(u_char *yomi, SJ3_DOUON *dou)
|
sj3_getdouon_euc(u_char *yomi, SJ3_DOUON *dou)
|
||||||
{
|
{
|
||||||
int i, j, l;
|
int i, j, l;
|
||||||
|
|
||||||
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0;
|
if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi,
|
||||||
if ((l < 0) || defuse) return 0;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return 0;
|
||||||
i = sj3_bunsetu_zenkouho(&client, buf1, i, dou, MBCODE_SJIS);
|
i = sj3_bunsetu_zenkouho(&client, buf1, i, dou, MBCODE_SJIS);
|
||||||
if (i == ERROR) {
|
if (i == ERROR) {
|
||||||
if (client.fd < 0) {
|
if (client.fd < 0) {
|
||||||
|
|
@ -619,7 +662,8 @@ sj3_getdouon_euc(u_char* yomi, SJ3_DOUON* dou)
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf),
|
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf),
|
||||||
dou[j].ddata, client.default_char, &defuse);
|
dou[j].ddata, client.default_char, &defuse);
|
||||||
if ((l < 0) || defuse) return 0;
|
if ((l < 0) || defuse)
|
||||||
|
return 0;
|
||||||
(void)memcpy(dou[j].ddata, kbuf, l + 1);
|
(void)memcpy(dou[j].ddata, kbuf, l + 1);
|
||||||
dou[j].dlen = l;
|
dou[j].dlen = l;
|
||||||
}
|
}
|
||||||
|
|
@ -636,7 +680,6 @@ sj3_getdouon_euc(u_char* yomi, SJ3_DOUON* dou)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdouon_mb(u_char *yomi, SJ3_DOUON *dou)
|
sj3_getdouon_mb(u_char *yomi, SJ3_DOUON *dou)
|
||||||
{
|
{
|
||||||
|
|
@ -648,7 +691,6 @@ sj3_getdouon_mb(u_char* yomi, SJ3_DOUON* dou)
|
||||||
return sj3_getdouon(yomi, dou);
|
return sj3_getdouon(yomi, dou);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_gakusyuu(SJ3_STUDYREC *dcid)
|
sj3_gakusyuu(SJ3_STUDYREC *dcid)
|
||||||
{
|
{
|
||||||
|
|
@ -662,11 +704,11 @@ sj3_gakusyuu(SJ3_STUDYREC* dcid)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_gakusyuu2(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
sj3_gakusyuu2(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
||||||
{
|
{
|
||||||
if (sj3_bunsetu_gakusyuu(&client, yomi1, yomi2, dcid, MBCODE_SJIS) == ERROR) {
|
if (sj3_bunsetu_gakusyuu(&client, yomi1, yomi2, dcid, MBCODE_SJIS) ==
|
||||||
|
ERROR) {
|
||||||
if (client.fd < 0) {
|
if (client.fd < 0) {
|
||||||
mdicid = udicid = 0;
|
mdicid = udicid = 0;
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -676,7 +718,6 @@ sj3_gakusyuu2(u_char* yomi1, u_char* yomi2, SJ3_STUDYREC* dcid)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_gakusyuu2_euc(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
sj3_gakusyuu2_euc(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
||||||
{
|
{
|
||||||
|
|
@ -685,11 +726,15 @@ sj3_gakusyuu2_euc(u_char* yomi1, u_char* yomi2, SJ3_STUDYREC* dcid)
|
||||||
|
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi1, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi1,
|
||||||
if ((l < 0) || defuse) return 1;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return 1;
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf2, sizeof(buf2), yomi2, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf2, sizeof(buf2), yomi2,
|
||||||
if ((l < 0) || defuse) return 1;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return 1;
|
||||||
y1p = buf1;
|
y1p = buf1;
|
||||||
y2p = buf2;
|
y2p = buf2;
|
||||||
flag = MBCODE_SJIS;
|
flag = MBCODE_SJIS;
|
||||||
|
|
@ -708,7 +753,6 @@ sj3_gakusyuu2_euc(u_char* yomi1, u_char* yomi2, SJ3_STUDYREC* dcid)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_gakusyuu2_mb(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
sj3_gakusyuu2_mb(u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *dcid)
|
||||||
{
|
{
|
||||||
|
|
@ -720,47 +764,61 @@ sj3_gakusyuu2_mb(u_char* yomi1, u_char* yomi2, SJ3_STUDYREC* dcid)
|
||||||
return sj3_gakusyuu2(yomi1, yomi2, dcid);
|
return sj3_gakusyuu2(yomi1, yomi2, dcid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_touroku(u_char *yomi, u_char *kanji, int code)
|
sj3_touroku(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
if (sj3_tango_touroku(&client, udicid, yomi, kanji, code, MBCODE_SJIS)) {
|
if (sj3_tango_touroku(&client, udicid, yomi, kanji, code,
|
||||||
|
MBCODE_SJIS)) {
|
||||||
if (client.fd < 0) {
|
if (client.fd < 0) {
|
||||||
mdicid = udicid = 0;
|
mdicid = udicid = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
switch (sj3_error_number) {
|
switch (sj3_error_number) {
|
||||||
case SJ3_NoSuchDict:
|
case SJ3_NoSuchDict:
|
||||||
case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR;
|
case SJ3_ReadOnlyDict:
|
||||||
case SJ3_DictLocked: return SJ3_DICT_LOCKED;
|
return SJ3_DICT_ERROR;
|
||||||
case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR;
|
case SJ3_DictLocked:
|
||||||
case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR;
|
return SJ3_DICT_LOCKED;
|
||||||
case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE;
|
case SJ3_BadYomiString:
|
||||||
case SJ3_AlreadyExistWord: return SJ3_WORD_EXIST;
|
return SJ3_BAD_YOMI_STR;
|
||||||
case SJ3_NoMoreDouonWord: return SJ3_DOUON_FULL;
|
case SJ3_BadKanjiString:
|
||||||
case SJ3_NoMoreUserDict: return SJ3_DICT_FULL;
|
return SJ3_BAD_KANJI_STR;
|
||||||
case SJ3_NoMoreIndexBlock: return SJ3_INDEX_FULL;
|
case SJ3_BadHinsiCode:
|
||||||
default: return SJ3_TOUROKU_FAILED;
|
return SJ3_BAD_HINSI_CODE;
|
||||||
|
case SJ3_AlreadyExistWord:
|
||||||
|
return SJ3_WORD_EXIST;
|
||||||
|
case SJ3_NoMoreDouonWord:
|
||||||
|
return SJ3_DOUON_FULL;
|
||||||
|
case SJ3_NoMoreUserDict:
|
||||||
|
return SJ3_DICT_FULL;
|
||||||
|
case SJ3_NoMoreIndexBlock:
|
||||||
|
return SJ3_INDEX_FULL;
|
||||||
|
default:
|
||||||
|
return SJ3_TOUROKU_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_touroku_euc(u_char *yomi, u_char *kanji, int code)
|
sj3_touroku_euc(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
int l, flag;
|
int l, flag;
|
||||||
u_char *yp;
|
u_char *yp;
|
||||||
u_char *kp;
|
u_char *kp;
|
||||||
|
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi,
|
||||||
if ((l < 0) || defuse) return SJ3_BAD_YOMI_STR;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return SJ3_BAD_YOMI_STR;
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji, client.default_char, &defuse);
|
l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji,
|
||||||
if ((l < 0) || defuse) return SJ3_BAD_KANJI_STR;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return SJ3_BAD_KANJI_STR;
|
||||||
yp = buf1;
|
yp = buf1;
|
||||||
kp = kbuf;
|
kp = kbuf;
|
||||||
flag = MBCODE_SJIS;
|
flag = MBCODE_SJIS;
|
||||||
|
|
@ -776,23 +834,32 @@ sj3_touroku_euc(u_char* yomi, u_char* kanji, int code)
|
||||||
}
|
}
|
||||||
switch (sj3_error_number) {
|
switch (sj3_error_number) {
|
||||||
case SJ3_NoSuchDict:
|
case SJ3_NoSuchDict:
|
||||||
case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR;
|
case SJ3_ReadOnlyDict:
|
||||||
case SJ3_DictLocked: return SJ3_DICT_LOCKED;
|
return SJ3_DICT_ERROR;
|
||||||
case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR;
|
case SJ3_DictLocked:
|
||||||
case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR;
|
return SJ3_DICT_LOCKED;
|
||||||
case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE;
|
case SJ3_BadYomiString:
|
||||||
case SJ3_AlreadyExistWord: return SJ3_WORD_EXIST;
|
return SJ3_BAD_YOMI_STR;
|
||||||
case SJ3_NoMoreDouonWord: return SJ3_DOUON_FULL;
|
case SJ3_BadKanjiString:
|
||||||
case SJ3_NoMoreUserDict: return SJ3_DICT_FULL;
|
return SJ3_BAD_KANJI_STR;
|
||||||
case SJ3_NoMoreIndexBlock: return SJ3_INDEX_FULL;
|
case SJ3_BadHinsiCode:
|
||||||
default: return SJ3_TOUROKU_FAILED;
|
return SJ3_BAD_HINSI_CODE;
|
||||||
|
case SJ3_AlreadyExistWord:
|
||||||
|
return SJ3_WORD_EXIST;
|
||||||
|
case SJ3_NoMoreDouonWord:
|
||||||
|
return SJ3_DOUON_FULL;
|
||||||
|
case SJ3_NoMoreUserDict:
|
||||||
|
return SJ3_DICT_FULL;
|
||||||
|
case SJ3_NoMoreIndexBlock:
|
||||||
|
return SJ3_INDEX_FULL;
|
||||||
|
default:
|
||||||
|
return SJ3_TOUROKU_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_touroku_mb(u_char *yomi, u_char *kanji, int code)
|
sj3_touroku_mb(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
|
|
@ -804,7 +871,6 @@ sj3_touroku_mb(u_char* yomi, u_char* kanji, int code)
|
||||||
return sj3_touroku(yomi, kanji, code);
|
return sj3_touroku(yomi, kanji, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_syoukyo(u_char *yomi, u_char *kanji, int code)
|
sj3_syoukyo(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
|
|
@ -815,32 +881,43 @@ sj3_syoukyo(u_char* yomi, u_char* kanji, int code)
|
||||||
}
|
}
|
||||||
switch (sj3_error_number) {
|
switch (sj3_error_number) {
|
||||||
case SJ3_NoSuchDict:
|
case SJ3_NoSuchDict:
|
||||||
case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR;
|
case SJ3_ReadOnlyDict:
|
||||||
case SJ3_DictLocked: return SJ3_DICT_LOCKED;
|
return SJ3_DICT_ERROR;
|
||||||
case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR;
|
case SJ3_DictLocked:
|
||||||
case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR;
|
return SJ3_DICT_LOCKED;
|
||||||
case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE;
|
case SJ3_BadYomiString:
|
||||||
case SJ3_NoSuchWord: return SJ3_WORD_NOT_EXIST;
|
return SJ3_BAD_YOMI_STR;
|
||||||
default: return SJ3_SYOUKYO_FAILED;
|
case SJ3_BadKanjiString:
|
||||||
|
return SJ3_BAD_KANJI_STR;
|
||||||
|
case SJ3_BadHinsiCode:
|
||||||
|
return SJ3_BAD_HINSI_CODE;
|
||||||
|
case SJ3_NoSuchWord:
|
||||||
|
return SJ3_WORD_NOT_EXIST;
|
||||||
|
default:
|
||||||
|
return SJ3_SYOUKYO_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_syoukyo_euc(u_char *yomi, u_char *kanji, int code)
|
sj3_syoukyo_euc(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
int l, flag;
|
int l, flag;
|
||||||
u_char *yp;
|
u_char *yp;
|
||||||
u_char *kp;
|
u_char *kp;
|
||||||
|
|
||||||
if (client.svr_version == 1) {
|
if (client.svr_version == 1) {
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse);
|
l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi,
|
||||||
if ((l < 0) || defuse) return SJ3_BAD_YOMI_STR;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return SJ3_BAD_YOMI_STR;
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji, client.default_char, &defuse);
|
l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji,
|
||||||
if ((l < 0) || defuse) return SJ3_BAD_KANJI_STR;
|
client.default_char, &defuse);
|
||||||
|
if ((l < 0) || defuse)
|
||||||
|
return SJ3_BAD_KANJI_STR;
|
||||||
yp = buf1;
|
yp = buf1;
|
||||||
kp = kbuf;
|
kp = kbuf;
|
||||||
flag = MBCODE_SJIS;
|
flag = MBCODE_SJIS;
|
||||||
|
|
@ -856,19 +933,25 @@ sj3_syoukyo_euc(u_char* yomi, u_char* kanji, int code)
|
||||||
}
|
}
|
||||||
switch (sj3_error_number) {
|
switch (sj3_error_number) {
|
||||||
case SJ3_NoSuchDict:
|
case SJ3_NoSuchDict:
|
||||||
case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR;
|
case SJ3_ReadOnlyDict:
|
||||||
case SJ3_DictLocked: return SJ3_DICT_LOCKED;
|
return SJ3_DICT_ERROR;
|
||||||
case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR;
|
case SJ3_DictLocked:
|
||||||
case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR;
|
return SJ3_DICT_LOCKED;
|
||||||
case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE;
|
case SJ3_BadYomiString:
|
||||||
case SJ3_NoSuchWord: return SJ3_WORD_NOT_EXIST;
|
return SJ3_BAD_YOMI_STR;
|
||||||
default: return SJ3_SYOUKYO_FAILED;
|
case SJ3_BadKanjiString:
|
||||||
|
return SJ3_BAD_KANJI_STR;
|
||||||
|
case SJ3_BadHinsiCode:
|
||||||
|
return SJ3_BAD_HINSI_CODE;
|
||||||
|
case SJ3_NoSuchWord:
|
||||||
|
return SJ3_WORD_NOT_EXIST;
|
||||||
|
default:
|
||||||
|
return SJ3_SYOUKYO_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_syoukyo_mb(u_char *yomi, u_char *kanji, int code)
|
sj3_syoukyo_mb(u_char *yomi, u_char *kanji, int code)
|
||||||
{
|
{
|
||||||
|
|
@ -880,7 +963,6 @@ sj3_syoukyo_mb(u_char* yomi, u_char* kanji, int code)
|
||||||
return sj3_syoukyo(yomi, kanji, code);
|
return sj3_syoukyo(yomi, kanji, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdict(u_char *buf)
|
sj3_getdict(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -894,7 +976,6 @@ sj3_getdict(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdict_euc(u_char *buf)
|
sj3_getdict_euc(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -910,12 +991,15 @@ sj3_getdict_euc(u_char* buf)
|
||||||
}
|
}
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
slen = strlen(buf) + 1;
|
slen = strlen(buf) + 1;
|
||||||
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse);
|
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf,
|
||||||
if ((l < 0) || defuse) return 1;
|
|
||||||
l++;
|
|
||||||
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]),
|
|
||||||
client.default_char, &defuse);
|
client.default_char, &defuse);
|
||||||
if ((ll < 0) || defuse) return 1;
|
if ((l < 0) || defuse)
|
||||||
|
return 1;
|
||||||
|
l++;
|
||||||
|
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l,
|
||||||
|
&(buf[slen]), client.default_char, &defuse);
|
||||||
|
if ((ll < 0) || defuse)
|
||||||
|
return 1;
|
||||||
ll++;
|
ll++;
|
||||||
slen += strlen(&(buf[slen])) + 1;
|
slen += strlen(&(buf[slen])) + 1;
|
||||||
l = l + ll;
|
l = l + ll;
|
||||||
|
|
@ -934,7 +1018,6 @@ sj3_getdict_euc(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_getdict_mb(u_char *buf)
|
sj3_getdict_mb(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -959,7 +1042,6 @@ sj3_nextdict(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_nextdict_euc(u_char *buf)
|
sj3_nextdict_euc(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -975,12 +1057,15 @@ sj3_nextdict_euc(u_char* buf)
|
||||||
}
|
}
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
slen = strlen(buf) + 1;
|
slen = strlen(buf) + 1;
|
||||||
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse);
|
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf,
|
||||||
if ((l < 0) || defuse) return 1;
|
|
||||||
l++;
|
|
||||||
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]),
|
|
||||||
client.default_char, &defuse);
|
client.default_char, &defuse);
|
||||||
if ((ll < 0) || defuse) return 1;
|
if ((l < 0) || defuse)
|
||||||
|
return 1;
|
||||||
|
l++;
|
||||||
|
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l,
|
||||||
|
&(buf[slen]), client.default_char, &defuse);
|
||||||
|
if ((ll < 0) || defuse)
|
||||||
|
return 1;
|
||||||
ll++;
|
ll++;
|
||||||
slen += strlen(&(buf[slen])) + 1;
|
slen += strlen(&(buf[slen])) + 1;
|
||||||
l = l + ll;
|
l = l + ll;
|
||||||
|
|
@ -999,7 +1084,6 @@ sj3_nextdict_euc(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_nextdict_mb(u_char *buf)
|
sj3_nextdict_mb(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -1024,7 +1108,6 @@ sj3_prevdict(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_prevdict_euc(u_char *buf)
|
sj3_prevdict_euc(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -1040,12 +1123,15 @@ sj3_prevdict_euc(u_char* buf)
|
||||||
}
|
}
|
||||||
defuse = 0;
|
defuse = 0;
|
||||||
slen = strlen(buf) + 1;
|
slen = strlen(buf) + 1;
|
||||||
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse);
|
l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf,
|
||||||
if ((l < 0) || defuse) return 1;
|
|
||||||
l++;
|
|
||||||
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]),
|
|
||||||
client.default_char, &defuse);
|
client.default_char, &defuse);
|
||||||
if ((ll < 0) || defuse) return 1;
|
if ((l < 0) || defuse)
|
||||||
|
return 1;
|
||||||
|
l++;
|
||||||
|
ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l,
|
||||||
|
&(buf[slen]), client.default_char, &defuse);
|
||||||
|
if ((ll < 0) || defuse)
|
||||||
|
return 1;
|
||||||
ll++;
|
ll++;
|
||||||
slen += strlen(&(buf[slen])) + 1;
|
slen += strlen(&(buf[slen])) + 1;
|
||||||
l = l + ll;
|
l = l + ll;
|
||||||
|
|
@ -1064,7 +1150,6 @@ sj3_prevdict_euc(u_char* buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_prevdict_mb(u_char *buf)
|
sj3_prevdict_mb(u_char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -1089,7 +1174,6 @@ sj3_lockserv(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_unlockserv(void)
|
sj3_unlockserv(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@
|
||||||
* from Sony Corporation.
|
* from Sony Corporation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SJ3LIB_H_
|
#ifndef _SJ3LIB_H_
|
||||||
#define _SJ3LIB_H_ 1
|
#define _SJ3LIB_H_ 1
|
||||||
|
|
||||||
|
|
@ -37,8 +36,6 @@
|
||||||
#define SJ3_NORMAL_END 0
|
#define SJ3_NORMAL_END 0
|
||||||
#define SJ3_SERVER_DEAD (1 << 0)
|
#define SJ3_SERVER_DEAD (1 << 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_CONNECT_ERROR (1 << 1)
|
#define SJ3_CONNECT_ERROR (1 << 1)
|
||||||
#define SJ3_ALREADY_CONNECTED (1 << 2)
|
#define SJ3_ALREADY_CONNECTED (1 << 2)
|
||||||
#define SJ3_CANNOT_OPEN_MDICT (1 << 3)
|
#define SJ3_CANNOT_OPEN_MDICT (1 << 3)
|
||||||
|
|
@ -48,8 +45,6 @@
|
||||||
#define SJ3_CANNOT_MAKE_UDICT (1 << 7)
|
#define SJ3_CANNOT_MAKE_UDICT (1 << 7)
|
||||||
#define SJ3_CANNOT_MAKE_STUDY (1 << 8)
|
#define SJ3_CANNOT_MAKE_STUDY (1 << 8)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_DISCONNECT_ERROR (1 << 1)
|
#define SJ3_DISCONNECT_ERROR (1 << 1)
|
||||||
#define SJ3_NOT_CONNECTED (1 << 2)
|
#define SJ3_NOT_CONNECTED (1 << 2)
|
||||||
#define SJ3_NOT_OPENED_MDICT (1 << 3)
|
#define SJ3_NOT_OPENED_MDICT (1 << 3)
|
||||||
|
|
@ -59,8 +54,6 @@
|
||||||
#define SJ3_CLOSE_UDICT_ERROR (1 << 7)
|
#define SJ3_CLOSE_UDICT_ERROR (1 << 7)
|
||||||
#define SJ3_CLOSE_STUDY_ERROR (1 << 8)
|
#define SJ3_CLOSE_STUDY_ERROR (1 << 8)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_DICT_ERROR 1
|
#define SJ3_DICT_ERROR 1
|
||||||
#define SJ3_DICT_LOCKED 2
|
#define SJ3_DICT_LOCKED 2
|
||||||
#define SJ3_BAD_YOMI_STR 3
|
#define SJ3_BAD_YOMI_STR 3
|
||||||
|
|
@ -76,20 +69,11 @@
|
||||||
#define SJ3_WORD_NOT_EXIST 6
|
#define SJ3_WORD_NOT_EXIST 6
|
||||||
#define SJ3_SYOUKYO_FAILED 10
|
#define SJ3_SYOUKYO_FAILED 10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_IKKATU_YOMI 512
|
#define SJ3_IKKATU_YOMI 512
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_BUNSETU_YOMI 128
|
#define SJ3_BUNSETU_YOMI 128
|
||||||
#define SJ3_BUNSETU_KANJI 512
|
#define SJ3_BUNSETU_KANJI 512
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef SJ3_WORD_ID_SIZE
|
#ifndef SJ3_WORD_ID_SIZE
|
||||||
# define SJ3_WORD_ID_SIZE 32
|
# define SJ3_WORD_ID_SIZE 32
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -98,9 +82,6 @@ typedef struct studyrec {
|
||||||
unsigned char dummy[SJ3_WORD_ID_SIZE];
|
unsigned char dummy[SJ3_WORD_ID_SIZE];
|
||||||
} SJ3_STUDYREC;
|
} SJ3_STUDYREC;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct bunsetu {
|
typedef struct bunsetu {
|
||||||
int srclen;
|
int srclen;
|
||||||
int destlen;
|
int destlen;
|
||||||
|
|
@ -109,16 +90,12 @@ typedef struct bunsetu {
|
||||||
struct studyrec dcid;
|
struct studyrec dcid;
|
||||||
} SJ3_BUNSETU;
|
} SJ3_BUNSETU;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct douon {
|
typedef struct douon {
|
||||||
unsigned char ddata[SJ3_BUNSETU_KANJI];
|
unsigned char ddata[SJ3_BUNSETU_KANJI];
|
||||||
int dlen;
|
int dlen;
|
||||||
SJ3_STUDYREC dcid;
|
SJ3_STUDYREC dcid;
|
||||||
} SJ3_DOUON;
|
} SJ3_DOUON;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SJ3_H_NRMNOUN 1
|
#define SJ3_H_NRMNOUN 1
|
||||||
#define SJ3_H_PRONOUN 12
|
#define SJ3_H_PRONOUN 12
|
||||||
#define SJ3_H_LNAME 21
|
#define SJ3_H_LNAME 21
|
||||||
|
|
@ -148,13 +125,6 @@ typedef struct douon {
|
||||||
#define SJ3_H_WAVERB 99
|
#define SJ3_H_WAVERB 99
|
||||||
#define SJ3_H_SINGLE 189
|
#define SJ3_H_SINGLE 189
|
||||||
|
|
||||||
|
|
||||||
/* moved from include/sj3lowlib.h for function prototypes.
|
|
||||||
* $SonyRCSfile: sj3lowlib.h,v $
|
|
||||||
* $SonyRevision: 1.1 $
|
|
||||||
* $SonyDate: 1994/06/03 08:00:59 $
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct sj3_client_env {
|
typedef struct sj3_client_env {
|
||||||
int fd;
|
int fd;
|
||||||
int serv_dead_flg;
|
int serv_dead_flg;
|
||||||
|
|
@ -174,36 +144,51 @@ typedef struct sj3_who_struct {
|
||||||
char progname[SJ3_NAME_LENGTH];
|
char progname[SJ3_NAME_LENGTH];
|
||||||
} SJ3_WHO_STRUCT;
|
} SJ3_WHO_STRUCT;
|
||||||
|
|
||||||
|
|
||||||
#define MBCODE_SJIS 1
|
#define MBCODE_SJIS 1
|
||||||
#define MBCODE_EUC 2
|
#define MBCODE_EUC 2
|
||||||
|
|
||||||
/* level1.c */
|
/* level1.c */
|
||||||
void sj3_set_timeout(int timeout);
|
void sj3_set_timeout(int timeout);
|
||||||
int sj3_make_connection(SJ3_CLIENT_ENV *client, char *serv, char *user, char *prog);
|
int sj3_make_connection(SJ3_CLIENT_ENV *client, char *serv, char *user,
|
||||||
|
char *prog);
|
||||||
int sj3_erase_connection(SJ3_CLIENT_ENV *client);
|
int sj3_erase_connection(SJ3_CLIENT_ENV *client);
|
||||||
long sj3_open_dictionary(SJ3_CLIENT_ENV *client, char *dictname, char *password);
|
long sj3_open_dictionary(SJ3_CLIENT_ENV *client, char *dictname,
|
||||||
|
char *password);
|
||||||
int sj3_close_dictionary(SJ3_CLIENT_ENV *client, long dicid);
|
int sj3_close_dictionary(SJ3_CLIENT_ENV *client, long dicid);
|
||||||
int sj3_open_study_file(SJ3_CLIENT_ENV *client, char *stdyname, char *password);
|
int sj3_open_study_file(SJ3_CLIENT_ENV *client, char *stdyname, char *password);
|
||||||
int sj3_close_study_file(SJ3_CLIENT_ENV *client);
|
int sj3_close_study_file(SJ3_CLIENT_ENV *client);
|
||||||
int sj3_get_id_size(SJ3_CLIENT_ENV *client);
|
int sj3_get_id_size(SJ3_CLIENT_ENV *client);
|
||||||
int sj3_lock_server(SJ3_CLIENT_ENV *client);
|
int sj3_lock_server(SJ3_CLIENT_ENV *client);
|
||||||
int sj3_unlock_server(SJ3_CLIENT_ENV *client);
|
int sj3_unlock_server(SJ3_CLIENT_ENV *client);
|
||||||
int sj3_ikkatu_henkan(SJ3_CLIENT_ENV *client, u_char *src, u_char *dst, int dstsiz, int mb_flag);
|
int sj3_ikkatu_henkan(SJ3_CLIENT_ENV *client, u_char *src, u_char *dst,
|
||||||
int sj3_bunsetu_henkan(SJ3_CLIENT_ENV *client, u_char *yomi, int len, u_char *kanji, int mb_flag);
|
int dstsiz, int mb_flag);
|
||||||
int sj3_bunsetu_jikouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode, int mb_flag);
|
int sj3_bunsetu_henkan(SJ3_CLIENT_ENV *client, u_char *yomi, int len,
|
||||||
int sj3_bunsetu_maekouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode, int mb_flag);
|
u_char *kanji, int mb_flag);
|
||||||
int sj3_bunsetu_kouhosuu(SJ3_CLIENT_ENV *client, u_char *yomi, int len, int mb_flag);
|
int sj3_bunsetu_jikouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode,
|
||||||
int sj3_bunsetu_zenkouho(SJ3_CLIENT_ENV *client, u_char *yomi, int len, SJ3_DOUON *douon, int mb_flag);
|
int mb_flag);
|
||||||
|
int sj3_bunsetu_maekouho(SJ3_CLIENT_ENV *client, u_char *kanji, int mode,
|
||||||
|
int mb_flag);
|
||||||
|
int sj3_bunsetu_kouhosuu(SJ3_CLIENT_ENV *client, u_char *yomi, int len,
|
||||||
|
int mb_flag);
|
||||||
|
int sj3_bunsetu_zenkouho(SJ3_CLIENT_ENV *client, u_char *yomi, int len,
|
||||||
|
SJ3_DOUON *douon, int mb_flag);
|
||||||
int sj3_tango_gakusyuu(SJ3_CLIENT_ENV *client, SJ3_STUDYREC *stdy);
|
int sj3_tango_gakusyuu(SJ3_CLIENT_ENV *client, SJ3_STUDYREC *stdy);
|
||||||
int sj3_bunsetu_gakusyuu(SJ3_CLIENT_ENV *client, u_char *yomi1, u_char *yomi2, SJ3_STUDYREC *stdy, int mb_flag);
|
int sj3_bunsetu_gakusyuu(SJ3_CLIENT_ENV *client, u_char *yomi1, u_char *yomi2,
|
||||||
int sj3_tango_touroku(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi, u_char *kanji, int code, int mb_flag);
|
SJ3_STUDYREC *stdy, int mb_flag);
|
||||||
int sj3_tango_sakujo(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi, u_char *kanji, int code, int mb_flag);
|
int sj3_tango_touroku(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi,
|
||||||
int sj3_tango_syutoku(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag);
|
u_char *kanji, int code, int mb_flag);
|
||||||
int sj3_tango_jikouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag);
|
int sj3_tango_sakujo(SJ3_CLIENT_ENV *client, long dicid, u_char *yomi,
|
||||||
int sj3_tango_maekouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf, int mb_flag);
|
u_char *kanji, int code, int mb_flag);
|
||||||
int sj3_make_dict_file(SJ3_CLIENT_ENV *client, char *path, int idxlen, int seglen, int segnum);
|
int sj3_tango_syutoku(SJ3_CLIENT_ENV *client, int dicid, u_char *buf,
|
||||||
int sj3_make_study_file(SJ3_CLIENT_ENV *client, char *path, int stynum, int clstep, int cllen);
|
int mb_flag);
|
||||||
|
int sj3_tango_jikouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf,
|
||||||
|
int mb_flag);
|
||||||
|
int sj3_tango_maekouho(SJ3_CLIENT_ENV *client, int dicid, u_char *buf,
|
||||||
|
int mb_flag);
|
||||||
|
int sj3_make_dict_file(SJ3_CLIENT_ENV *client, char *path, int idxlen,
|
||||||
|
int seglen, int segnum);
|
||||||
|
int sj3_make_study_file(SJ3_CLIENT_ENV *client, char *path, int stynum,
|
||||||
|
int clstep, int cllen);
|
||||||
int sj3_make_directory(SJ3_CLIENT_ENV *client, char *path);
|
int sj3_make_directory(SJ3_CLIENT_ENV *client, char *path);
|
||||||
int sj3_access(SJ3_CLIENT_ENV *client, char *path, int mode);
|
int sj3_access(SJ3_CLIENT_ENV *client, char *path, int mode);
|
||||||
int sj3_who(SJ3_CLIENT_ENV *client, SJ3_WHO_STRUCT *ret, int num);
|
int sj3_who(SJ3_CLIENT_ENV *client, SJ3_WHO_STRUCT *ret, int num);
|
||||||
|
|
@ -213,7 +198,8 @@ int sj3_version(SJ3_CLIENT_ENV *client, char *dst, int dstsiz);
|
||||||
|
|
||||||
/* sj.c */
|
/* sj.c */
|
||||||
int sj3_open(char *host, char *user);
|
int sj3_open(char *host, char *user);
|
||||||
int sj3_open_with_list(char *host, char *user, int dicts_num, char **dicts, int *error_num, int **error_index);
|
int sj3_open_with_list(char *host, char *user, int dicts_num, char **dicts,
|
||||||
|
int *error_num, int **error_index);
|
||||||
int sj3_close(void);
|
int sj3_close(void);
|
||||||
int sj3_getkan(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz);
|
int sj3_getkan(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz);
|
||||||
int sj3_getkan_euc(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz);
|
int sj3_getkan_euc(u_char *yomi, SJ3_BUNSETU *bun, u_char *knj, int knjsiz);
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@
|
||||||
#define iskana(c) ((0xa1 <= (c)) && ((c) <= 0xdf))
|
#define iskana(c) ((0xa1 <= (c)) && ((c) <= 0xdf))
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_str_sjistoeuc(unsigned char *out, int outlen, unsigned char *in, unsigned char *sjis_default, int *useflag)
|
sj3_str_sjistoeuc(unsigned char *out, int outlen, unsigned char *in,
|
||||||
|
unsigned char *sjis_default, int *useflag)
|
||||||
{
|
{
|
||||||
unsigned char *sjis = in, *euc = out;
|
unsigned char *sjis = in, *euc = out;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
@ -60,15 +61,17 @@ sj3_str_sjistoeuc(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
euc[0] = '\0';
|
euc[0] = '\0';
|
||||||
*useflag = 0;
|
*useflag = 0;
|
||||||
|
|
||||||
if (!sjis) return 0;
|
if (!sjis)
|
||||||
|
return 0;
|
||||||
|
|
||||||
while (*sjis && n < outlen) {
|
while (*sjis && n < outlen) {
|
||||||
if (issjis1(*sjis)) {
|
if (issjis1(*sjis)) {
|
||||||
code = sjis2euc((*sjis << 8) | *(sjis + 1));
|
code = sjis2euc((*sjis << 8) | *(sjis + 1));
|
||||||
if (n + 2 > outlen) return -1;
|
if (n + 2 > outlen)
|
||||||
|
return -1;
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
default_code = sjis2euc((sjis_default[0] << 8)
|
default_code = sjis2euc((sjis_default[0] << 8) |
|
||||||
| sjis_default[1]);
|
sjis_default[1]);
|
||||||
euc[n++] = default_code >> 8;
|
euc[n++] = default_code >> 8;
|
||||||
euc[n++] = default_code & 0xff;
|
euc[n++] = default_code & 0xff;
|
||||||
(*useflag)++;
|
(*useflag)++;
|
||||||
|
|
@ -79,23 +82,24 @@ sj3_str_sjistoeuc(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
sjis += 2;
|
sjis += 2;
|
||||||
} else {
|
} else {
|
||||||
if (*sjis >= 0xa1 && *sjis <= 0xdf) {
|
if (*sjis >= 0xa1 && *sjis <= 0xdf) {
|
||||||
if (n + 2 > outlen) return -1;
|
if (n + 2 > outlen)
|
||||||
|
return -1;
|
||||||
euc[n++] = SS2;
|
euc[n++] = SS2;
|
||||||
}
|
}
|
||||||
euc[n++] = *sjis;
|
euc[n++] = *sjis;
|
||||||
sjis++;
|
sjis++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (n > outlen) return -1;
|
if (n > outlen)
|
||||||
|
return -1;
|
||||||
|
|
||||||
euc[n] = '\0';
|
euc[n] = '\0';
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in, unsigned char *sjis_default, int *useflag)
|
sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in,
|
||||||
|
unsigned char *sjis_default, int *useflag)
|
||||||
{
|
{
|
||||||
unsigned char *euc = in, *sjis = out;
|
unsigned char *euc = in, *sjis = out;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
@ -104,12 +108,14 @@ sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
sjis[0] = '\0';
|
sjis[0] = '\0';
|
||||||
*useflag = 0;
|
*useflag = 0;
|
||||||
|
|
||||||
if (!euc) return 0;
|
if (!euc)
|
||||||
|
return 0;
|
||||||
|
|
||||||
while (*euc && n < outlen) {
|
while (*euc && n < outlen) {
|
||||||
if (iseuc(*euc)) {
|
if (iseuc(*euc)) {
|
||||||
code = euc2sjis((*euc << 8) | *(euc + 1));
|
code = euc2sjis((*euc << 8) | *(euc + 1));
|
||||||
if (n + 2 > outlen) return -1;
|
if (n + 2 > outlen)
|
||||||
|
return -1;
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
sjis[n++] = sjis_default[0];
|
sjis[n++] = sjis_default[0];
|
||||||
sjis[n++] = sjis_default[1];
|
sjis[n++] = sjis_default[1];
|
||||||
|
|
@ -120,7 +126,8 @@ sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
}
|
}
|
||||||
euc += 2;
|
euc += 2;
|
||||||
} else if (*euc == SS3) {
|
} else if (*euc == SS3) {
|
||||||
if (n + 2 > outlen) return -1;
|
if (n + 2 > outlen)
|
||||||
|
return -1;
|
||||||
sjis[n++] = sjis_default[0];
|
sjis[n++] = sjis_default[0];
|
||||||
sjis[n++] = sjis_default[1];
|
sjis[n++] = sjis_default[1];
|
||||||
euc += 3;
|
euc += 3;
|
||||||
|
|
@ -133,7 +140,8 @@ sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
euc++;
|
euc++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (n > outlen) return -1;
|
if (n > outlen)
|
||||||
|
return -1;
|
||||||
|
|
||||||
sjis[n] = '\0';
|
sjis[n] = '\0';
|
||||||
return n;
|
return n;
|
||||||
|
|
@ -142,14 +150,16 @@ sj3_str_euctosjis(unsigned char *out, int outlen, unsigned char *in, unsigned ch
|
||||||
int
|
int
|
||||||
sj3_sjistoeuclen(unsigned char *str, int max)
|
sj3_sjistoeuclen(unsigned char *str, int max)
|
||||||
{
|
{
|
||||||
register int len = 0, bytes = 1;
|
int len = 0, bytes = 1;
|
||||||
|
|
||||||
if (!max) return 0;
|
if (!max)
|
||||||
|
return 0;
|
||||||
while ((bytes <= max) && *str) {
|
while ((bytes <= max) && *str) {
|
||||||
if (issjis1(*str)) {
|
if (issjis1(*str)) {
|
||||||
str++;
|
str++;
|
||||||
bytes++;
|
bytes++;
|
||||||
if (!*str) break;
|
if (!*str)
|
||||||
|
break;
|
||||||
len += 2;
|
len += 2;
|
||||||
} else if (*str & 0x80) {
|
} else if (*str & 0x80) {
|
||||||
len += 2;
|
len += 2;
|
||||||
|
|
@ -194,8 +204,8 @@ sj_euc2sjis (unsigned char *s)
|
||||||
void
|
void
|
||||||
sj_jis2sjis(unsigned char *s)
|
sj_jis2sjis(unsigned char *s)
|
||||||
{
|
{
|
||||||
register int high, low;
|
int high, low;
|
||||||
register int nh, nl;
|
int nh, nl;
|
||||||
|
|
||||||
high = s[0];
|
high = s[0];
|
||||||
low = s[1];
|
low = s[1];
|
||||||
|
|
@ -206,8 +216,7 @@ sj_jis2sjis (unsigned char *s)
|
||||||
nl = low + 0x1f;
|
nl = low + 0x1f;
|
||||||
if (low > 0x5f)
|
if (low > 0x5f)
|
||||||
nl++;
|
nl++;
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
nl = low + 0x7e;
|
nl = low + 0x7e;
|
||||||
s[0] = nh;
|
s[0] = nh;
|
||||||
s[1] = nl;
|
s[1] = nl;
|
||||||
|
|
@ -224,16 +233,16 @@ sj_sjis2euc (unsigned char *s)
|
||||||
void
|
void
|
||||||
sj_sjis2jis(unsigned char *s)
|
sj_sjis2jis(unsigned char *s)
|
||||||
{
|
{
|
||||||
register int byte1, byte2;
|
int byte1, byte2;
|
||||||
register unsigned char *sp;
|
unsigned char *sp;
|
||||||
|
|
||||||
sp = s;
|
sp = s;
|
||||||
byte1 = *sp++;
|
byte1 = *sp++;
|
||||||
byte2 = *sp--;
|
byte2 = *sp--;
|
||||||
|
|
||||||
if (byte1 <= 0x80 || byte1 >= 0xf0
|
if (byte1 <= 0x80 || byte1 >= 0xf0 ||
|
||||||
|| ( byte1>=0xa0 && byte1<=0xdf )
|
(byte1 >= 0xa0 && byte1 <= 0xdf) ||
|
||||||
|| byte2 <= 0x3f || byte2 >= 0xfe || byte2==0x7f ) {
|
byte2 <= 0x3f || byte2 >= 0xfe || byte2 == 0x7f) {
|
||||||
byte1 = 0x81;
|
byte1 = 0x81;
|
||||||
byte2 = 0x40;
|
byte2 = 0x40;
|
||||||
}
|
}
|
||||||
|
|
@ -241,8 +250,7 @@ sj_sjis2jis (unsigned char *s)
|
||||||
if (byte2 >= 0x9f) {
|
if (byte2 >= 0x9f) {
|
||||||
*sp++ = (byte1 << 1) + 0x22;
|
*sp++ = (byte1 << 1) + 0x22;
|
||||||
*sp = byte2 - 0x7e;
|
*sp = byte2 - 0x7e;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
*sp++ = (byte1 << 1) + 0x21;
|
*sp++ = (byte1 << 1) + 0x21;
|
||||||
*sp = byte2 - ((byte2 <= 0x7e) ? 0x1f : 0x20);
|
*sp = byte2 - ((byte2 <= 0x7e) ? 0x1f : 0x20);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue