home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / dic / src / defs.h < prev    next >
Text File  |  1995-06-20  |  8KB  |  416 lines

  1. #include    <stdio.h>
  2. #include    <stdlib.h>
  3. #include    <string.h>
  4. #include    <ctype.h>
  5.  
  6. #ifndef    SJIS
  7. #  ifndef    EUC
  8. #    define    SJIS
  9. #  endif
  10. #endif    /* SJIS */
  11.  
  12. #ifdef    MSDOS
  13. #  ifndef    FMRBIOS
  14. #    ifndef        MSCDEX
  15. #        define        FMRBIOS
  16. #    endif
  17. #  endif
  18. #endif    /* MSDOS */
  19.  
  20. #ifdef    MSDOS
  21. #include    <stdlib.h>
  22. #  ifdef    TC
  23. #    include    <alloc.h>
  24. #  else
  25. #    include    <malloc.h>
  26. #  endif
  27. #include    <jctype.h>
  28. #include    <dos.h>
  29. #endif    /* MSDOS */
  30.  
  31. #ifdef    UNIX
  32.  
  33. #include    <curses.h>
  34. #ifdef    NEWS
  35. #include    <locale.h>
  36. #endif
  37.  
  38. #ifndef    MORE
  39. #define    MORE    "more"
  40. #endif
  41.  
  42. #ifndef    CD_ROM
  43. #define    CD_ROM    "/dev/Cdrom"
  44. #endif
  45.  
  46. #ifdef    iskanji
  47. #  undef    iskanji
  48. #  undef    iskanji2
  49. #endif
  50.  
  51. #ifdef    EUC
  52. #define    iskanji(c)    ((c) & 0x80)
  53. #define    iskanji2(c)    ((c) & 0x80)
  54. #endif    /* EUC */
  55.  
  56. #ifdef    SJIS
  57. #define    iskanji(c)    (((c) >= 0x80 && (c) <= 0x9F) ||\
  58.              ((c) >= 0xE0 && (c) <= 0xFE))
  59. #define    iskanji2(c)    (((c) >= 0x30 && (c) <= 0x7E) ||\
  60.              ((c) >= 0x80 && (c) <= 0xFE))
  61. #endif    /* SJIS */
  62.  
  63. #endif    /* UNIX */
  64.  
  65. #ifdef    ERR
  66. #undef    ERR
  67. #endif
  68.  
  69. #ifdef    FALSE
  70. #undef    FALSE
  71. #endif
  72.  
  73. #ifdef    TRUE
  74. #undef    TRUE
  75. #endif
  76.  
  77. #define    ERR    (-1)
  78. #define    FALSE    0
  79. #define    TRUE    1
  80.  
  81. #define    HONBUN_MAX_LINE    1000
  82. #define    MENU_CHK_LINE    30
  83.  
  84. #define    BLOCK_SIZE    2048
  85. #define    INDEX_MAX    127
  86.  
  87. #ifdef    UNIX
  88. #define    COLS_MAX    256
  89. #define    LINE_MAX    128
  90. #else
  91. #define    COLS_MAX    160
  92. #define    LINE_MAX    64
  93. #endif
  94.  
  95. #ifdef    UNIX
  96. #define    FAR    
  97. #define    MALLOC        malloc
  98. #define    FREE        free
  99. #define    FAR_MEMCPY    memcpy
  100. #define    NEAR_MEMCPY    memcpy
  101. #define    FAR_STRCPY    strcpy
  102. #define    NEAR_STRCPY    strcpy
  103. #endif    /* UNIX */
  104.  
  105. #ifdef    MSDOS
  106. #define    FAR        far
  107. #  ifdef MSC
  108. #    define    MALLOC        _fmalloc
  109. #    define    FREE        _ffree
  110. #  else
  111. #    define    MALLOC        farmalloc
  112. #    define    FREE        farfree
  113. #  endif
  114. #endif    /* MSDOS */
  115.  
  116. #define    DEF_COLS_MAX    80
  117. #define    DEF_LINE_MAX    24
  118.  
  119. #define    MENU_MAX    128
  120. #define    BETU_MAX    10
  121.  
  122. #define    KEY_NULL    (-1)
  123. #define    KEY_KANA    0
  124. #define    KEY_HYOKI    1
  125. #define    KEY_ALPHA    2
  126. #define    KEY_KANJI    3
  127. #define    KEY_NUMBER    4
  128.  
  129. #define    CH_BOLD_ON    1
  130. #define    CH_BOLD_OFF    2
  131. #define    CH_ITALIC_ON    3
  132. #define    CH_ITALIC_OFF    4
  133.  
  134. #define    DIC_FILE_MODE    0
  135. #define    DIC_DEVICE_MODE    1
  136.  
  137. #define    zentohan    zen2han
  138. #define    hantozen    han2zen
  139.  
  140. #define    IDX_MAX        15
  141. #define    IDX_KANA    (index_tab[0].ip)
  142. #define    IDX_ALPHA    (index_tab[1].ip)
  143. #define    IDX_KANJI    (index_tab[2].ip)
  144. #define    IDX_HYOKI    (index_tab[3].ip)
  145. #define    IDX_KKANA    (index_tab[4].ip)
  146. #define    IDX_KHYOKI    (index_tab[5].ip)
  147. #define    IDX_KALPHA    (index_tab[6].ip)
  148. #define    IDX_TANGO    (index_tab[7].ip)
  149. #define    IDX_CROSS    (index_tab[8].ip)
  150. #define    IDX_ZKANA    (index_tab[9].ip)
  151. #define    IDX_ZHYOKI    (index_tab[10].ip)
  152. #define    IDX_ZALPHA    (index_tab[11].ip)
  153. #define    IDX_NUMBER    (index_tab[12].ip)
  154. #define    IDX_MENU    (index_tab[13].ip)
  155. #define    IDX_COPR    (index_tab[14].ip)
  156.  
  157. typedef    unsigned char    uchar;
  158. typedef    unsigned short    ushort;
  159. typedef    unsigned int    uint;
  160. typedef    unsigned long    ulong;
  161.  
  162. typedef    struct {
  163.     uchar        id;
  164.     uchar        type[3];
  165.     ulong        start_block;
  166.     ulong        block_max;
  167. } INDEX;
  168.  
  169. typedef    struct    {
  170.     uchar    id;
  171.     INDEX    *ip;
  172. } INDTAB;
  173.  
  174. typedef    struct {
  175.     ulong        block;
  176.     ushort        offset;
  177. } POINT;
  178.  
  179. typedef    struct _MULPTR {
  180.     struct _MULPTR    *next;
  181.     int        bs, mx;
  182.     char        mul_ttl[1];
  183. } MULPTR;
  184.  
  185. typedef    struct _MULTI {
  186.     struct _MULTI    *next;
  187.     struct _MULPTR    *mul_list;
  188. } MULTI;
  189.  
  190. typedef    struct _CAT {
  191.     struct _CAT    *next;
  192.     char        *ttl;
  193.     int        no;
  194.     int        gaz, gah;
  195. } CATALOG;
  196.  
  197. typedef    struct _DM {
  198.     struct _DM    *next;
  199.     int        mode;
  200.     char        *file;
  201.     char        *ttl;
  202.     int        no;
  203.     int        gaz, gah;
  204. } MENU;
  205.  
  206. typedef    struct _MENUPTR {
  207.     struct _MENUPTR    *next;
  208.     int        sx, sy;
  209.     int        bx, by;
  210.     POINT        pos;
  211. } MENUPTR;
  212.  
  213. /*****************************************************
  214.  
  215.     Data Defs
  216.  
  217. /*****************************************************/
  218. /*    main.c    */
  219. extern    char    *program_name;
  220.  
  221. extern    int    all_index_disp;
  222. extern    int    src_index_disp;
  223.  
  224. extern    int    lines_max;
  225. extern    int    cols_max;
  226. extern    int    towns_flg;
  227.  
  228. extern    char    *dict_file_name;
  229. extern    FILE    *dev_fp;
  230. extern    FILE    *ext_out_fp;
  231. extern    char    ext_out_file[128];
  232.  
  233. extern    char    *dev_unit_name;
  234.  
  235. #ifndef    STDFILE
  236. extern    int    dev_unit_no;
  237. #endif
  238.  
  239. extern    char    *select_dic_str;
  240. extern    int    now_dic_mode;
  241. extern    int    now_dev_id;
  242. extern    MENU    *dic_menu;
  243. extern    MENU    *now_dic_menu;
  244. extern    int    dic_count;
  245.  
  246. extern    int    pause_flg;
  247. extern    int    prompt_flg;
  248. extern    int    zenkou_flag;
  249. extern    int    cutof_flag;
  250. extern    int    gaiji_flag;
  251. extern    int    color_flag;
  252. extern    int    bitmap_flag;
  253. extern    int    extdisp_flag;
  254. extern    int    extinput_flag;
  255. extern    int    copr_disp_flg;
  256. extern    int    menu_disp_flg;
  257. extern    int    tex_out_flag;
  258.  
  259. /*    dic.c    */
  260. extern    MULTI    *multi_top;
  261.  
  262. extern    int    index_tab_base;
  263. extern    int    index_tab_max;
  264.  
  265. extern    INDEX    *index_ptr;
  266. extern    int    index_max;
  267. extern    int    index_total;
  268. extern    INDEX    index_buf[INDEX_MAX];
  269. extern    INDTAB    index_tab[];
  270.  
  271. extern    POINT    title;
  272. extern    POINT    honbun;
  273.  
  274. /*    dicget.c    */
  275. extern    int    menu_max;
  276. extern    int    betu_max;
  277. extern    MENUPTR *menu_top;
  278. extern    MENUPTR    *betu_top;
  279. extern    MENUPTR    menu_tab[MENU_MAX];
  280. extern    MENUPTR    betu_tab[BETU_MAX];
  281.  
  282. /*    cdio.c    */
  283. extern    ulong    vtoc_start_block;
  284. extern    ulong    vtoc_end_block;
  285. extern    int    vtoc_file_max;
  286.  
  287. extern    char    file_name[48];
  288. extern    ulong    file_start_block;
  289. extern    ulong    file_end_block;
  290.  
  291. extern    uchar    dic_buf[BLOCK_SIZE];
  292.  
  293. extern    int    comp_dic_mode;
  294.  
  295. /*    gaiji.c    */
  296. extern    int    dicin_gaiji_flag;
  297. extern    ulong    zen_gaiji_start_block;
  298. extern    ulong    zen_gaiji_end_block;
  299. extern    ulong    han_gaiji_start_block;
  300. extern    ulong    han_gaiji_end_block;
  301. extern    char    *gaiji_map_file;
  302.  
  303. /*****************************************************
  304.  
  305.     Func Defs
  306.  
  307. /*****************************************************/
  308. /*    lib.c    */
  309. int    toshort(uchar *p);
  310. long    tolong(uchar *p);
  311. int    iszero(uchar *p, int len);
  312. int    htoi(char *p);
  313. int    sjistojis(int cd);
  314. int     jistosjis(int cd);
  315. #ifdef    EUC
  316. int    jistoeuc(int ch);
  317. #endif
  318. int    hantozen(int code);
  319. int    zentohan(int ch);
  320. void    str_cnv(uchar *buf, uchar *str, int len);
  321. void    put_jis(uchar *str, int len);
  322. uchar    *str_jis(uchar *buf, uchar *str);
  323. uchar    *str_word(uchar *buf, uchar *str);
  324. char    *strlow(char *str);
  325. char    *skipspc(char *str);
  326. char    *skipword(char *str);
  327. int    strcut(int max, char *av[], char *str);
  328. #ifdef    LSIC
  329. char    *strdup(char *str);
  330. #endif
  331. char    *gobi_conv();
  332. int    gobi_init(uchar *str);
  333.  
  334. /*    cdio.c    */
  335. int    CD_mode_set(int mode);
  336. int    CD_read_sect(ulong sect, int count, char *buff);
  337. int    CD_read_time(int min, int sec, int blk, int count, char *buff);
  338. int    CD_file_init();
  339. int    CD_file_open(int no);
  340.  
  341. int    IO_block_read(ulong block);
  342. int    IO_seek(ulong block, ushort offset);
  343. int    IO_getc();
  344. int    IO_read(char *buf, int size);
  345.  
  346. int    Cache_init();
  347. int    Cache_flush(int id);
  348. char    *id_to_name(int id);
  349. int    name_to_id(char *name);
  350.  
  351. /*    gaiji.c    */
  352. void    Gaiji_tab_init();
  353. void    Gaiji_init(int zen, int han);
  354. void    Gaiji_close();
  355. uchar    *Gaiji_convert(uint *extc);
  356. int    Gaiji_config(char *file);
  357. int    Gaiji_maping(int code, char *str);
  358. int    Gaiji_display(ushort extc);
  359. void    Gaiji_zenkaku_bitmap();
  360. void    Gaiji_hankaku_bitmap();
  361.  
  362. /*    scrn.c    */
  363. int    dic_display(ulong block, ushort offset);
  364. void    pager(POINT *tab, int max, int fg);
  365. int    more(POINT *tab, int max);
  366.  
  367. /*    dic.c    */
  368. int    init_serch(char *str);
  369. int    dic_serch();
  370. void    index_tab_init(int bs, int mx);
  371. int    dic_open();
  372.  
  373. /*    dicget.c    */
  374. int    cd_get_data();
  375. char    *cd_gets(char *buf, int max, int line);
  376. int    dic_seek(ulong block, ushort offset);
  377.  
  378. /*    diclib.c    */
  379. char    *idx_name(INDEX *ip);
  380. int    dic_kensaku(uchar *str);
  381. void    dic_print(int mx);
  382.  
  383. void    dic_index_print();
  384. void    dic_index_list();
  385. void    multi_index_print(MULPTR *mp);
  386. void    multi_dic_print(MULTI *mul);
  387. int    multi_select(int no);
  388.  
  389. /*    catalog.c    */
  390. CATALOG    *catalog_load(char *file);
  391. void    catalog_free(CATALOG *cp);
  392.  
  393. /*    cmds.c    */
  394. int    command(char *cmd);
  395.  
  396. #ifdef    HISTORY
  397. /*    his.c    */
  398. char    *input(char *buf, int max);
  399. #endif
  400.  
  401. #ifdef    MKDIC
  402. int    compress(int flag, char *file);
  403. #endif
  404.  
  405. /*    main.c    */
  406. int    main_device_open(int mode, char *file);
  407. int    main_dic_open(MENU *mp);
  408. int    main_menu_set(int mode, char *file,
  409.         char *ttl, int no, int gah, int gaz);
  410. int    main_catalog_set(char *file, int no);
  411. int    main_dic_list();
  412. int    main_dic_select(int no, char *str);
  413.  
  414. /*    select.c    */
  415. int    device_config(char *file);
  416.