setup_os.h
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:5k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /* 
  2.  * setup_os.h  - setup global directives to current operating system 
  3.  *               and program environment 
  4.  * 
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by Michael Kimelman 
  10.  *
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts: gss@ispras.ru
  26.  *
  27.  */
  28. #ifndef __SETUP_OS_H__
  29. #define __SETUP_OS_H__
  30. /* $Id: setup_os.h,v 1.215 1997/04/21 14:29:14 kml Exp $ */
  31. #include <gnusql/config.h>
  32. #ifdef HAVE_STDLIB_H
  33. #include <stdlib.h>
  34. #endif
  35. #ifdef HAVE_STDIO_H
  36. #include <stdio.h>
  37. #endif
  38. #include <sys/types.h>
  39. #ifdef HAVE_SYS_CDEFS_H
  40. #include <sys/cdefs.h>
  41. #endif
  42. #include <errno.h>
  43. #define FATAL_EXIT_CODE    1
  44. #define SUCCESS_EXIT_CODE  0
  45. typedef unsigned int       word_t  ;   /* 16 or 32 bits    */
  46. #if SIZEOF_CHAR == 1
  47.   typedef unsigned char     byte_t ; /* 8 bit unsigned   */
  48.   typedef signed   char       i1_t ;
  49. #else
  50. # error "sizeof(char) != 1 -- fatal error "
  51. #endif
  52. #if SIZEOF_SHORT == 2
  53.   typedef          short      i2_t ; /* 16 bit signed    */
  54.   typedef unsigned short      u2_t ; /* 16 bit unsigned  */
  55. #else
  56. #  error "sizeof(short) != 2 -- fatal error "
  57. #endif
  58. #if SIZEOF_INT == 4
  59.   typedef          int       i4_t  ; /* 32 bits signed   */
  60.   typedef unsigned int       u4_t  ; /* 32 bits unsigned */
  61. #elif SIZEOF_LONG == 4
  62.   typedef          long      i4_t  ; /* 32 bits signed   */
  63.   typedef unsigned long      u4_t  ; /* 32 bits unsigned */
  64. #else
  65. #  error "cant quess 4 byte integer"
  66. #endif
  67. #if SIZEOF_LONG == 8
  68.   typedef signed   long       i8_t ; /* 64 bits signed   */
  69.   typedef unsigned long       u8_t ; /* 64 bits unsigned */
  70. #elif SIZEOF_LONG_LONG == 8
  71.   typedef signed   long long  i8_t ; /* 64 bits signed   */
  72.   typedef unsigned long long  u8_t ; /* 64 bits unsigned */
  73. #else
  74. # define NO_INT8
  75. #endif
  76. /* replacements for ancient typedefs */
  77. typedef byte_t    byte ; 
  78. typedef word_t    word ; /* 16 or 32 bits */
  79. /* mnemonic for bit mask operations */
  80. #define SETVL  |=
  81. #define CLRVL  &=~
  82. #define TSTVL  &
  83. #define BITVL(bit)  (01L<<(bit))
  84. #ifndef gmin
  85. #define gmin(a,b) ((a)>(b)?(b):(a))
  86. #endif
  87. #ifndef gmax
  88. #define gmax(a,b) ((a)<(b)?(b):(a))
  89. #endif
  90. #ifdef RPCSTUB_SVC_STYLE
  91. #define RPC_SVC_PROTO(out_t,in_t,proc,vers)  
  92.     out_t *proc##_##vers##_svc (in_t *in, struct svc_req *rqstp)
  93. #else
  94. #define RPC_SVC_PROTO(out_t,in_t,proc,vers)  
  95.     out_t *proc##_##vers       (in_t *in, struct svc_req *rqstp)
  96. #endif
  97. #if defined(HAVE_SVC_UNREG)
  98. #  define SVC_UNREG(prog,vers) svc_unreg (prog, vers)
  99. #elif defined(HAVE_SVC_UNREGISTER)
  100. #  define SVC_UNREG(prog,vers) svc_unregister (prog, vers)
  101. #else
  102. #  define SVC_UNREG(prog,vers) 
  103.      assert("nothing have found for SVC_UNREG substitution")
  104. #endif
  105. #if defined(HAVE_STRFTIME)
  106. #  define CFTIME(to,max,fmt,tp) strftime(to, max, fmt, localtime(tp))
  107. #elif defined(HAVE_CFTIME)
  108. #  define CFTIME(to,max,fmt,tp) cftime(to, fmt, tp)
  109. #else
  110. #  define CFTIME(to,max,fmt,tp) 
  111.      assert("can`t find 'cftime' or 'strftime' to format time output")
  112. #endif
  113. /*
  114.  * if we have not any particular idea about 'struct msg_buf' equivalent in
  115.  * <sys/msg.h> prototypes -- cast out structures to 'void *' to avoid extra
  116.  * warnings
  117.  */
  118. #ifndef MSGBUFP 
  119. #  define MSGBUFP  void*
  120. #endif
  121. /*
  122.  * The following 2 macros help us to use debugger with adm's subprocesses. Using
  123.  * these macros prevents subproceses from 'panic' reaction on debugger signals.
  124.  */
  125. #define __MSGRCV( mid, bufp, sz, typ, fl, err)  
  126. { int __msg_rc;
  127.   do __msg_rc = msgrcv (mid,(MSGBUFP)(bufp),(sz),(typ), (fl));
  128.   while ( (__msg_rc < 0) && (errno == EINTR )) ;
  129.   if (__msg_rc < 0) {
  130.       perror (err);
  131.       exit (1);
  132. } }
  133. #define __MSGSND( mid, bufp, sz, fl,err)  
  134. { int __msg_rc;
  135.   do __msg_rc = msgsnd (mid,(MSGBUFP)(bufp),(sz), fl);
  136.   while ( (__msg_rc < 0) && (errno == EINTR )) ;
  137.   if (__msg_rc < 0) {
  138.       perror (err);
  139.       exit (1);
  140. } }
  141. #ifdef NOT_DEBUG
  142. #define  MEET_DEBUGGER
  143. #else
  144. void wait_debugger(void);
  145. #define  MEET_DEBUGGER  
  146. { char **arg_p;  
  147.   for (arg_p=argv; *arg_p; arg_p++)  
  148.     if (strcmp(*arg_p,"DebugIt")==0)  
  149.       {
  150.         wait_debugger();                 
  151.         break;
  152.       }
  153. }   
  154. #endif
  155. #define abort()   fancy_abort(__FILE__,__LINE__)
  156. #ifdef  NOT_DEBUG
  157. #  define PRINTF(x)   
  158. #else
  159. #  define PRINTF(x)   printf x
  160. #endif
  161. /* define macro wrapper if it has not defined yet */
  162. #ifndef __P
  163. # ifdef __STDC__
  164. #   define __P(x) x
  165. # else
  166. #   define __P(x) ()
  167. # endif
  168. #endif
  169. #endif