diff --git a/demo/sample.c b/demo/sample.c deleted file mode 100644 index 34ab95e..0000000 --- a/demo/sample.c +++ /dev/null @@ -1,324 +0,0 @@ -/*- - * SPDX-License-Identifier: MIT-open-group - * - * Copyright (c) 1994 Sony Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of Sony Corporation - * shall not be used in advertising or otherwise to promote the sale, use - * or other dealings in this Software without prior written authorization - * from Sony Corporation. - */ - -#include -#include -#include - -#include "sj3lib.h" -#include "wchar16.h" - -#define RETURN(c) ((c == '\n') || (c == '\r')) -#define RKFILE "/usr/local/lib/sj3/sjrk" -#define LOCALHOST "localhost" -#define HBUFSIZ 512 -#define QBUFSIZ 256 - -char *pname; -char *hname; -int current_locale = LC_CTYPE_EUC; - -void -usage() -{ - fprintf(stderr, "Usage: %s [-v] [-H hostname]\n", pname); - exit(1); -} - -int -main(int argc, char **argv) -{ - struct bunsetu bun[HBUFSIZ]; - unsigned char alphabet[QBUFSIZ]; - unsigned char yomi[HBUFSIZ]; - unsigned char kanji[BUFSIZ]; - extern char *optarg; - char *rindex(), *getlogin(); - char *loc, *uname; - struct passwd *getpwuid(); - struct passwd *pwd; - int count = 1; - int c, ret, vflag; - - loc = setlocale(LC_CTYPE, ""); - - if (strcmp(loc, "ja_JP.SJIS") == 0) { - current_locale = LC_CTYPE_SHIFTJIS; - } else if (strncmp(loc, "ja", 2) != 0 && strncmp(loc, "Ja", 2) != 0) { - fprintf(stderr, "Error: %s is not japanese locale\n", loc); - exit(1); - } - vflag = 0; - hname = NULL; - - print_head(); - - pname = argv[0]; - - while ((c = getopt(argc, argv, "vk:H:")) != EOF) { - switch (c) { - case 'v': - vflag++; - break; - case 'H': - hname = optarg; - break; - case 'k': - fprintf(stderr, "optarg = %s\n", optarg); - count = atoi(optarg); - break; - case '?': - default: - usage(); - break; - } - } - - uname = getlogin(); - if (uname == NULL || *uname == '\0') { - setpwent(); - if ((pwd = getpwuid(getuid())) != NULL) { - uname = pwd->pw_name; - endpwent(); - } else { - fprintf(stderr, "Can't get user name\n"); - exit(1); - } - } - - if (ret = sj3_rkinit(RKFILE)) { - if (ret == 1) { - fprintf(stderr, - "Can't open Romaji Kana Rule file %s\n", - RKFILE); - } else { - fprintf(stderr, "Error sj3_rkinit\n"); - } - exit(1); - } - ret = sj3_open(hname, uname); - if (hname == NULL) - hname = LOCALHOST; - if (ret != 0) { - if (ret & SJ3_SERVER_DEAD) { - fprintf(stderr, "%s:sj3serv dead\n", hname); - exit(1); - } else if (ret & SJ3_ALREADY_CONNECTED) { - fprintf(stderr, - "Already connected %s:sj3serv\n", hname); - exit(1); - } else if (ret & SJ3_CONNECT_ERROR) { - fprintf(stderr, "Can't connect %s:sj3serv\n", - hname); - exit(1); - } else if (ret & SJ3_CANNOT_OPEN_MDICT) { - fprintf(stderr, - "Can't open sj3 main dictionary\n"); - (void)sj3_close(); - exit(1); - } - fprintf(stderr, - "Warning sj3_open error (return 0x%x)\n", ret); - } - - while (1) { - fprintf(stdout, "[Input Alphabet] "); - if (fgets((char *)alphabet, QBUFSIZ, stdin) == NULL) - break; - if (RETURN(alphabet[0])) - break; - - rkconvs(yomi, alphabet); - - ret = sj3_getkan_mb(yomi, bun, kanji, BUFSIZ); - if (ret == -1) { - fprintf(stderr, "sj3_getkan: disconnected %s:sj3serv\n", - hname); - exit(1); - } - - if (vflag) - pr_kanji(bun, ret); - - if (bun[ret - 1].destlen == 0) - strcat(kanji, bun[ret - 1].srcstr); - fprintf(stdout, "[Output Yomi ]:[%s]\n", yomi); - fprintf(stdout, "[Output Kanji]:[%s]\n", kanji); - } - - (void)sj3_close(); -} - -void -rkconvs(unsigned char *yomi, unsigned char *roma) -{ - int i, len, rlen; - unsigned char rbuf[16]; - unsigned char *p, *q, *yp; - unsigned char ybuf[32]; - unsigned char tmp[HBUFSIZ]; - - yp = tmp; - p = rbuf; - rlen = 0; - while (*roma != '\0' && !RETURN(*roma)) { - *p++ = *roma++; - *p = '\0'; - rlen++; - while (1) { - if ((len = sj3_rkconv_mb(rbuf, ybuf)) > 0) { - q = ybuf; - while (*q != '\0') - *yp++ = *q++; - i = rlen; - rlen = strlen(rbuf); - p = rbuf; - p += rlen; - if (len >= i) - break; - } else if (len < 0) { - *yp++ = rbuf[0]; - p = rbuf; - q = (p + 1); - while (*q != '\0') - *p++ = *q++; - *p = '\0'; - rlen--; - } else { - break; - } - } - } - - if (rlen > 0) { - *p++ = '\n'; - *p = '\0'; - rlen++; - while (rbuf[0] != '\0') { - if ((len = sj3_rkconv_mb(rbuf, ybuf)) > 0) { - q = ybuf; - while (*q != '\0') - *yp++ = *q++; - - rlen = strlen(rbuf); - p = rbuf; - p += rlen; - } else { - *yp++ = rbuf[0]; - p = rbuf; - q = (p + 1); - while (*q != '\0') - *p++ = *q++; - *p = '\0'; - } - } - yp--; - } - *yp = '\0'; - - sj3_hantozen_mb(yomi, tmp); -} - -void -print_head() -{ - fprintf(stdout, "\t*--------------------------------------------*\n"); - fprintf(stdout, "\t* Sample Program for *\n"); - fprintf(stdout, "\t* New Japanese Convert Library *\n"); - fprintf(stdout, "\t* SJ3LIB *\n"); - fprintf(stdout, "\t* *\n"); - fprintf(stdout, "\t* Terminator of Input : Newline-code *\n"); - fprintf(stdout, "\t* *\n"); - fprintf(stdout, "\t* If you want to end this process, *\n"); - fprintf(stdout, "\t* input Newline-code or Control-D. *\n"); - fprintf(stdout, "\t*--------------------------------------------*\n"); -} - -void -str_make(unsiged char *out_str, unsigned char *in_str, int len) -{ - strncpy(out_str, in_str, len); - out_str += len; - *out_str = '\0'; -} - -void -pr_douon(unsigned char *yomi) -{ - struct douon douon[BUFSIZ]; - int douon_cnt, i; - - douon_cnt = sj3_getdouon_mb(yomi, douon); - if (douon_cnt < 0) { - fprintf(stderr, "sj3_getdouon: disconnected %s:sj3serv\n", - hname); - exit(1); - } - fprintf(stdout, "\t\tsj3_getdouon(yomi, douon)"); - fprintf(stdout, "...Douon count : %d\n", douon_cnt); - for (i = 0; i < douon_cnt; i++) { - fprintf(stdout, "\t\t--- * Douon : %d * ---\n", i); - fprintf(stdout, "\t\t\tdlen : %d\n", douon[i].dlen); - fprintf(stdout, "\t\t\tddata:[%s]\n", douon[i].ddata); - } -} - -void -pr_bunsetu(struct bunsetu *now_bun, int bunsetu_cnt) -{ - unsigned char tmp_str[BUFSIZ]; - unsigned char *yomi; - - fprintf(stdout, "\t--- < Bunsetu : %d > ---\n", bunsetu_cnt); - fprintf(stdout, "\t\tsrclen : %d\n", now_bun->srclen); - str_make(tmp_str, now_bun->srcstr, now_bun->srclen); - fprintf(stdout, "\t\tsrcstr:[%s]\n", tmp_str); - - yomi = tmp_str; - if (now_bun->destlen > 0) - pr_douon(yomi); - else - fprintf(stderr, "\t\tNot Conversion Bunsetsu\n"); - - fprintf(stdout, "\t\tdestlen : %d\n", now_bun->destlen); - str_make(tmp_str, now_bun->deststr, now_bun->destlen); - fprintf(stdout, "\t\tdeststr:[%s]\n", tmp_str); -} - -void -pr_kanji(struct bunsetu *bun, int bnum) -{ - int i; - - fprintf(stdout, "\tsj3_getkan(yomi, kanji)"); - fprintf(stdout, "...Bunsetu count : %d\n", bnum); - for (i = 0; i < bnum; i++) - pr_bunsetu(&(bun[i]), i); -}