Mercurial > freewnn
comparison Wnn/include/wnn_os.h @ 0:bbc77ca4def5
initial import
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Thu, 13 Dec 2007 04:30:14 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:bbc77ca4def5 |
---|---|
1 /* | |
2 * $Id: wnn_os.h,v 1.17 2006/03/04 19:01:45 aonoto Exp $ | |
3 */ | |
4 | |
5 /* | |
6 * FreeWnn is a network-extensible Kana-to-Kanji conversion system. | |
7 * This file is part of FreeWnn. | |
8 * | |
9 * Copyright Kyoto University Research Institute for Mathematical Sciences | |
10 * 1987, 1988, 1989, 1990, 1991, 1992 | |
11 * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 | |
12 * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992 | |
13 * Copyright FreeWnn Project 1999, 2000, 2002, 2005, 2006 | |
14 * | |
15 * Maintainer: FreeWnn Project | |
16 * | |
17 * This library is free software; you can redistribute it and/or | |
18 * modify it under the terms of the GNU Lesser General Public | |
19 * License as published by the Free Software Foundation; either | |
20 * version 2 of the License, or (at your option) any later version. | |
21 * | |
22 * This library is distributed in the hope that it will be useful, | |
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
25 * Lesser General Public License for more details. | |
26 * | |
27 * You should have received a copy of the GNU Lesser General Public | |
28 * License along with this library; if not, write to the | |
29 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
30 * Boston, MA 02111-1307, USA. | |
31 */ | |
32 | |
33 #ifndef WNN_OS_H | |
34 #define WNN_OS_H | |
35 | |
36 #ifdef HAVE_CONFIG_H | |
37 # include <config.h> | |
38 #endif | |
39 | |
40 /* system headers needed for system dependent configuration */ | |
41 #include <signal.h> | |
42 #if STDC_HEADERS | |
43 # include <stdlib.h> | |
44 # include <limits.h> | |
45 #endif /* STDC_HEADERS */ | |
46 | |
47 #include <sys/types.h> | |
48 #include <sys/file.h> | |
49 #if HAVE_SYS_PARAM_H | |
50 # include <sys/param.h> | |
51 #endif | |
52 | |
53 /* strchr vs. index, etc. */ | |
54 #if (HAVE_MEMSET) && !(HAVE_BZERO) | |
55 # define bzero(adr,n) memset((adr),0,(n)) | |
56 #endif | |
57 #if !(HAVE_STRCHR) && (HAVE_INDEX) | |
58 # define strchr index | |
59 #endif | |
60 #if !(HAVE_STRRCHR) && (HAVE_RINDEX) | |
61 # define strrchr rindex | |
62 #endif | |
63 | |
64 /* SIGNAL */ | |
65 | |
66 #ifdef SYSVR2 | |
67 #ifndef re_signal | |
68 # define re_signal(x, y) signal((x), (y)) | |
69 #endif | |
70 #else | |
71 # define re_signal(x, y) | |
72 #endif | |
73 | |
74 #if !defined (SIGCHLD) && defined (SIGCLD) | |
75 # define SIGCHLD SIGCLD | |
76 #endif | |
77 | |
78 typedef RETSIGTYPE (*intfnptr) (); | |
79 | |
80 /* Temporally place the number of filedescripters hack here. */ | |
81 #if HAVE_GETDTABLESIZE | |
82 # define WNN_NFD getdtablesize() | |
83 #elif defined (OPEN_MAX) | |
84 # define WNN_NFD OPEN_MAX | |
85 #elif defined (NOFILE) | |
86 # define WNN_NFD NOFILE | |
87 #endif /* HAVE_GETDTABLESIZE */ | |
88 | |
89 /* pseudo ramdom number */ | |
90 #if !defined (RAND_MAX) | |
91 # if defined (INT_MAX) | |
92 # define RAND_MAX INT_MAX | |
93 # else | |
94 # define RAND_MAX 0x7fffffff | |
95 # endif /* INT_MAX */ | |
96 #endif /* RAND_MAX*/ | |
97 | |
98 #if HAVE_DRAND48 | |
99 # define DRAND() drand48 () | |
100 # define SDRAND(x) srand48 (x) | |
101 #elif HAVE_RAMDOM | |
102 # define DRAND() ((double) random() / (double) RAND_MAX) | |
103 # define SDRAND(x) srandom (x) | |
104 #else | |
105 # define DRAND() ((double) rand() / (double) RAND_MAX) | |
106 # define SDRAND(x) srand (x) | |
107 #endif /* HAVE_DRAND48 */ | |
108 | |
109 #if HAVE_RANDOM | |
110 # define RAND() random () | |
111 # define SRAND(x) srandom (x) | |
112 #else | |
113 # define RAND() rand () | |
114 # define SRAND(x) srand (x) | |
115 #endif /* HAVE_RANDOM */ | |
116 | |
117 /* | |
118 * It may be needless and had better be removed, however, | |
119 * Wnn4 did not take it for granted that the system provided | |
120 * FD_SET and other feature that SUS v.2 determines. | |
121 * So I left Wnn4's own definition with a little modification | |
122 * in case the system did not provide the feature. | |
123 * I took a look into the FreeBSD definition of FD_* family. | |
124 * A small change comes from Canna 3.6p3. | |
125 */ | |
126 #if !defined(HAVE_FD_SET) && !defined(FD_SET) && defined(HAVE_UNISTD_H) | |
127 # include <unistd.h> /* to define FD_SET */ | |
128 #endif | |
129 #if !defined(HAVE_FD_SET) && !defined(FD_SET) | |
130 typedef unsigned long fd_mask; | |
131 #define BINTSIZE (sizeof(unsigend long) *8) | |
132 #define SETSIZE WNN_NFD | |
133 #define SET_WIDTH ((SETSIZE) + (BINTSIZE - 1U) / (BINTSIZE)) | |
134 typedef struct wnn_fd_set { | |
135 wnn_fd_mask fds_bits[SET_WIDTH]; | |
136 } | |
137 #define FD_SET(pos,array) (array[pos/BINTSIZE] |= (1<<(pos%BINTSIZE))) | |
138 #define FD_CLR(pos,array) (array[pos/BINTSIZE] &= ~(1<<(pos%BINTSIZE))) | |
139 #define FD_ISSET(pos,array) (array[pos/BINTSIZE] & (1<<(pos%BINTSIZ | |
140 E))) | |
141 #define FD_ZERO(array) (bzero (array, FD_SET_WIDTH)) | |
142 #endif /* !HAVE_FD_SET */ | |
143 | |
144 | |
145 /* function prototypes (temporal use. need reconstruction) */ | |
146 char *get_server_env (char *lang); /* server_env.c */ | |
147 unsigned int create_cswidth (char *s); /* xutoj.c */ | |
148 int euksc_to_ksc (unsigned char *ksc, | |
149 unsigned char *euksc, | |
150 int eusiz); /* xutoj.c */ | |
151 | |
152 #endif /* WNN_OS_H */ |