Xos.h
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:7k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * $XdotOrg: proto/X11/Xos.h,v 1.8 2005/11/08 06:33:25 jkj Exp $
  3.  * $Xorg: Xos.h,v 1.6 2001/02/09 02:03:22 xorgcvs Exp $
  4.  * 
  5.  * 
  6. Copyright 1987, 1998  The Open Group
  7. Permission to use, copy, modify, distribute, and sell this software and its
  8. documentation for any purpose is hereby granted without fee, provided that
  9. the above copyright notice appear in all copies and that both that
  10. copyright notice and this permission notice appear in supporting
  11. documentation.
  12. The above copyright notice and this permission notice shall be included in
  13. all copies or substantial portions of the Software.
  14. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  17. OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  18. AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  19. CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  20. Except as contained in this notice, the name of The Open Group shall not be
  21. used in advertising or otherwise to promote the sale, use or other dealings
  22. in this Software without prior written authorization from The Open Group.
  23.  *
  24.  * The X Window System is a Trademark of The Open Group.
  25.  *
  26.  */
  27. /* $XFree86: xc/include/Xos.h,v 3.41tsi Exp $ */
  28. /* This is a collection of things to try and minimize system dependencies
  29.  * in a "significant" number of source files.
  30.  */
  31. #ifndef _XOS_H_
  32. #define _XOS_H_
  33. #include <X11/Xosdefs.h>
  34. /*
  35.  * Get major data types (esp. caddr_t)
  36.  */
  37. #ifdef USG
  38. #ifndef __TYPES__
  39. #ifdef CRAY
  40. #define word word_t
  41. #endif /* CRAY */
  42. #include <sys/types.h> /* forgot to protect it... */
  43. #define __TYPES__
  44. #endif /* __TYPES__ */
  45. #else /* USG */
  46. #if defined(_POSIX_SOURCE) && defined(MOTOROLA)
  47. #undef _POSIX_SOURCE
  48. #include <sys/types.h>
  49. #define _POSIX_SOURCE
  50. #else
  51. # include <sys/types.h>
  52. #endif
  53. #endif /* USG */
  54. #ifndef sgi
  55. #if defined(__SCO__) || defined(__UNIXWARE__)
  56. #include <stdint.h>
  57. #endif
  58. #endif
  59. #ifdef _SEQUENT_
  60. /*
  61.  * in_systm.h compatibility between SysV and BSD types u_char u_short u_long
  62.  * select.h  for typedef of args to select, fd_set, may use SVR4 later
  63.  */
  64. #include <netinet/in_systm.h>
  65. #include <sys/select.h>
  66. #endif /* _SEQUENT_ */
  67. /*
  68.  * Just about everyone needs the strings routines.  We provide both forms here,
  69.  * index/rindex and strchr/strrchr, so any systems that don't provide them all
  70.  * need to have #defines here.
  71.  *
  72.  * These macros are defined this way, rather than, e.g.:
  73.  *    #defined index(s,c) strchr(s,c)
  74.  * because someone might be using them as function pointers, and such
  75.  * a change would break compatibility for anyone who's relying on them
  76.  * being the way they currently are. So we're stuck with them this way,
  77.  * which can be really inconvenient. :-(
  78.  */
  79. #ifndef X_NOT_STDC_ENV
  80. #include <string.h>
  81. #if defined(__SCO__) || defined(__UNIXWARE__)
  82. #include <strings.h>
  83. #else
  84. #if (defined(sun) && defined(__SVR4))
  85. #include <strings.h>
  86. #endif
  87. #ifdef __STDC__
  88. #ifndef index
  89. #define index(s,c) (strchr((s),(c)))
  90. #endif
  91. #ifndef rindex
  92. #define rindex(s,c) (strrchr((s),(c)))
  93. #endif
  94. #else
  95. #ifndef index
  96. #define index strchr
  97. #endif
  98. #ifndef rindex
  99. #define rindex strrchr
  100. #endif
  101. #endif
  102. #endif
  103. #else
  104. #ifdef SYSV
  105. #if defined(clipper) || defined(__clipper__)
  106. #include <malloc.h>
  107. #endif
  108. #include <string.h>
  109. #define index strchr
  110. #define rindex strrchr
  111. #else
  112. #include <strings.h>
  113. #define strchr index
  114. #define strrchr rindex
  115. #endif
  116. #endif /* X_NOT_STDC_ENV */
  117. /*
  118.  * strerror()
  119.  */
  120. #if (defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)) && !defined(__GLIBC__)
  121. #ifndef strerror
  122. extern char *sys_errlist[];
  123. extern int sys_nerr;
  124. #define strerror(n) 
  125.     (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error")
  126. #endif
  127. #endif
  128. /*
  129.  * Get open(2) constants
  130.  */
  131. #if defined(X_NOT_POSIX)
  132. #include <fcntl.h>
  133. #if defined(USL) || defined(CRAY) || defined(MOTOROLA) || (defined(__i386__) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__)
  134. #include <unistd.h>
  135. #endif
  136. #ifdef WIN32
  137. #include <X11/Xw32defs.h>
  138. #else
  139. #include <sys/file.h>
  140. #endif
  141. #else /* X_NOT_POSIX */
  142. #if !defined(_POSIX_SOURCE) && defined(macII)
  143. #define _POSIX_SOURCE
  144. #include <fcntl.h>
  145. #include <unistd.h>
  146. #undef _POSIX_SOURCE
  147. #else
  148. #include <fcntl.h>
  149. #include <unistd.h>
  150. #endif
  151. #endif /* X_NOT_POSIX else */
  152. /*
  153.  * Get struct timeval and struct tm
  154.  */
  155. #if defined(SYSV) && !defined(_SEQUENT_)
  156. #ifndef USL
  157. #include <sys/time.h>
  158. #endif
  159. #include <time.h>
  160. #ifdef CRAY
  161. #undef word
  162. #endif /* CRAY */
  163. #if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__) && !defined(clipper) && !defined(__clipper__)
  164. struct timeval {
  165.     long tv_sec;
  166.     long tv_usec;
  167. };
  168. #ifndef USL_SHARELIB
  169. struct timezone {
  170.     int tz_minuteswest;
  171.     int tz_dsttime;
  172. };
  173. #endif /* USL_SHARELIB */
  174. #endif /* USG */
  175. #ifdef _SEQUENT_
  176. struct timezone {
  177.     int tz_minuteswest;
  178.     int tz_dsttime;
  179. };
  180. #endif /* _SEQUENT_ */
  181. #else /* not SYSV */
  182. #if defined(_POSIX_SOURCE) && defined(SVR4)
  183. /* need to omit _POSIX_SOURCE in order to get what we want in SVR4 */
  184. #undef _POSIX_SOURCE
  185. #include <sys/time.h>
  186. #define _POSIX_SOURCE
  187. #elif defined(WIN32)
  188. #include <time.h>
  189. #if !defined(_WINSOCKAPI_) && !defined(_WILLWINSOCK_) && !defined(_TIMEVAL_DEFINED) && !defined(_STRUCT_TIMEVAL)
  190. struct timeval {
  191.     long    tv_sec;         /* seconds */
  192.     long    tv_usec;        /* and microseconds */
  193. };
  194. #define _TIMEVAL_DEFINED
  195. #endif
  196. #include <sys/timeb.h>
  197. #define gettimeofday(t) 
  198.     struct _timeb _gtodtmp; 
  199.     _ftime (&_gtodtmp); 
  200.     (t)->tv_sec = _gtodtmp.time; 
  201.     (t)->tv_usec = _gtodtmp.millitm * 1000; 
  202. }
  203. #elif defined(_SEQUENT_) || defined(Lynx)
  204. #include <time.h>
  205. #elif defined (__QNX__)
  206. typedef unsigned long fd_mask;
  207. /* Make sure we get 256 bit select masks */
  208. #define FD_SETSIZE 256
  209. #include <sys/select.h>
  210. #include <sys/time.h>
  211. #include <time.h>
  212. #else
  213. #include <sys/time.h>
  214. #include <time.h>
  215. #endif /* defined(_POSIX_SOURCE) && defined(SVR4) */
  216. #endif /* SYSV */
  217. /* define X_GETTIMEOFDAY macro, a portable gettimeofday() */
  218. #if defined(_XOPEN_XPG4) || defined(_XOPEN_UNIX) /* _XOPEN_UNIX is XPG4.2 */
  219. #define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
  220. #else
  221. #if defined(SVR4) || defined(VMS) || defined(WIN32)
  222. #define X_GETTIMEOFDAY(t) gettimeofday(t)
  223. #else
  224. #define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
  225. #endif
  226. #endif /* XPG4 else */
  227. #ifdef __UNIXOS2__
  228. typedef unsigned long fd_mask;
  229. #include <limits.h>
  230. #define MAX_PATH _POSIX_PATH_MAX
  231. #endif
  232. #ifdef __GNU__
  233. #define PATH_MAX 4096
  234. #define MAXPATHLEN 4096
  235. #define OPEN_MAX 256 /* We define a reasonable limit.  */
  236. #endif
  237. /* use POSIX name for signal */
  238. #if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD) && !defined(ISC)
  239. #define SIGCHLD SIGCLD
  240. #endif
  241. #ifdef ISC
  242. #include <sys/bsdtypes.h>
  243. #include <sys/limits.h>
  244. #define NGROUPS 16
  245. #endif
  246. #if defined(ISC) || defined(__UNIXOS2__) || 
  247.     (defined(__linux__) && !defined(__GLIBC__)) || 
  248.     (defined(__QNX__) && !defined(UNIXCONN))
  249. /*
  250.  * Some OS's may not have this
  251.  */
  252. #define X_NO_SYS_UN 1
  253. struct sockaddr_un {
  254. short sun_family;
  255. char sun_path[108];
  256. };
  257. #endif
  258. #include <X11/Xarch.h>
  259. #endif /* _XOS_H_ */