diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wnn/include/wnn_os.h	Thu Dec 13 04:30:14 2007 +0900
@@ -0,0 +1,152 @@
+/*
+ *  $Id: wnn_os.h,v 1.17 2006/03/04 19:01:45 aonoto Exp $
+ */
+
+/*
+ * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
+ * This file is part of FreeWnn.
+ * 
+ * Copyright Kyoto University Research Institute for Mathematical Sciences
+ *                 1987, 1988, 1989, 1990, 1991, 1992
+ * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
+ * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
+ * Copyright FreeWnn Project 1999, 2000, 2002, 2005, 2006
+ *
+ * Maintainer:  FreeWnn Project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef WNN_OS_H
+#define WNN_OS_H
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+/* system headers needed for system dependent configuration */
+#include <signal.h>
+#if STDC_HEADERS
+#  include <stdlib.h>
+#  include <limits.h>
+#endif /* STDC_HEADERS */
+
+#include <sys/types.h>
+#include <sys/file.h>
+#if HAVE_SYS_PARAM_H
+#  include <sys/param.h>
+#endif
+
+/* strchr vs. index, etc. */
+#if (HAVE_MEMSET) && !(HAVE_BZERO)
+#  define bzero(adr,n)  memset((adr),0,(n))
+#endif
+#if !(HAVE_STRCHR) && (HAVE_INDEX)
+#  define strchr  index
+#endif
+#if !(HAVE_STRRCHR) && (HAVE_RINDEX)
+#  define strrchr rindex
+#endif
+
+/* SIGNAL */
+
+#ifdef SYSVR2
+#ifndef re_signal
+# define re_signal(x, y) signal((x), (y))
+#endif
+#else
+# define re_signal(x, y)
+#endif
+
+#if !defined (SIGCHLD) && defined (SIGCLD)
+#  define SIGCHLD SIGCLD
+#endif
+
+typedef RETSIGTYPE (*intfnptr) ();
+
+/* Temporally place the number of filedescripters hack here. */
+#if HAVE_GETDTABLESIZE
+#  define WNN_NFD getdtablesize()
+#elif defined (OPEN_MAX)
+#  define WNN_NFD OPEN_MAX
+#elif defined (NOFILE)
+#  define WNN_NFD NOFILE
+#endif /* HAVE_GETDTABLESIZE */
+
+/* pseudo ramdom number */
+#if !defined (RAND_MAX)
+#  if defined (INT_MAX)
+#    define RAND_MAX INT_MAX
+#  else
+#    define RAND_MAX 0x7fffffff
+#  endif /* INT_MAX */
+#endif /* RAND_MAX*/
+
+#if HAVE_DRAND48
+#  define DRAND()  drand48 ()
+#  define SDRAND(x)  srand48 (x)
+#elif HAVE_RAMDOM
+#  define DRAND()  ((double) random() / (double) RAND_MAX)
+#  define SDRAND(x)  srandom (x)
+#else
+#  define DRAND()  ((double) rand() / (double) RAND_MAX)
+#  define SDRAND(x)  srand (x)
+#endif /* HAVE_DRAND48 */
+
+#if HAVE_RANDOM
+#  define RAND()  random ()
+#  define SRAND(x)  srandom (x)
+#else
+#  define RAND()  rand ()
+#  define SRAND(x)  srand (x)
+#endif /* HAVE_RANDOM */
+
+/*
+ * It may be needless and had better be removed, however,
+ * Wnn4 did not take it for granted that the system provided
+ * FD_SET and other feature that SUS v.2 determines.
+ * So I left Wnn4's own definition with a little modification
+ * in case the system did not provide the feature.
+ * I took a look into the FreeBSD definition of FD_* family.
+ * A small change comes from Canna 3.6p3.
+ */
+#if !defined(HAVE_FD_SET) && !defined(FD_SET) && defined(HAVE_UNISTD_H)
+#  include <unistd.h> /* to define FD_SET */
+#endif
+#if !defined(HAVE_FD_SET) && !defined(FD_SET)
+typedef unsigned long fd_mask;
+#define BINTSIZE               (sizeof(unsigend long) *8)
+#define SETSIZE         WNN_NFD
+#define SET_WIDTH       ((SETSIZE) + (BINTSIZE - 1U) / (BINTSIZE))
+typedef struct wnn_fd_set {
+  wnn_fd_mask fds_bits[SET_WIDTH];
+}
+#define FD_SET(pos,array)  (array[pos/BINTSIZE] |= (1<<(pos%BINTSIZE)))
+#define FD_CLR(pos,array)  (array[pos/BINTSIZE] &= ~(1<<(pos%BINTSIZE)))
+#define FD_ISSET(pos,array)        (array[pos/BINTSIZE] &  (1<<(pos%BINTSIZ
+E)))
+#define FD_ZERO(array)     (bzero (array, FD_SET_WIDTH))
+#endif /* !HAVE_FD_SET */
+
+
+/* function prototypes (temporal use. need reconstruction) */
+char *get_server_env (char *lang);	/* server_env.c */
+unsigned int create_cswidth (char *s);	/* xutoj.c */
+int euksc_to_ksc (unsigned char *ksc,
+		  unsigned char *euksc,
+		  int eusiz);		/* xutoj.c */
+
+#endif  /* WNN_OS_H */