1/* 2 * tkUnixPort.h -- 3 * 4 * This file is included by all of the Tk C files. It contains 5 * information that may be configuration-dependent, such as 6 * #includes for system include files and a few other things. 7 * 8 * Copyright (c) 1991-1993 The Regents of the University of California. 9 * Copyright (c) 1994-1996 Sun Microsystems, Inc. 10 * 11 * See the file "license.terms" for information on usage and redistribution 12 * of this file, and for a DISCLAIMER OF ALL WARRANTIES. 13 * 14 * RCS: @(#) $Id$ 15 */ 16 17#ifndef _UNIXPORT 18#define _UNIXPORT 19 20#define __UNIX__ 1 21 22/* 23 * Macro to use instead of "void" for arguments that must have 24 * type "void *" in ANSI C; maps them to type "char *" in 25 * non-ANSI systems. This macro may be used in some of the include 26 * files below, which is why it is defined here. 27 */ 28 29#ifndef VOID 30# ifdef __STDC__ 31# define VOID void 32# else 33# define VOID char 34# endif 35#endif 36 37#include <stdio.h> 38#include <ctype.h> 39#include <fcntl.h> 40#ifndef NO_LIMITS_H 41# include <limits.h> 42#else 43# include "../compat/limits.h" 44#endif 45#include <math.h> 46#include <pwd.h> 47#ifdef NO_STDLIB_H 48# include "../compat/stdlib.h" 49#else 50# include <stdlib.h> 51#endif 52#include <string.h> 53#include <sys/types.h> 54#include <sys/file.h> 55#ifdef HAVE_SYS_SELECT_H 56# include <sys/select.h> 57#endif 58#include <sys/stat.h> 59#ifndef _TCL 60# include <tcl.h> 61#endif 62#if TIME_WITH_SYS_TIME 63# include <sys/time.h> 64# include <time.h> 65#else 66# if HAVE_SYS_TIME_H 67# include <sys/time.h> 68# else 69# include <time.h> 70# endif 71#endif 72#if HAVE_INTTYPES_H 73# include <inttypes.h> 74#endif 75#ifndef NO_UNISTD_H 76# include <unistd.h> 77#else 78# include "../compat/unistd.h" 79#endif 80#include <X11/Xlib.h> 81#include <X11/cursorfont.h> 82#include <X11/keysym.h> 83#include <X11/Xatom.h> 84#include <X11/Xproto.h> 85#include <X11/Xresource.h> 86#include <X11/Xutil.h> 87 88/* 89 * The following macro defines the type of the mask arguments to 90 * select: 91 */ 92 93#ifndef NO_FD_SET 94# define SELECT_MASK fd_set 95#else 96# ifndef _AIX 97 typedef long fd_mask; 98# endif 99# if defined(_IBMR2) 100# define SELECT_MASK void 101# else 102# define SELECT_MASK int 103# endif 104#endif 105 106/* 107 * The following macro defines the number of fd_masks in an fd_set: 108 */ 109 110#ifndef FD_SETSIZE 111# ifdef OPEN_MAX 112# define FD_SETSIZE OPEN_MAX 113# else 114# define FD_SETSIZE 256 115# endif 116#endif 117#if !defined(howmany) 118# define howmany(x, y) (((x)+((y)-1))/(y)) 119#endif 120#ifndef NFDBITS 121# define NFDBITS NBBY*sizeof(fd_mask) 122#endif 123#define MASK_SIZE howmany(FD_SETSIZE, NFDBITS) 124 125/* 126 * Define "NBBY" (number of bits per byte) if it's not already defined. 127 */ 128 129#ifndef NBBY 130# define NBBY 8 131#endif 132 133/* 134 * These macros are just wrappers for the equivalent X Region calls. 135 */ 136 137#define TkClipBox(rgn, rect) XClipBox((Region) rgn, rect) 138#define TkCreateRegion() (TkRegion) XCreateRegion() 139#define TkDestroyRegion(rgn) XDestroyRegion((Region) rgn) 140#define TkIntersectRegion(a, b, r) XIntersectRegion((Region) a, \ 141 (Region) b, (Region) r) 142#define TkRectInRegion(r, x, y, w, h) XRectInRegion((Region) r, x, y, w, h) 143#define TkSetRegion(d, gc, rgn) XSetRegion(d, gc, (Region) rgn) 144#define TkSubtractRegion(a, b, r) XSubtractRegion((Region) a, \ 145 (Region) b, (Region) r) 146#define TkUnionRectWithRegion(rect, src, ret) XUnionRectWithRegion(rect, \ 147 (Region) src, (Region) ret) 148 149/* 150 * The TkPutImage macro strips off the color table information, which isn't 151 * needed for X. 152 */ 153 154#define TkPutImage(colors, ncolors, display, pixels, gc, image, srcx, srcy, destx, desty, width, height) \ 155 XPutImage(display, pixels, gc, image, srcx, srcy, destx, \ 156 desty, width, height); 157 158/* 159 * Supply macros for seek offsets, if they're not already provided by 160 * an include file. 161 */ 162 163#ifndef SEEK_SET 164# define SEEK_SET 0 165#endif 166 167#ifndef SEEK_CUR 168# define SEEK_CUR 1 169#endif 170 171#ifndef SEEK_END 172# define SEEK_END 2 173#endif 174 175/* 176 * Declarations for various library procedures that may not be declared 177 * in any other header file. 178 */ 179 180 181/* 182 * These functions do nothing under Unix, so we just eliminate calls to them. 183 */ 184 185#define TkpButtonSetDefaults(specPtr) {} 186#define TkpDestroyButton(butPtr) {} 187#define TkSelUpdateClipboard(a,b) {} 188#define TkSetPixmapColormap(p,c) {} 189 190/* 191 * These calls implement native bitmaps which are not supported under 192 * UNIX. The macros eliminate the calls. 193 */ 194 195#define TkpDefineNativeBitmaps() 196#define TkpCreateNativeBitmap(display, source) None 197#define TkpGetNativeAppBitmap(display, name, w, h) None 198 199/* 200 * This macro stores a representation of the window handle in a string. 201 * This should perhaps use the real size of an XID. 202 */ 203 204#define TkpPrintWindowId(buf,w) \ 205 sprintf((buf), "%#08lx", (unsigned long) (w)) 206 207/* 208 * The following declaration is used to get access to a private Tcl interface 209 * that is needed for portability reasons. 210 * 211 * Disabled for now to determined whether we really still need this. 212 213#ifndef _TCLINT 214#include <tclInt.h> 215#endif 216 */ 217 218#endif /* _UNIXPORT */ 219