diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2018-12-25 19:55:50 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2018-12-25 19:55:50 (GMT) |
commit | ff51550ee89b473c63df78de6b2a413f21105687 (patch) | |
tree | bcdca927ed2a7b05c647b9a6bfdfd4a7ca5c730e /tcl8.6/unix/tclUnixPort.h | |
parent | 01cbf5b15ea760408c24288ccb5cf8e0af9aa299 (diff) | |
download | blt-ff51550ee89b473c63df78de6b2a413f21105687.zip blt-ff51550ee89b473c63df78de6b2a413f21105687.tar.gz blt-ff51550ee89b473c63df78de6b2a413f21105687.tar.bz2 |
update tcl/tk
Diffstat (limited to 'tcl8.6/unix/tclUnixPort.h')
-rw-r--r-- | tcl8.6/unix/tclUnixPort.h | 736 |
1 files changed, 0 insertions, 736 deletions
diff --git a/tcl8.6/unix/tclUnixPort.h b/tcl8.6/unix/tclUnixPort.h deleted file mode 100644 index af0b4dc..0000000 --- a/tcl8.6/unix/tclUnixPort.h +++ /dev/null @@ -1,736 +0,0 @@ -/* - * tclUnixPort.h -- - * - * This header file handles porting issues that occur because of - * differences between systems. It reads in UNIX-related header files and - * sets up UNIX-related macros for Tcl's UNIX core. It should be the only - * file that contains #ifdefs to handle different flavors of UNIX. This - * file sets up the union of all UNIX-related things needed by any of the - * Tcl core files. This file depends on configuration #defines such as - * NO_DIRENT_H that are set up by the "configure" script. - * - * Much of the material in this file was originally contributed by Karl - * Lehenbauer, Mark Diekhans and Peter da Silva. - * - * Copyright (c) 1991-1994 The Regents of the University of California. - * Copyright (c) 1994-1997 Sun Microsystems, Inc. - * - * See the file "license.terms" for information on usage and redistribution of - * this file, and for a DISCLAIMER OF ALL WARRANTIES. - */ - -#ifndef _TCLUNIXPORT -#define _TCLUNIXPORT - -/* - *--------------------------------------------------------------------------- - * The following sets of #includes and #ifdefs are required to get Tcl to - * compile under the various flavors of unix. - *--------------------------------------------------------------------------- - */ - -#include <errno.h> -#include <fcntl.h> -#ifdef HAVE_NET_ERRNO_H -# include <net/errno.h> -#endif -#include <pwd.h> -#include <signal.h> -#ifdef HAVE_SYS_PARAM_H -# include <sys/param.h> -#endif -#include <sys/types.h> -#ifdef USE_DIRENT2_H -# include "../compat/dirent2.h" -#else -#ifdef NO_DIRENT_H -# include "../compat/dirent.h" -#else -# include <dirent.h> -#endif -#endif - -/* - *--------------------------------------------------------------------------- - * Parameterize for 64-bit filesystem support. - *--------------------------------------------------------------------------- - */ - -#ifdef HAVE_STRUCT_DIRENT64 -typedef struct dirent64 Tcl_DirEntry; -# define TclOSreaddir readdir64 -#else -typedef struct dirent Tcl_DirEntry; -# define TclOSreaddir readdir -#endif -#ifdef HAVE_DIR64 -typedef DIR64 TclDIR; -# define TclOSopendir opendir64 -# define TclOSrewinddir rewinddir64 -# define TclOSclosedir closedir64 -#else -typedef DIR TclDIR; -# define TclOSopendir opendir -# define TclOSrewinddir rewinddir -# define TclOSclosedir closedir -#endif - -#ifdef HAVE_TYPE_OFF64_T -typedef off64_t Tcl_SeekOffset; -# define TclOSseek lseek64 -# define TclOSopen open64 -#else -typedef off_t Tcl_SeekOffset; -# define TclOSseek lseek -# define TclOSopen open -#endif - -#ifdef __CYGWIN__ - - /* Make some symbols available without including <windows.h> */ -# define DWORD unsigned int -# define CP_UTF8 65001 -# define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004 -# define HANDLE void * -# define HINSTANCE void * -# define SOCKET unsigned int -# define WSAEWOULDBLOCK 10035 - typedef unsigned short WCHAR; - __declspec(dllimport) extern __stdcall int GetModuleHandleExW(unsigned int, const char *, void *); - __declspec(dllimport) extern __stdcall int GetModuleFileNameW(void *, const char *, int); - __declspec(dllimport) extern __stdcall int WideCharToMultiByte(int, int, const void *, int, - char *, int, const char *, void *); - __declspec(dllimport) extern __stdcall int MultiByteToWideChar(int, int, const char *, int, - WCHAR *, int); - __declspec(dllimport) extern __stdcall void OutputDebugStringW(const WCHAR *); - __declspec(dllimport) extern __stdcall int IsDebuggerPresent(); - __declspec(dllimport) extern __stdcall int GetLastError(); - __declspec(dllimport) extern __stdcall int GetFileAttributesW(const WCHAR *); - __declspec(dllimport) extern __stdcall int SetFileAttributesW(const WCHAR *, int); - - __declspec(dllimport) extern int cygwin_conv_path(int, const void *, void *, int); -/* On Cygwin, the environment is imported from the Cygwin DLL. */ -#ifndef __x86_64__ -# define environ __cygwin_environ - extern char **__cygwin_environ; -#endif -# define timezone _timezone - extern int TclOSstat(const char *name, void *statBuf); - extern int TclOSlstat(const char *name, void *statBuf); -#elif defined(HAVE_STRUCT_STAT64) && !defined(__APPLE__) -# define TclOSstat stat64 -# define TclOSlstat lstat64 -#else -# define TclOSstat stat -# define TclOSlstat lstat -#endif - -/* - *--------------------------------------------------------------------------- - * Miscellaneous includes that might be missing. - *--------------------------------------------------------------------------- - */ - -#include <sys/file.h> -#ifdef HAVE_SYS_SELECT_H -# include <sys/select.h> -#endif -#include <sys/stat.h> -#ifdef TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -#ifdef HAVE_SYS_TIME_H -# include <sys/time.h> -#else -# include <time.h> -#endif -#endif -#ifndef NO_SYS_WAIT_H -# include <sys/wait.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#include <limits.h> -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#else -# include "../compat/unistd.h" -#endif - -extern int TclUnixSetBlockingMode(int fd, int mode); - -#include <utime.h> - -/* - *--------------------------------------------------------------------------- - * Socket support stuff: This likely needs more work to parameterize for each - * system. - *--------------------------------------------------------------------------- - */ - -#include <sys/socket.h> /* struct sockaddr, SOCK_STREAM, ... */ -#ifndef NO_UNAME -# include <sys/utsname.h> /* uname system call. */ -#endif -#include <netinet/in.h> /* struct in_addr, struct sockaddr_in */ -#include <arpa/inet.h> /* inet_ntoa() */ -#include <netdb.h> /* getaddrinfo() */ -#ifdef NEED_FAKE_RFC2553 -# include "../compat/fake-rfc2553.h" -#endif - -/* - *--------------------------------------------------------------------------- - * Some platforms (e.g. SunOS) don't define FLT_MAX and FLT_MIN, so we look - * for an alternative definition. If no other alternative is available we use - * a reasonable guess. - *--------------------------------------------------------------------------- - */ - -#ifndef NO_FLOAT_H -# include <float.h> -#else -#ifndef NO_VALUES_H -# include <values.h> -#endif -#endif - -#ifndef FLT_MAX -# ifdef MAXFLOAT -# define FLT_MAX MAXFLOAT -# else -# define FLT_MAX 3.402823466E+38F -# endif -#endif -#ifndef FLT_MIN -# ifdef MINFLOAT -# define FLT_MIN MINFLOAT -# else -# define FLT_MIN 1.175494351E-38F -# endif -#endif - -/* - *--------------------------------------------------------------------------- - * NeXT doesn't define O_NONBLOCK, so #define it here if necessary. - *--------------------------------------------------------------------------- - */ - -#ifndef O_NONBLOCK -# define O_NONBLOCK 0x80 -#endif - -/* - *--------------------------------------------------------------------------- - * The type of the status returned by wait varies from UNIX system to UNIX - * system. The macro below defines it: - *--------------------------------------------------------------------------- - */ - -#ifdef _AIX -# define WAIT_STATUS_TYPE pid_t -#else -#ifndef NO_UNION_WAIT -# define WAIT_STATUS_TYPE union wait -#else -# define WAIT_STATUS_TYPE int -#endif -#endif - -/* - *--------------------------------------------------------------------------- - * Supply definitions for macros to query wait status, if not already defined - * in header files above. - *--------------------------------------------------------------------------- - */ - -#ifndef WIFEXITED -# define WIFEXITED(stat) (((*((int *) &(stat))) & 0xff) == 0) -#endif - -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat) (((*((int *) &(stat))) >> 8) & 0xff) -#endif - -#ifndef WIFSIGNALED -# define WIFSIGNALED(stat) \ - (((*((int *) &(stat)))) && ((*((int *) &(stat))) \ - == ((*((int *) &(stat))) & 0x00ff))) -#endif - -#ifndef WTERMSIG -# define WTERMSIG(stat) ((*((int *) &(stat))) & 0x7f) -#endif - -#ifndef WIFSTOPPED -# define WIFSTOPPED(stat) (((*((int *) &(stat))) & 0xff) == 0177) -#endif - -#ifndef WSTOPSIG -# define WSTOPSIG(stat) (((*((int *) &(stat))) >> 8) & 0xff) -#endif - -/* - *--------------------------------------------------------------------------- - * Define constants for waitpid() system call if they aren't defined by a - * system header file. - *--------------------------------------------------------------------------- - */ - -#ifndef WNOHANG -# define WNOHANG 1 -#endif -#ifndef WUNTRACED -# define WUNTRACED 2 -#endif - -/* - *--------------------------------------------------------------------------- - * Supply macros for seek offsets, if they're not already provided by an - * include file. - *--------------------------------------------------------------------------- - */ - -#ifndef SEEK_SET -# define SEEK_SET 0 -#endif -#ifndef SEEK_CUR -# define SEEK_CUR 1 -#endif -#ifndef SEEK_END -# define SEEK_END 2 -#endif - -/* - *--------------------------------------------------------------------------- - * The stuff below is needed by the "time" command. If this system has no - * gettimeofday call, then must use times() instead. - *--------------------------------------------------------------------------- - */ - -#ifdef NO_GETTOD -# include <sys/times.h> -#else -# ifdef HAVE_BSDGETTIMEOFDAY -# define gettimeofday BSDgettimeofday -# endif -#endif - -#ifdef GETTOD_NOT_DECLARED -extern int gettimeofday(struct timeval *tp, - struct timezone *tzp); -#endif - -/* - *--------------------------------------------------------------------------- - * Define access mode constants if they aren't already defined. - *--------------------------------------------------------------------------- - */ - -#ifndef F_OK -# define F_OK 00 -#endif -#ifndef X_OK -# define X_OK 01 -#endif -#ifndef W_OK -# define W_OK 02 -#endif -#ifndef R_OK -# define R_OK 04 -#endif - -/* - *--------------------------------------------------------------------------- - * Define FD_CLOEEXEC (the close-on-exec flag bit) if it isn't already - * defined. - *--------------------------------------------------------------------------- - */ - -#ifndef FD_CLOEXEC -# define FD_CLOEXEC 1 -#endif - -/* - *--------------------------------------------------------------------------- - * On systems without symbolic links (i.e. S_IFLNK isn't defined) define - * "lstat" to use "stat" instead. - *--------------------------------------------------------------------------- - */ - -#ifndef S_IFLNK -# undef TclOSlstat -# define lstat stat -# define lstat64 stat64 -# define TclOSlstat TclOSstat -#endif - -/* - *--------------------------------------------------------------------------- - * Define macros to query file type bits, if they're not already defined. - *--------------------------------------------------------------------------- - */ - -#ifndef S_ISREG -# ifdef S_IFREG -# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -# else -# define S_ISREG(m) 0 -# endif -#endif /* !S_ISREG */ -#ifndef S_ISDIR -# ifdef S_IFDIR -# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -# else -# define S_ISDIR(m) 0 -# endif -#endif /* !S_ISDIR */ -#ifndef S_ISCHR -# ifdef S_IFCHR -# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) -# else -# define S_ISCHR(m) 0 -# endif -#endif /* !S_ISCHR */ - -#ifndef S_ISBLK -# ifdef S_IFBLK -# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) -# else -# define S_ISBLK(m) 0 -# endif -#endif /* !S_ISBLK */ - -#ifndef S_ISFIFO -# ifdef S_IFIFO -# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -# else -# define S_ISFIFO(m) 0 -# endif -#endif /* !S_ISFIFO */ - -#ifndef S_ISLNK -# ifdef S_IFLNK -# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) -# else -# define S_ISLNK(m) 0 -# endif -#endif /* !S_ISLNK */ - -#ifndef S_ISSOCK -# ifdef S_IFSOCK -# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) -# else -# define S_ISSOCK(m) 0 -# endif -#endif /* !S_ISSOCK */ - -/* - *--------------------------------------------------------------------------- - * Make sure that MAXPATHLEN and MAXNAMLEN are defined. - *--------------------------------------------------------------------------- - */ - -#ifndef MAXPATHLEN -# ifdef PATH_MAX -# define MAXPATHLEN PATH_MAX -# else -# define MAXPATHLEN 2048 -# endif -#endif - -#ifndef MAXNAMLEN -# ifdef NAME_MAX -# define MAXNAMLEN NAME_MAX -# else -# define MAXNAMLEN 255 -# endif -#endif - -/* - *--------------------------------------------------------------------------- - * The following macro defines the type of the mask arguments to select: - *--------------------------------------------------------------------------- - */ - -#ifndef NO_FD_SET -# define SELECT_MASK fd_set -#else /* NO_FD_SET */ -# ifndef _AIX - typedef long fd_mask; -# endif /* !AIX */ -# if defined(_IBMR2) -# define SELECT_MASK void -# else /* !defined(_IBMR2) */ -# define SELECT_MASK int -# endif /* defined(_IBMR2) */ -#endif /* !NO_FD_SET */ - -/* - *--------------------------------------------------------------------------- - * Define "NBBY" (number of bits per byte) if it's not already defined. - *--------------------------------------------------------------------------- - */ - -#ifndef NBBY -# define NBBY 8 -#endif - -/* - *--------------------------------------------------------------------------- - * The following macro defines the number of fd_masks in an fd_set: - *--------------------------------------------------------------------------- - */ - -#ifndef FD_SETSIZE -# ifdef OPEN_MAX -# define FD_SETSIZE OPEN_MAX -# else -# define FD_SETSIZE 256 -# endif -#endif /* FD_SETSIZE */ - -#ifndef howmany -# define howmany(x, y) (((x)+((y)-1))/(y)) -#endif /* !defined(howmany) */ - -#ifndef NFDBITS -# define NFDBITS NBBY*sizeof(fd_mask) -#endif /* NFDBITS */ - -#define MASK_SIZE howmany(FD_SETSIZE, NFDBITS) - -/* - *--------------------------------------------------------------------------- - * Not all systems declare the errno variable in errno.h. so this file does it - * explicitly. The list of system error messages also isn't generally declared - * in a header file anywhere. - *--------------------------------------------------------------------------- - */ - -#ifdef NO_ERRNO -extern int errno; -#endif /* NO_ERRNO */ - -/* - *--------------------------------------------------------------------------- - * Not all systems declare all the errors that Tcl uses! Provide some - * work-arounds... - *--------------------------------------------------------------------------- - */ - -#ifndef EOVERFLOW -# ifdef EFBIG -# define EOVERFLOW EFBIG -# else /* !EFBIG */ -# define EOVERFLOW EINVAL -# endif /* EFBIG */ -#endif /* EOVERFLOW */ - -/* - *--------------------------------------------------------------------------- - * Variables provided by the C library: - *--------------------------------------------------------------------------- - */ - -#if defined(__APPLE__) && defined(__DYNAMIC__) -# include <crt_externs.h> -# define environ (*_NSGetEnviron()) -# define USE_PUTENV 1 -#else -# if defined(_sgi) || defined(__sgi) -# define environ _environ -# endif -extern char ** environ; -#endif - -/* - *--------------------------------------------------------------------------- - * Darwin specifc configure overrides. - *--------------------------------------------------------------------------- - */ - -#ifdef __APPLE__ - -/* - *--------------------------------------------------------------------------- - * Support for fat compiles: configure runs only once for multiple architectures - *--------------------------------------------------------------------------- - */ - -# if defined(__LP64__) && defined (NO_COREFOUNDATION_64) -# undef HAVE_COREFOUNDATION -# endif /* __LP64__ && NO_COREFOUNDATION_64 */ -# include <sys/cdefs.h> -# ifdef __DARWIN_UNIX03 -# if __DARWIN_UNIX03 -# undef HAVE_PUTENV_THAT_COPIES -# else -# define HAVE_PUTENV_THAT_COPIES 1 -# endif -# endif /* __DARWIN_UNIX03 */ - -/* - *--------------------------------------------------------------------------- - * Include AvailabilityMacros.h here (when available) to ensure any symbolic - * MAC_OS_X_VERSION_* constants passed on the command line are translated. - *--------------------------------------------------------------------------- - */ - -# ifdef HAVE_AVAILABILITYMACROS_H -# include <AvailabilityMacros.h> -# endif - -/* - *--------------------------------------------------------------------------- - * Support for weak import. - *--------------------------------------------------------------------------- - */ - -# ifdef HAVE_WEAK_IMPORT -# if !defined(HAVE_AVAILABILITYMACROS_H) || !defined(MAC_OS_X_VERSION_MIN_REQUIRED) -# undef HAVE_WEAK_IMPORT -# else -# ifndef WEAK_IMPORT_ATTRIBUTE -# define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import)) -# endif -# endif -# endif /* HAVE_WEAK_IMPORT */ - -/* - *--------------------------------------------------------------------------- - * Support for MAC_OS_X_VERSION_MAX_ALLOWED define from AvailabilityMacros.h: - * only use API available in the indicated OS version or earlier. - *--------------------------------------------------------------------------- - */ - -# ifdef MAC_OS_X_VERSION_MAX_ALLOWED -# if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 && defined(__LP64__) -# undef HAVE_COREFOUNDATION -# endif -# if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 -# undef HAVE_OSSPINLOCKLOCK -# undef HAVE_PTHREAD_ATFORK -# undef HAVE_COPYFILE -# endif -# if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 -# ifdef TCL_THREADS - /* prior to 10.3, realpath is not threadsafe, c.f. bug 711232 */ -# define NO_REALPATH 1 -# endif -# undef HAVE_LANGINFO -# endif -# endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ -# if defined(HAVE_COREFOUNDATION) && defined(__LP64__) && \ - defined(HAVE_WEAK_IMPORT) && MAC_OS_X_VERSION_MIN_REQUIRED < 1050 -# warning "Weak import of 64-bit CoreFoundation is not supported, will not run on Mac OS X < 10.5." -# endif - -/* - *--------------------------------------------------------------------------- - * At present, using vfork() instead of fork() causes execve() to fail - * intermittently on Darwin x86_64. rdar://4685553 - *--------------------------------------------------------------------------- - */ - -# if defined(__x86_64__) && !defined(FIXED_RDAR_4685553) -# undef USE_VFORK -# endif /* __x86_64__ */ -/* Workaround problems with vfork() when building with llvm-gcc-4.2 */ -# if defined (__llvm__) && \ - (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 2 || \ - (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ > 0)))) -# undef USE_VFORK -# endif /* __llvm__ */ -#endif /* __APPLE__ */ - -/* - *--------------------------------------------------------------------------- - * The following macros and declarations represent the interface between - * generic and unix-specific parts of Tcl. Some of the macros may override - * functions declared in tclInt.h. - *--------------------------------------------------------------------------- - */ - -/* - * The default platform eol translation on Unix is TCL_TRANSLATE_LF. - */ - -#ifdef DJGPP -#define TCL_PLATFORM_TRANSLATION TCL_TRANSLATE_CRLF -typedef int socklen_t; -#else -#define TCL_PLATFORM_TRANSLATION TCL_TRANSLATE_LF -#endif - -/* - *--------------------------------------------------------------------------- - * The following macros have trivial definitions, allowing generic code to - * address platform-specific issues. - *--------------------------------------------------------------------------- - */ - -#define TclpReleaseFile(file) /* Nothing. */ - -/* - *--------------------------------------------------------------------------- - * The following defines wrap the system memory allocation routines. - *--------------------------------------------------------------------------- - */ - -#define TclpSysAlloc(size, isBin) malloc((size_t)(size)) -#define TclpSysFree(ptr) free((char *)(ptr)) -#define TclpSysRealloc(ptr, size) realloc((char *)(ptr), (size_t)(size)) - -/* - *--------------------------------------------------------------------------- - * The following macros and declaration wrap the C runtime library functions. - *--------------------------------------------------------------------------- - */ - -#define TclpExit exit - -#ifdef TCL_THREADS -# include <pthread.h> -#endif /* TCL_THREADS */ - -/* FIXME - Hyper-enormous platform assumption! */ -#ifndef AF_INET6 -# define AF_INET6 10 -#endif - -/* - *--------------------------------------------------------------------------- - * Set of MT-safe implementations of some known-to-be-MT-unsafe library calls. - * Instead of returning pointers to the static storage, those return pointers - * to the TSD data. - *--------------------------------------------------------------------------- - */ - -#include <pwd.h> -#include <grp.h> - -extern struct passwd * TclpGetPwNam(const char *name); -extern struct group * TclpGetGrNam(const char *name); -extern struct passwd * TclpGetPwUid(uid_t uid); -extern struct group * TclpGetGrGid(gid_t gid); -extern struct hostent * TclpGetHostByName(const char *name); -extern struct hostent * TclpGetHostByAddr(const char *addr, - int length, int type); -extern void *TclpMakeTcpClientChannelMode( - void *tcpSocket, int mode); - -#endif /* _TCLUNIXPORT */ - -/* - * Local Variables: - * mode: c - * c-basic-offset: 4 - * fill-column: 78 - * End: - */ |