diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2011-05-10 16:44:38 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2011-05-10 16:44:38 +0000 |
commit | d770d2554b4dc7b2373e9d512f148c28e5300c64 (patch) | |
tree | a5ed989c68da184a706fdc6368636e8bbe980304 /Src/system.h | |
parent | de06c833349b01833403a4cd0c0072c51cc13771 (diff) | |
download | zsh-d770d2554b4dc7b2373e9d512f148c28e5300c64.tar.gz zsh-d770d2554b4dc7b2373e9d512f148c28e5300c64.tar.xz zsh-d770d2554b4dc7b2373e9d512f148c28e5300c64.zip |
rename system.h to zsh_system.h
Diffstat (limited to 'Src/system.h')
-rw-r--r-- | Src/system.h | 876 |
1 files changed, 0 insertions, 876 deletions
diff --git a/Src/system.h b/Src/system.h deleted file mode 100644 index f38533023..000000000 --- a/Src/system.h +++ /dev/null @@ -1,876 +0,0 @@ -/* - * system.h - system configuration header file - * - * This file is part of zsh, the Z shell. - * - * Copyright (c) 1992-1997 Paul Falstad - * All rights reserved. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and to distribute modified versions of this software for any - * purpose, provided that the above copyright notice and the following - * two paragraphs appear in all copies of this software. - * - * In no event shall Paul Falstad or the Zsh Development Group be liable - * to any party for direct, indirect, special, incidental, or consequential - * damages arising out of the use of this software and its documentation, - * even if Paul Falstad and the Zsh Development Group have been advised of - * the possibility of such damage. - * - * Paul Falstad and the Zsh Development Group specifically disclaim any - * warranties, including, but not limited to, the implied warranties of - * merchantability and fitness for a particular purpose. The software - * provided hereunder is on an "as is" basis, and Paul Falstad and the - * Zsh Development Group have no obligation to provide maintenance, - * support, updates, enhancements, or modifications. - * - */ - -#if 0 -/* - * Setting _XPG_IV here is actually wrong and is not needed - * with currently supported versions (5.43C20 and above) - */ -#ifdef sinix -# define _XPG_IV 1 -#endif -#endif - -#if defined(__linux) || defined(__GNU__) || defined(__GLIBC__) || defined(LIBC_MUSL) -/* - * Turn on numerous extensions. - * This is in order to get the functions for manipulating /dev/ptmx. - */ -#define _GNU_SOURCE 1 -#endif -#ifdef LIBC_MUSL -#define _POSIX_C_SOURCE 200809L -#endif - -/* NeXT has half-implemented POSIX support * - * which currently fools configure */ -#ifdef __NeXT__ -# undef HAVE_TERMIOS_H -# undef HAVE_SYS_UTSNAME_H -#endif - -#ifndef ZSH_NO_XOPEN -# ifdef ZSH_CURSES_SOURCE -# define _XOPEN_SOURCE_EXTENDED 1 -# else -# ifdef MULTIBYTE_SUPPORT -/* - * Needed for wcwidth() which is part of XSI. - * Various other uses of the interface mean we can't get away with just - * _XOPEN_SOURCE. - */ -# define _XOPEN_SOURCE_EXTENDED 1 -# endif /* MULTIBYTE_SUPPORT */ -# endif /* ZSH_CURSES_SOURCE */ -#endif /* ZSH_NO_XOPEN */ - -/* - * Solaris by default zeroes all elements of the tm structure in - * strptime(). Unfortunately that gives us no way of telling whether - * the tm_isdst element has been set from the input pattern. If it - * hasn't we want it to be -1 (undetermined) on input to mktime(). So - * we stop strptime() zeroing the struct tm and instead set all the - * elements ourselves. - * - * This is likely to be harmless everywhere else. - */ -#define _STRPTIME_DONTZERO - -#ifdef PROTOTYPES -# define _(Args) Args -#else -# define _(Args) () -#endif - -#ifndef HAVE_ALLOCA -# define alloca zhalloc -#else -# ifdef __GNUC__ -# define alloca __builtin_alloca -# else -# if HAVE_ALLOCA_H -# include <alloca.h> -# else -# ifdef _AIX - # pragma alloca -# else -# ifndef alloca -char *alloca _((size_t)); -# endif -# endif -# endif -# endif -#endif - -/* - * libc.h in an optional package for Debian Linux is broken (it - * defines dup() as a synonym for dup2(), which has a different - * number of arguments), so just include it for next. - */ -#ifdef __NeXT__ -# ifdef HAVE_LIBC_H -# include <libc.h> -# endif -#endif - -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -#ifdef HAVE_STDDEF_H -/* - * Seen on Solaris 8 with gcc: stddef defines offsetof, which clashes - * with system.h's definition of the symbol unless we include this - * first. Otherwise, this will be hooked in by wchar.h, too late - * for comfort. - */ -#include <stddef.h> -#endif - -#include <stdio.h> -#include <ctype.h> -#include <sys/stat.h> -#include <signal.h> -#include <setjmp.h> - -#ifdef HAVE_PWD_H -# include <pwd.h> -#endif - -#ifdef HAVE_GRP_H -# include <grp.h> -#endif - -#ifdef HAVE_DIRENT_H -# include <dirent.h> -#else /* !HAVE_DIRENT_H */ -# ifdef HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif -# ifdef HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif -# ifdef HAVE_NDIR_H -# include <ndir.h> -# endif -# define dirent direct -# undef HAVE_STRUCT_DIRENT_D_INO -# undef HAVE_STRUCT_DIRENT_D_STAT -# ifdef HAVE_STRUCT_DIRECT_D_INO -# define HAVE_STRUCT_DIRENT_D_INO HAVE_STRUCT_DIRECT_D_INO -# endif -# ifdef HAVE_STRUCT_DIRECT_D_STAT -# define HAVE_STRUCT_DIRENT_D_STAT HAVE_STRUCT_DIRECT_D_STAT -# endif -#endif /* !HAVE_DIRENT_H */ - -#ifdef HAVE_STDLIB_H -# ifdef ZSH_MEM - /* malloc and calloc are macros in GNU's stdlib.h unless the - * the __MALLOC_0_RETURNS_NULL macro is defined */ -# define __MALLOC_0_RETURNS_NULL -# endif -# include <stdlib.h> -#endif - -/* - * Stuff with variable arguments. We use definitions to make the - * same code work with varargs (the original K&R-style, just to - * be maximally compatible) and stdarg (which all modern systems - * should have). - * - * Ideally this should somehow be merged with the tricks performed - * with "_" in makepro.awk, but I don't understand makepro.awk. - * Currently we simply rely on the fact that makepro.awk has been - * hacked to leave alone argument lists that already contains VA_ALIST - * except for removing the VA_DCL and turning VA_ALIST into VA_ALIST_PROTO. - */ -#ifdef HAVE_STDARG_H -# include <stdarg.h> -# define VA_ALIST1(x) x, ... -# define VA_ALIST2(x,y) x, y, ... -# define VA_ALIST_PROTO1(x) VA_ALIST1(x) -# define VA_ALIST_PROTO2(x,y) VA_ALIST2(x,y) -# define VA_DCL -# define VA_DEF_ARG(x) -# define VA_START(ap,x) va_start(ap, x) -# define VA_GET_ARG(ap,x,t) -#else -# if HAVE_VARARGS_H -# include <varargs.h> -# define VA_ALIST1(x) va_alist -# define VA_ALIST2(x,y) va_alist -/* - * In prototypes, assume K&R form and remove the variable list. - * This is about the best we can do without second-guessing the way - * varargs works on this system. The _ trick should be able to - * do this for us but we've turned it off here. - */ -# define VA_ALIST_PROTO1(x) -# define VA_ALIST_PROTO2(x,y) -# define VA_DCL va_dcl -# define VA_DEF_ARG(x) x -# define VA_START(ap,x) va_start(ap); -# define VA_GET_ARG(ap,x,t) (x = va_arg(ap, t)) -# else -# error "Your system has neither stdarg.h or varargs.h." -# endif -#endif - -#ifdef HAVE_ERRNO_H -# include <errno.h> -#endif - -#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 - -/* This is needed by some old SCO unices */ -#if !defined(HAVE_STRUCT_TIMEZONE) && !defined(ZSH_OOT_MODULE) -struct timezone { - int tz_minuteswest; - int tz_dsttime; -}; -#endif - -/* There's more than one non-standard way to get at this data */ -#if !defined(HAVE_STRUCT_DIRENT_D_INO) && defined(HAVE_STRUCT_DIRENT_D_STAT) -# define d_ino d_stat.st_ino -# define HAVE_STRUCT_DIRENT_D_INO HAVE_STRUCT_DIRENT_D_STAT -#endif /* !HAVE_STRUCT_DIRENT_D_INO && HAVE_STRUCT_DIRENT_D_STAT */ - -/* Sco needs the following include for struct utimbuf * - * which is strange considering we do not use that * - * anywhere in the code */ -#ifdef __sco -# include <utime.h> -#endif - -#ifdef HAVE_SYS_TIMES_H -# include <sys/times.h> -#endif - -#if STDC_HEADERS || HAVE_STRING_H -# include <string.h> -/* An ANSI string.h and pre-ANSI memory.h might conflict. */ -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif /* not STDC_HEADERS and HAVE_MEMORY_H */ -#else /* not STDC_HEADERS and not HAVE_STRING_H */ -# include <strings.h> -/* memory.h and strings.h conflict on some systems. */ -#endif /* not STDC_HEADERS and not HAVE_STRING_H */ - -#ifdef HAVE_LOCALE_H -# include <locale.h> -#endif - -#ifdef HAVE_LIMITS_H -# include <limits.h> -#endif - -#ifdef HAVE_VARIABLE_LENGTH_ARRAYS -# define VARARR(X,Y,Z) X (Y)[Z] -#else -# define VARARR(X,Y,Z) X *(Y) = (X *) alloca(sizeof(X) * (Z)) -#endif - -/* we should handle unlimited sizes from pathconf(_PC_PATH_MAX) */ -/* but this is too much trouble */ -#ifndef PATH_MAX -# ifdef MAXPATHLEN -# define PATH_MAX MAXPATHLEN -# else -# ifdef _POSIX_PATH_MAX -# define PATH_MAX _POSIX_PATH_MAX -# else - /* so we will just pick something */ -# define PATH_MAX 1024 -# endif -# endif -#endif - -/* - * The number of file descriptors we'll allocate initially. - * We will reallocate later if necessary. - */ -#define ZSH_INITIAL_OPEN_MAX 64 -#ifndef OPEN_MAX -# ifdef NOFILE -# define OPEN_MAX NOFILE -# else - /* so we will just pick something */ -# define OPEN_MAX ZSH_INITIAL_OPEN_MAX -# endif -#endif -#ifndef HAVE_SYSCONF -# define zopenmax() ((long) (OPEN_MAX > ZSH_INITIAL_OPEN_MAX ? \ - ZSH_INITIAL_OPEN_MAX : OPEN_MAX)) -#endif - -#ifdef HAVE_FCNTL_H -# include <fcntl.h> -#else -# include <sys/file.h> -#endif - -/* The following will only be defined if <sys/wait.h> is POSIX. * - * So we don't have to worry about union wait. But some machines * - * (NeXT) include <sys/wait.h> from other include files, so we * - * need to undef and then redefine the wait macros if <sys/wait.h> * - * is not POSIX. */ - -#ifdef HAVE_SYS_WAIT_H -# include <sys/wait.h> -#else -# undef WIFEXITED -# undef WEXITSTATUS -# undef WIFSIGNALED -# undef WTERMSIG -# undef WCOREDUMP -# undef WIFSTOPPED -# undef WSTOPSIG -#endif - -/* missing macros for wait/waitpid/wait3 */ -#ifndef WIFEXITED -# define WIFEXITED(X) (((X)&0377)==0) -#endif -#ifndef WEXITSTATUS -# define WEXITSTATUS(X) (((X)>>8)&0377) -#endif -#ifndef WIFSIGNALED -# define WIFSIGNALED(X) (((X)&0377)!=0&&((X)&0377)!=0177) -#endif -#ifndef WTERMSIG -# define WTERMSIG(X) ((X)&0177) -#endif -#ifndef WCOREDUMP -# define WCOREDUMP(X) ((X)&0200) -#endif -#ifndef WIFSTOPPED -# define WIFSTOPPED(X) (((X)&0377)==0177) -#endif -#ifndef WSTOPSIG -# define WSTOPSIG(X) (((X)>>8)&0377) -#endif - -#ifdef HAVE_SYS_SELECT_H -# ifndef TIME_H_SELECT_H_CONFLICTS -# include <sys/select.h> -# endif -#elif defined(SELECT_IN_SYS_SOCKET_H) -# include <sys/socket.h> -#endif - -#if defined(__APPLE__) && defined(HAVE_SELECT) -/* - * Prefer select() to poll() on MacOS X since poll() is known - * to be problematic in 10.4 - */ -#undef HAVE_POLL -#undef HAVE_POLL_H -#endif - -#ifdef HAVE_SYS_FILIO_H -# include <sys/filio.h> -#endif - -#ifdef HAVE_TERMIOS_H -# ifdef __sco - /* termios.h includes sys/termio.h instead of sys/termios.h; * - * hence the declaration for struct termios is missing */ -# include <sys/termios.h> -# else -# include <termios.h> -# endif -# ifdef _POSIX_VDISABLE -# define VDISABLEVAL _POSIX_VDISABLE -# else -# define VDISABLEVAL 0 -# endif -# define HAS_TIO 1 -#else /* not TERMIOS */ -# ifdef HAVE_TERMIO_H -# include <termio.h> -# define VDISABLEVAL -1 -# define HAS_TIO 1 -# else /* not TERMIOS and TERMIO */ -# include <sgtty.h> -# endif /* HAVE_TERMIO_H */ -#endif /* HAVE_TERMIOS_H */ - -#if defined(GWINSZ_IN_SYS_IOCTL) || defined(IOCTL_IN_SYS_IOCTL) -# include <sys/ioctl.h> -#endif -#ifdef WINSIZE_IN_PTEM -# include <sys/stream.h> -# include <sys/ptem.h> -#endif - -#ifdef HAVE_SYS_PARAM_H -# include <sys/param.h> -#endif - -#ifdef HAVE_SYS_UTSNAME_H -# include <sys/utsname.h> -#endif - -#define DEFAULT_WORDCHARS "*?_-.[]~=/&;!#$%^(){}<>" -#define DEFAULT_TIMEFMT "%J %U user %S system %P cpu %*E total" - -/* Posix getpgrp takes no argument, while the BSD version * - * takes the process ID as an argument */ -#ifdef GETPGRP_VOID -# define GETPGRP() getpgrp() -#else -# define GETPGRP() getpgrp(0) -#endif - -#ifndef HAVE_GETLOGIN -# define getlogin() cuserid(NULL) -#endif - -#ifdef HAVE_SETPGID -# define setpgrp setpgid -#endif - -/* can we set the user/group id of a process */ - -#ifndef HAVE_SETUID -# ifdef HAVE_SETREUID -# define setuid(X) setreuid(X,X) -# define setgid(X) setregid(X,X) -# define HAVE_SETUID -# endif -#endif - -/* can we set the effective user/group id of a process */ - -#ifndef HAVE_SETEUID -# ifdef HAVE_SETREUID -# define seteuid(X) setreuid(-1,X) -# define setegid(X) setregid(-1,X) -# define HAVE_SETEUID -# else -# ifdef HAVE_SETRESUID -# define seteuid(X) setresuid(-1,X,-1) -# define setegid(X) setresgid(-1,X,-1) -# define HAVE_SETEUID -# endif -# endif -#endif - -#ifdef HAVE_SYS_RESOURCE_H -# include <sys/resource.h> -# if defined(__hpux) && !defined(RLIMIT_CPU) -/* HPUX does have the BSD rlimits in the kernel. Officially they are * - * unsupported but quite a few of them like RLIMIT_CORE seem to work. * - * All the following are in the <sys/resource.h> but made visible * - * only for the kernel. */ -# define RLIMIT_CPU 0 -# define RLIMIT_FSIZE 1 -# define RLIMIT_DATA 2 -# define RLIMIT_STACK 3 -# define RLIMIT_CORE 4 -# define RLIMIT_RSS 5 -# define RLIMIT_NOFILE 6 -# define RLIMIT_OPEN_MAX RLIMIT_NOFILE -# define RLIM_NLIMITS 7 -# define RLIM_INFINITY 0x7fffffff -# endif -#endif - -/* we use the SVR4 constant instead of the BSD one */ -#if !defined(RLIMIT_NOFILE) && defined(RLIMIT_OFILE) -# define RLIMIT_NOFILE RLIMIT_OFILE -#endif -#if !defined(RLIMIT_VMEM) && defined(RLIMIT_AS) -# define RLIMIT_VMEM RLIMIT_AS -#endif - -#ifdef HAVE_SYS_CAPABILITY_H -# include <sys/capability.h> -#endif - -/* DIGBUFSIZ is the length of a buffer which can hold the -LONG_MAX-1 * - * (or with ZSH_64_BIT_TYPE maybe -LONG_LONG_MAX-1) * - * converted to printable decimal form including the sign and the * - * terminating null character. Below 0.30103 > lg 2. * - * BDIGBUFSIZE is for a number converted to printable binary form. */ -#define DIGBUFSIZE ((int)(((sizeof(zlong) * 8) - 1) * 30103/100000) + 3) -#define BDIGBUFSIZE ((int)((sizeof(zlong) * 8) + 4)) - -/* If your stat macros are broken, we will * - * just undefine them. */ - -#ifdef STAT_MACROS_BROKEN -# undef S_ISBLK -# undef S_ISCHR -# undef S_ISDIR -# undef S_ISDOOR -# undef S_ISFIFO -# undef S_ISLNK -# undef S_ISMPB -# undef S_ISMPC -# undef S_ISNWK -# undef S_ISOFD -# undef S_ISOFL -# undef S_ISREG -# undef S_ISSOCK -#endif /* STAT_MACROS_BROKEN. */ - -/* If you are missing the stat macros, we * - * define our own */ - -#ifndef S_IFMT -# define S_IFMT 0170000 -#endif - -#if !defined(S_ISBLK) && defined(S_IFBLK) -# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) -#endif -#if !defined(S_ISCHR) && defined(S_IFCHR) -# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) -#endif -#if !defined(S_ISDIR) && defined(S_IFDIR) -# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -#endif -#if !defined(S_ISDOOR) && defined(S_IFDOOR) /* Solaris */ -# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR) -#endif -#if !defined(S_ISFIFO) && defined(S_IFIFO) -# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -#endif -#if !defined(S_ISLNK) && defined(S_IFLNK) -# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) -#endif -#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */ -# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) -#endif -#if !defined(S_ISMPC) && defined(S_IFMPC) /* V7 */ -# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) -#endif -#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */ -# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) -#endif -#if !defined(S_ISOFD) && defined(S_IFOFD) /* Cray */ -# define S_ISOFD(m) (((m) & S_IFMT) == S_IFOFD) -#endif -#if !defined(S_ISOFL) && defined(S_IFOFL) /* Cray */ -# define S_ISOFL(m) (((m) & S_IFMT) == S_IFOFL) -#endif -#if !defined(S_ISREG) && defined(S_IFREG) -# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#if !defined(S_ISSOCK) && defined(S_IFSOCK) -# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) -#endif - -/* We will pretend to have all file types on any system. */ - -#ifndef S_ISBLK -# define S_ISBLK(m) ((void)(m), 0) -#endif -#ifndef S_ISCHR -# define S_ISCHR(m) ((void)(m), 0) -#endif -#ifndef S_ISDIR -# define S_ISDIR(m) ((void)(m), 0) -#endif -#ifndef S_ISDOOR -# define S_ISDOOR(m) ((void)(m), 0) -#endif -#ifndef S_ISFIFO -# define S_ISFIFO(m) ((void)(m), 0) -#endif -#ifndef S_ISLNK -# define S_ISLNK(m) ((void)(m), 0) -#endif -#ifndef S_ISMPB -# define S_ISMPB(m) ((void)(m), 0) -#endif -#ifndef S_ISMPC -# define S_ISMPC(m) ((void)(m), 0) -#endif -#ifndef S_ISNWK -# define S_ISNWK(m) ((void)(m), 0) -#endif -#ifndef S_ISOFD -# define S_ISOFD(m) ((void)(m), 0) -#endif -#ifndef S_ISOFL -# define S_ISOFL(m) ((void)(m), 0) -#endif -#ifndef S_ISREG -# define S_ISREG(m) ((void)(m), 0) -#endif -#ifndef S_ISSOCK -# define S_ISSOCK(m) ((void)(m), 0) -#endif - -/* file mode permission bits */ - -#ifndef S_ISUID -# define S_ISUID 04000 -#endif -#ifndef S_ISGID -# define S_ISGID 02000 -#endif -#ifndef S_ISVTX -# define S_ISVTX 01000 -#endif -#ifndef S_IRUSR -# define S_IRUSR 00400 -#endif -#ifndef S_IWUSR -# define S_IWUSR 00200 -#endif -#ifndef S_IXUSR -# define S_IXUSR 00100 -#endif -#ifndef S_IRGRP -# define S_IRGRP 00040 -#endif -#ifndef S_IWGRP -# define S_IWGRP 00020 -#endif -#ifndef S_IXGRP -# define S_IXGRP 00010 -#endif -#ifndef S_IROTH -# define S_IROTH 00004 -#endif -#ifndef S_IWOTH -# define S_IWOTH 00002 -#endif -#ifndef S_IXOTH -# define S_IXOTH 00001 -#endif -#ifndef S_IRWXU -# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR) -#endif -#ifndef S_IRWXG -# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP) -#endif -#ifndef S_IRWXO -# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH) -#endif -#ifndef S_IRUGO -# define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) -#endif -#ifndef S_IWUGO -# define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH) -#endif -#ifndef S_IXUGO -# define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH) -#endif - -#ifndef HAVE_LSTAT -# define lstat stat -#endif - -#ifndef HAVE_READLINK -# define readlink(PATH, BUF, BUFSZ) \ - ((void)(PATH), (void)(BUF), (void)(BUFSZ), errno = ENOSYS, -1) -#endif - -#ifndef F_OK /* missing macros for access() */ -# define F_OK 0 -# define X_OK 1 -# define W_OK 2 -# define R_OK 4 -#endif - -#ifndef HAVE_LCHOWN -# define lchown chown -#endif - -#ifndef HAVE_MEMCPY -# define memcpy memmove -#endif - -#ifndef HAVE_MEMMOVE -# define memmove(dest, src, len) bcopy((src), (dest), (len)) -#endif - -#ifndef offsetof -# define offsetof(TYPE, MEM) ((char *)&((TYPE *)0)->MEM - (char *)(TYPE *)0) -#endif - -extern char **environ; - -/* - * We always need setenv and unsetenv in pairs, because - * we don't know how to do memory management on the values set. - */ -#if defined(HAVE_SETENV) && defined(HAVE_UNSETENV) -# define USE_SET_UNSET_ENV -#endif - - -/* These variables are sometimes defined in, * - * and needed by, the termcap library. */ -#if MUST_DEFINE_OSPEED -extern char PC, *BC, *UP; -extern short ospeed; -#endif - -#ifndef O_NOCTTY -# define O_NOCTTY 0 -#endif - -#ifdef _LARGEFILE_SOURCE -#ifdef HAVE_FSEEKO -#define fseek fseeko -#endif -#ifdef HAVE_FTELLO -#define ftell ftello -#endif -#endif - -/* Can't support job control without working tcsetgrp() */ -#ifdef BROKEN_TCSETPGRP -#undef JOB_CONTROL -#endif /* BROKEN_TCSETPGRP */ - -#ifdef BROKEN_KILL_ESRCH -#undef ESRCH -#define ESRCH EINVAL -#endif /* BROKEN_KILL_ESRCH */ - -/* Can we do locale stuff? */ -#undef USE_LOCALE -#if defined(CONFIG_LOCALE) && defined(HAVE_SETLOCALE) && defined(LC_ALL) -# define USE_LOCALE 1 -#endif /* CONFIG_LOCALE && HAVE_SETLOCALE && LC_ALL */ - -#ifndef MAILDIR_SUPPORT -#define mailstat(X,Y) stat(X,Y) -#endif - -#ifdef __CYGWIN__ -# include <sys/cygwin.h> -# define IS_DIRSEP(c) ((c) == '/' || (c) == '\\') -#else -# define IS_DIRSEP(c) ((c) == '/') -#endif - -#if defined(__GNUC__) && !defined(__APPLE__) -/* Does the OS X port of gcc still gag on __attribute__? */ -#define UNUSED(x) x __attribute__((__unused__)) -#else -#define UNUSED(x) x -#endif - -/* - * The MULTIBYTE_SUPPORT configure-define specifies that we want to enable - * complete Unicode conversion between wide characters and multibyte strings. - */ -#if defined MULTIBYTE_SUPPORT \ - || (defined HAVE_WCHAR_H && defined HAVE_WCTOMB && defined __STDC_ISO_10646__) -/* - * If MULTIBYTE_SUPPORT is not defined, these includes provide a subset of - * Unicode support that makes the \u and \U printf escape sequences work. - */ - -#if defined(__hpux) && !defined(_INCLUDE__STDC_A1_SOURCE) -#define _INCLUDE__STDC_A1_SOURCE -#endif - -# include <wchar.h> -# include <wctype.h> -#endif -#ifdef HAVE_LANGINFO_H -# include <langinfo.h> -# ifdef HAVE_ICONV -# include <iconv.h> -# endif -#endif - -#if defined(HAVE_INITGROUPS) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_INITGROUPS -#endif - -#if defined(HAVE_GETGRGID) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_GETGRGID -#endif - -#if defined(HAVE_GETGRNAM) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_GETGRNAM -#endif - -#if defined(HAVE_GETPWENT) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_GETPWENT -#endif - -#if defined(HAVE_GETPWNAM) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_GETPWNAM -#endif - -#if defined(HAVE_GETPWUID) && !defined(DISABLE_DYNAMIC_NSS) -# define USE_GETPWUID -#endif - -#ifdef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC -# define GET_ST_ATIME_NSEC(st) (st).st_atim.tv_nsec -#elif HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC -# define GET_ST_ATIME_NSEC(st) (st).st_atimespec.tv_nsec -#elif HAVE_STRUCT_STAT_ST_ATIMENSEC -# define GET_ST_ATIME_NSEC(st) (st).st_atimensec -#endif -#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC -# define GET_ST_MTIME_NSEC(st) (st).st_mtim.tv_nsec -#elif HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC -# define GET_ST_MTIME_NSEC(st) (st).st_mtimespec.tv_nsec -#elif HAVE_STRUCT_STAT_ST_MTIMENSEC -# define GET_ST_MTIME_NSEC(st) (st).st_mtimensec -#endif -#ifdef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC -# define GET_ST_CTIME_NSEC(st) (st).st_ctim.tv_nsec -#elif HAVE_STRUCT_STAT_ST_CTIMESPEC_TV_NSEC -# define GET_ST_CTIME_NSEC(st) (st).st_ctimespec.tv_nsec -#elif HAVE_STRUCT_STAT_ST_CTIMENSEC -# define GET_ST_CTIME_NSEC(st) (st).st_ctimensec -#endif - -#if defined(HAVE_TGETENT) && !defined(ZSH_NO_TERM_HANDLING) -# if defined(ZSH_HAVE_CURSES_H) && defined(ZSH_HAVE_TERM_H) -# define USES_TERM_H 1 -# else -# ifdef HAVE_TERMCAP_H -# define USES_TERMCAP_H 1 -# endif -# endif - -# ifdef USES_TERM_H -# ifdef HAVE_TERMIO_H -# include <termio.h> -# endif -# ifdef ZSH_HAVE_CURSES_H -# include "zshcurses.h" -# endif -# include "zshterm.h" -# else -# ifdef USES_TERMCAP_H -# include <termcap.h> -# endif -# endif -#endif |