1: #include <X/mit-copyright.h> 2: 3: /* $Header: XlibInternal.h,v 10.8 86/02/01 15:42:21 tony Rel $ */ 4: /* Copyright 1984, 1985 Massachusetts Institute of Technology */ 5: 6: /* 7: * XlibInternal.h - Header definition and support file for the internal 8: * support routines (XlibInternal) used by the C subroutine interface 9: * library (Xlib) to the X Window System. 10: * 11: */ 12: 13: #include <sys/types.h> 14: #include "Xlib.h" 15: #include "../X/Xproto.h" 16: #include <stdio.h> 17: #include <netinet/in.h> 18: #include <sys/ioctl.h> 19: #include <netdb.h> 20: #include <errno.h> 21: 22: extern int errno; /* Internal system error number. */ 23: extern char *malloc(); /* commonly used in the library. */ 24: extern char *realloc(); /* used with some frequency. */ 25: 26: extern Display *_XlibCurrentDisplay; /* Currently active Display. */ 27: 28: extern (*_XIOErrorFunction)(); /* X system error reporting routine. */ 29: extern (*_XErrorFunction)(); /* X_Error event reporting routine. */ 30: 31: /* 32: * Boolean datatype. 33: */ 34: 35: typedef enum _bool {FALSE, TRUE} Bool; 36: 37: /* Pointers to the above routines. */ 38: #define _XIOError (*_XIOErrorFunction) 39: #define _XError (*_XErrorFunction) 40: 41: #define BUFSIZE 2048 /* X output buffer size. */ 42: 43: 44: /* 45: * X Protocol packetizing macros. 46: */ 47: 48: 49: /* 50: * GetReq - Get the next avilable X request packet in the buffer and 51: * return it. 52: * 53: * "cd" is the X protocol code. 54: * "id" is the window id of the requesting window. 55: */ 56: #define GetReq(cd, id) \ 57: dpy = _XlibCurrentDisplay;\ 58: if ((dpy->bufptr + sizeof(XReq)) > dpy->bufmax)\ 59: _XFlush(dpy);\ 60: req = (XReq *)dpy->bufptr;\ 61: req->code = cd;\ 62: req->windowId = id;\ 63: dpy->bufptr += sizeof(XReq);\ 64: dpy->request++;\ 65: dpy->lastdraw = NULL 66: 67: /* 68: * Data - Place data in the buffer and pad the end to provide 69: * 32 bit word alignment. Transmit if the buffer fills. 70: * 71: * "dpy" is a pointer to a Display. 72: * "data" is a pinter to a data buffer. 73: * "len" is the lenght of the data buffer. 74: */ 75: #define Data(dpy, data, len) \ 76: if (dpy->bufptr + len < dpy->bufmax) {\ 77: bcopy(data, dpy->bufptr, len);\ 78: dpy->bufptr += (len + 3) & ~3;\ 79: } else\ 80: _XSend(dpy, data, len)