OSDN Git Service

Code drop from //branches/cupcake/...@124589
[android-x86/prebuilt.git] / linux-x86 / toolchain / i686-unknown-linux-gnu-4.2.1 / lib / gcc / i686-unknown-linux-gnu / 4.2.1 / include / X11 / Xtrans / Xtransint.h
1 /*  DO NOT EDIT THIS FILE.
2
3     It has been auto-edited by fixincludes from:
4
5         "/usr/include/X11/Xtrans/Xtransint.h"
6
7     This had to be done to correct non-standard usages in the
8     original, manufacturer supplied header file.  */
9
10 /* $XdotOrg: xc/lib/xtrans/Xtransint.h,v 1.2 2004/04/23 18:44:27 eich Exp $ */
11 /* $Xorg: Xtransint.h,v 1.4 2001/02/09 02:04:06 xorgcvs Exp $ */
12 /*
13
14 Copyright 1993, 1994, 1998  The Open Group
15
16 Permission to use, copy, modify, distribute, and sell this software and its
17 documentation for any purpose is hereby granted without fee, provided that
18 the above copyright notice appear in all copies and that both that
19 copyright notice and this permission notice appear in supporting
20 documentation.
21
22 The above copyright notice and this permission notice shall be included
23 in all copies or substantial portions of the Software.
24
25 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
26 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
28 IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
29 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
30 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
31 OTHER DEALINGS IN THE SOFTWARE.
32
33 Except as contained in this notice, the name of The Open Group shall
34 not be used in advertising or otherwise to promote the sale, use or
35 other dealings in this Software without prior written authorization
36 from The Open Group.
37
38 */
39 /* $XFree86: xc/lib/xtrans/Xtransint.h,v 3.41 2003/08/28 00:35:23 tsi Exp $ */
40
41 /* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
42  *
43  * All Rights Reserved
44  *
45  * Permission to use, copy, modify, and distribute this software and its
46  * documentation for any purpose and without fee is hereby granted, provided
47  * that the above copyright notice appear in all copies and that both that
48  * copyright notice and this permission notice appear in supporting
49  * documentation, and that the name NCR not be used in advertising
50  * or publicity pertaining to distribution of the software without specific,
51  * written prior permission.  NCR makes no representations about the
52  * suitability of this software for any purpose.  It is provided "as is"
53  * without express or implied warranty.
54  *
55  * NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
56  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
57  * NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
58  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
59  * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
60  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
61  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
62  */
63
64 #ifndef _XTRANSINT_H_
65 #define _XTRANSINT_H_
66
67 /*
68  * XTRANSDEBUG will enable the PRMSG() macros used in the X Transport 
69  * Interface code. Each use of the PRMSG macro has a level associated with 
70  * it. XTRANSDEBUG is defined to be a level. If the invocation level is =< 
71  * the value of XTRANSDEBUG, then the message will be printed out to stderr. 
72  * Recommended levels are:
73  *
74  *      XTRANSDEBUG=1   Error messages
75  *      XTRANSDEBUG=2 API Function Tracing
76  *      XTRANSDEBUG=3 All Function Tracing
77  *      XTRANSDEBUG=4 printing of intermediate values
78  *      XTRANSDEBUG=5 really detailed stuff
79 #define XTRANSDEBUG 2
80  *
81  * Defining XTRANSDEBUGTIMESTAMP will cause printing timestamps with each
82  * message.
83  */
84
85 #ifndef XTRANSDEBUG
86 # ifndef __UNIXOS2__
87 #  define XTRANSDEBUG 1
88 # else
89 #  define XTRANSDEBUG 1
90 # endif
91 #endif
92
93 #ifdef WIN32
94 # define _WILLWINSOCK_
95 #endif
96
97 #include "Xtrans.h"
98
99 #ifdef XTRANSDEBUG
100 # include <stdio.h>
101 #endif /* XTRANSDEBUG */
102
103 #include <errno.h>
104
105 #ifndef WIN32
106 # ifndef Lynx
107 #  include <sys/socket.h>
108 # else
109 #  include <socket.h>
110 # endif
111 # include <netinet/in.h>
112 # include <arpa/inet.h>
113 # ifdef __UNIXOS2__
114 #  include <sys/ioctl.h>
115 # endif
116
117 /*
118  * Moved the setting of NEED_UTSNAME to this header file from Xtrans.c,
119  * to avoid a race condition. JKJ (6/5/97)
120  */
121
122 # if (defined(_POSIX_SOURCE) && !defined(AIXV3) && !defined(__QNX__)) || defined(hpux) || defined(USG) || defined(SVR4) || defined(__SCO__)
123 #  ifndef NEED_UTSNAME
124 #   define NEED_UTSNAME
125 #  endif
126 #  include <sys/utsname.h>
127 # endif
128
129 /*
130  * makedepend screws up on #undef OPEN_MAX, so we define a new symbol
131  */
132
133 # ifndef TRANS_OPEN_MAX
134
135 #  ifndef X_NOT_POSIX
136 #   ifdef _POSIX_SOURCE
137 #    include <limits.h>
138 #   else
139 #    define _POSIX_SOURCE
140 #    include <limits.h>
141 #    undef _POSIX_SOURCE
142 #   endif
143 #  endif
144 #  ifndef OPEN_MAX
145 #   if defined(_SC_OPEN_MAX) && !defined(__UNIXOS2__)
146 #    define OPEN_MAX (sysconf(_SC_OPEN_MAX))
147 #   else
148 #    ifdef SVR4
149 #     define OPEN_MAX 256
150 #    else
151 #     include <sys/param.h>
152 #     ifndef OPEN_MAX
153 #      ifdef __OSF1__
154 #       define OPEN_MAX 256
155 #      else
156 #       ifdef NOFILE
157 #        define OPEN_MAX NOFILE
158 #       else
159 #        if !defined(__UNIXOS2__) && !defined(__QNX__)
160 #         define OPEN_MAX NOFILES_MAX
161 #        else
162 #         define OPEN_MAX 256
163 #        endif
164 #       endif
165 #      endif
166 #     endif
167 #    endif
168 #   endif
169 #  endif
170 #  if defined(_SC_OPEN_MAX)
171 #   define TRANS_OPEN_MAX OPEN_MAX
172 #  else /* !__GNU__ */
173 #   if OPEN_MAX > 256
174 #    define TRANS_OPEN_MAX 256
175 #   else
176 #    define TRANS_OPEN_MAX OPEN_MAX
177 #   endif
178 #  endif /*__GNU__*/
179
180 # endif /* TRANS_OPEN_MAX */
181
182 # ifdef __UNIXOS2__
183 #  define ESET(val)
184 # else
185 #  define ESET(val) errno = val
186 # endif
187 # define EGET() errno
188
189 #else /* WIN32 */
190
191 # include <limits.h>    /* for USHRT_MAX */
192
193 # define ESET(val) WSASetLastError(val)
194 # define EGET() WSAGetLastError()
195
196 #endif /* WIN32 */
197
198 #include <stddef.h>
199
200 #ifdef X11_t
201 #define X_TCP_PORT      6000
202 #endif
203
204 struct _XtransConnInfo {
205     struct _Xtransport     *transptr;
206     int         index;
207     char        *priv;
208     int         flags;
209     int         fd;
210     char        *port;
211     int         family;
212     char        *addr;
213     int         addrlen;
214     char        *peeraddr;
215     int         peeraddrlen;
216 };
217
218 #define XTRANS_OPEN_COTS_CLIENT       1
219 #define XTRANS_OPEN_COTS_SERVER       2
220 #define XTRANS_OPEN_CLTS_CLIENT       3
221 #define XTRANS_OPEN_CLTS_SERVER       4
222
223
224 typedef struct _Xtransport {
225     char        *TransName;
226     int         flags;
227
228 #ifdef TRANS_CLIENT
229
230     XtransConnInfo (*OpenCOTSClient)(
231         struct _Xtransport *,   /* transport */
232         char *,                 /* protocol */
233         char *,                 /* host */
234         char *                  /* port */
235     );
236
237 #endif /* TRANS_CLIENT */
238
239 #ifdef TRANS_SERVER
240     char **     nolisten;
241     XtransConnInfo (*OpenCOTSServer)(
242         struct _Xtransport *,   /* transport */
243         char *,                 /* protocol */
244         char *,                 /* host */
245         char *                  /* port */
246     );
247
248 #endif /* TRANS_SERVER */
249
250 #ifdef TRANS_CLIENT
251
252     XtransConnInfo (*OpenCLTSClient)(
253         struct _Xtransport *,   /* transport */
254         char *,                 /* protocol */
255         char *,                 /* host */
256         char *                  /* port */
257     );
258
259 #endif /* TRANS_CLIENT */
260
261 #ifdef TRANS_SERVER
262
263     XtransConnInfo (*OpenCLTSServer)(
264         struct _Xtransport *,   /* transport */
265         char *,                 /* protocol */
266         char *,                 /* host */
267         char *                  /* port */
268     );
269
270 #endif /* TRANS_SERVER */
271
272
273 #ifdef TRANS_REOPEN
274
275     XtransConnInfo (*ReopenCOTSServer)(
276         struct _Xtransport *,   /* transport */
277         int,                    /* fd */
278         char *                  /* port */
279     );
280
281     XtransConnInfo (*ReopenCLTSServer)(
282         struct _Xtransport *,   /* transport */
283         int,                    /* fd */
284         char *                  /* port */
285     );
286
287 #endif /* TRANS_REOPEN */
288
289
290     int (*SetOption)(
291         XtransConnInfo,         /* connection */
292         int,                    /* option */
293         int                     /* arg */
294     );
295
296 #ifdef TRANS_SERVER
297 /* Flags */
298 # define ADDR_IN_USE_ALLOWED    1
299
300     int (*CreateListener)(
301         XtransConnInfo,         /* connection */
302         char *,                 /* port */
303         unsigned int            /* flags */
304     );
305
306     int (*ResetListener)(
307         XtransConnInfo          /* connection */
308     );
309
310     XtransConnInfo (*Accept)(
311         XtransConnInfo,         /* connection */
312         int *                   /* status */
313     );
314
315 #endif /* TRANS_SERVER */
316
317 #ifdef TRANS_CLIENT
318
319     int (*Connect)(
320         XtransConnInfo,         /* connection */
321         char *,                 /* host */
322         char *                  /* port */
323     );
324
325 #endif /* TRANS_CLIENT */
326
327     int (*BytesReadable)(
328         XtransConnInfo,         /* connection */
329         BytesReadable_t *       /* pend */
330     );
331
332     int (*Read)(
333         XtransConnInfo,         /* connection */
334         char *,                 /* buf */
335         int                     /* size */
336     );
337
338     int (*Write)(
339         XtransConnInfo,         /* connection */
340         char *,                 /* buf */
341         int                     /* size */
342     );
343
344     int (*Readv)(
345         XtransConnInfo,         /* connection */
346         struct iovec *,         /* buf */
347         int                     /* size */
348     );
349
350     int (*Writev)(
351         XtransConnInfo,         /* connection */
352         struct iovec *,         /* buf */
353         int                     /* size */
354     );
355
356     int (*Disconnect)(
357         XtransConnInfo          /* connection */
358     );
359
360     int (*Close)(
361         XtransConnInfo          /* connection */
362     );
363
364     int (*CloseForCloning)(
365         XtransConnInfo          /* connection */
366     );
367
368 } Xtransport;
369
370
371 typedef struct _Xtransport_table {
372     Xtransport  *transport;
373     int         transport_id;
374 } Xtransport_table;
375
376
377 /*
378  * Flags for the flags member of Xtransport.
379  */
380
381 #define TRANS_ALIAS     (1<<0)  /* record is an alias, don't create server */
382 #define TRANS_LOCAL     (1<<1)  /* local transport */
383 #define TRANS_DISABLED  (1<<2)  /* Don't open this one */
384 #define TRANS_NOLISTEN  (1<<3)  /* Don't listen on this one */
385 #define TRANS_NOUNLINK  (1<<4)  /* Dont unlink transport endpoints */
386
387 /* Flags to preserve when setting others */
388 #define TRANS_KEEPFLAGS (TRANS_NOUNLINK)
389
390 /*
391  * readv() and writev() don't exist or don't work correctly on some
392  * systems, so they may be emulated.
393  */
394
395 #if defined(CRAY) || (defined(SYSV) && defined(__i386__) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__)
396
397 #define READV(ciptr, iov, iovcnt)       TRANS(ReadV)(ciptr, iov, iovcnt)
398
399 static  int TRANS(ReadV)(
400     XtransConnInfo,     /* ciptr */
401     struct iovec *,     /* iov */
402     int                 /* iovcnt */
403 );
404
405 #else
406
407 #define READV(ciptr, iov, iovcnt)       readv(ciptr->fd, iov, iovcnt)
408
409 #endif /* CRAY || (SYSV && i386) || WIN32 || __sxg__ || */
410
411
412 #if defined(CRAY) || (defined(SYSV) && defined(__i386__) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__)
413
414 #define WRITEV(ciptr, iov, iovcnt)      TRANS(WriteV)(ciptr, iov, iovcnt)
415
416 static int TRANS(WriteV)(
417     XtransConnInfo,     /* ciptr */
418     struct iovec *,     /* iov */
419     int                 /* iovcnt */
420 );
421
422 #else
423
424 #define WRITEV(ciptr, iov, iovcnt)      writev(ciptr->fd, iov, iovcnt)
425
426 #endif /* CRAY || WIN32 || __sxg__ */
427
428
429 static int is_numeric (
430     char *              /* str */
431 );
432
433 #ifdef TRANS_SERVER
434 static int trans_mkdir (
435     char *,             /* path */
436     int                 /* mode */
437 );
438 #endif
439
440 /*
441  * Some XTRANSDEBUG stuff
442  */
443
444 #if defined(XTRANSDEBUG)
445 /* add hack to the format string to avoid warnings about extra arguments
446  * to fprintf.
447  */
448 #ifdef XTRANSDEBUGTIMESTAMP
449 #if defined(XSERV_t) && defined(TRANS_SERVER)
450 /* Use ErrorF() for the X server */
451 #define PRMSG(lvl,x,a,b,c)      if (lvl <= XTRANSDEBUG){ \
452                         int hack= 0, saveerrno=errno; \
453                         struct timeval tp;\
454                         gettimeofday(&tp,0); \
455                         ErrorF(__xtransname); \
456                         ErrorF(x+hack,a,b,c); \
457                         ErrorF("timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \
458                         errno=saveerrno; \
459                         } else ((void)0)
460 #else
461 #define PRMSG(lvl,x,a,b,c)      if (lvl <= XTRANSDEBUG){ \
462                         int hack= 0, saveerrno=errno; \
463                         struct timeval tp;\
464                         gettimeofday(&tp,0); \
465                         fprintf(stderr, __xtransname); fflush(stderr); \
466                         fprintf(stderr, x+hack,a,b,c); fflush(stderr); \
467                         fprintf(stderr, "timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \
468                         fflush(stderr); \
469                         errno=saveerrno; \
470                         } else ((void)0)
471 #endif /* XSERV_t && TRANS_SERVER */
472 #else /* XTRANSDEBUGTIMESTAMP */
473 #if defined(XSERV_t) && defined(TRANS_SERVER)
474 /* Use ErrorF() for the X server */
475 #define PRMSG(lvl,x,a,b,c)      if (lvl <= XTRANSDEBUG){ \
476                         int hack= 0, saveerrno=errno; \
477                         ErrorF(__xtransname); \
478                         ErrorF(x+hack,a,b,c); \
479                         errno=saveerrno; \
480                         } else ((void)0)
481 #else
482 #define PRMSG(lvl,x,a,b,c)      if (lvl <= XTRANSDEBUG){ \
483                         int hack= 0, saveerrno=errno; \
484                         fprintf(stderr, __xtransname); fflush(stderr); \
485                         fprintf(stderr, x+hack,a,b,c); fflush(stderr); \
486                         errno=saveerrno; \
487                         } else ((void)0)
488 #endif /* XSERV_t && TRANS_SERVER */
489 #endif /* XTRANSDEBUGTIMESTAMP */
490 #else
491 #define PRMSG(lvl,x,a,b,c)      ((void)0)
492 #endif /* XTRANSDEBUG */
493
494 #endif /* _XTRANSINT_H_ */