/* esecannaserver --- pseudo canna server that wraps another IME.
* Copyright (C) 1999-2000 Yasuhiro Take
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __misc_h__
#define __misc_h__
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
typedef struct {
size_t size;
char *buf;
} buffer_t;
#ifndef __uchar_t__
#define __uchar_t__
typedef unsigned char uchar;
#endif
#define ISSJISKANJI1(_c) ((((_c) & 0xff) >= 0x81 && ((_c) & 0xff) <= 0x9f) || \
(((_c) & 0xff) >= 0xe0 && ((_c) & 0xff) <= 0xfc))
#define ISSJISKANA(_c) (((_c) & 0xff) >= 0xa0 && ((_c) & 0xff) <= 0xdf)
#define ISSJIS_ZENKAKU_HIRAGANA(_c1,_c2) (((_c1) & 0xff) == 0x82 && \
((_c2) & 0xff) >= 0x9f && \
((_c2) & 0xff) <= 0xf1)
#define ISSJIS_ZENKAKU_KATAKANA(_c1,_c2) (((_c1) & 0xff) == 0x83 && \
((_c2) & 0xff) >= 0x40 && \
((_c2) & 0xff) <= 0x94)
#define ISSJIS_ZENKAKU_VU(_c1,_c2) (((_c1) & 0xff) == 0x83 && \
((_c2) & 0xff) == 0x94)
#define MYFREE(_p) {if(_p) {free(_p); _p=NULL;} }
typedef void (*signalhandler_t)(int);
int m_daemonize(char *pid_path);
#ifndef __misc_c__
extern int m_message_level;
#endif
#define MSG_DEBUG 0
#define MSG_NOTICE 1
int m_message_init(char *logfilepath);
int m_message_term();
int m_message_debug(const char *fmt, ...);
int m_message_notice(const char *fmt, ...);
#define m_msg_dbg m_message_debug
#define m_msg m_message_notice
int buffer_free(buffer_t *b);
int buffer_check(buffer_t *b, size_t required_size);
int buffer_clear(buffer_t *b);
void *m_memdup(void *src, size_t n);
char *m_makepath(char *dir, char *file);
int m_splitpath(char *path, char **dir, char **file);
char *m_netaddr2ascii(uint netaddr, char *ascii);
int m_socket_read(int fd, char *ptr, int totalsize);
int m_socket_write(int fd, char *ptr, int totalsize);
int m_count_canna_mode(int mode);
int m_get_canna_mode(int mode, int n);
int m_count_valid_canna_mode(int mode);
int cannawc2euc(ushort *src, int srclen, char *dest, int destlen);
int euc2cannawc(char *src, int srclen, ushort *dest, int destlen);
int cannawcstrlen(ushort *ws);
int euc2sjis(uchar *euc, int euclen, uchar *sjis, int sjislen);
int sjis2euc(uchar *sjis, int sjislen, uchar *euc, int euclen);
int m_replace_string(uchar *eucbuf, char *pre, char *post);
int m_convert_zen2han(uchar *sjisbuf);
int m_convert_hankana2zenkana(uchar *euc, int len);
int m_convert_zenkana2zenhira(uchar *src, uchar *dst, int len);
int m_convert_zenhira2zenkata(uchar *euc_hira, int slen, uchar *euc_kata);
int m_setup_signal(signalhandler_t handler);
int m_copy_file(char *from, char *to);
int m_copy_file_fp(FILE *from, FILE *to);
int m_exist_hankata(uchar *euc);
int m_is_zenkata_string(uchar *euc);
int m_is_hiragana_string(uchar *euc);
int m_reconvroma(uchar *src, uchar *dst);
/* system() */
int m_system_clear();
int m_system_register_file(int fd);
int m_system(char *command);
/* 設定ファイル読み込み関数 */
int m_conf1_parse(char *line, char **ope_r, char **val_r);
int m_conf_string(char *ope, char *opestr, char *val, char **val_r);
int m_conf_multiple_choice(char *ope, char *opestr, char *val, char **choice,
int choice_n, int case_sensitive);
int m_conf_tof(char *ope, char *opestr, char *val, char *str1, char *str2,
int case_sensitive);
int m_conf_isequal(char *ope, char *opestr, char *val, char *valstr);
#define M_CONF_YESNO(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"NO","YES",TRUE)
#define M_CONF_IYESNO(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"NO","YES",FALSE)
#define M_CONF_ONOFF(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"OFF","ON",TRUE)
#define M_CONF_IONOFF(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"OFF","ON",FALSE)
#define M_CONF_TORF(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"FALSE", "ON", TRUE)
#define M_CONF_ITORF(_ope,_opestr,_val) m_conf_tof((_ope),(_opestr),(_val), \
"FALSE", "TRUE", FALSE)
#endif
syntax highlighted by Code2HTML, v. 0.9.1