1#ifndef __PLAN9ISH_H__ 2#define __PLAN9ISH_H__ 3 4/* 5 * The following symbols are defined if your operating system supports 6 * functions by that name. All Unixes I know of support them, thus they 7 * are not checked by the configuration script, but are directly defined 8 * here. 9 */ 10 11/* HAS_IOCTL: 12 * This symbol, if defined, indicates that the ioctl() routine is 13 * available to set I/O characteristics 14 */ 15#define HAS_IOCTL /**/ 16 17/* HAS_UTIME: 18 * This symbol, if defined, indicates that the routine utime() is 19 * available to update the access and modification times of files. 20 */ 21#define HAS_UTIME /**/ 22 23/* HAS_GROUP 24 * This symbol, if defined, indicates that the getgrnam() and 25 * getgrgid() routines are available to get group entries. 26 * The getgrent() has a separate definition, HAS_GETGRENT. 27 */ 28/*#define HAS_GROUP /**/ 29 30/* HAS_PASSWD 31 * This symbol, if defined, indicates that the getpwnam() and 32 * getpwuid() routines are available to get password entries. 33 * The getpwent() has a separate definition, HAS_GETPWENT. 34 */ 35/*#define HAS_PASSWD /**/ 36 37#define HAS_KILL 38#define HAS_WAIT 39 40/* UNLINK_ALL_VERSIONS: 41 * This symbol, if defined, indicates that the program should arrange 42 * to remove all versions of a file if unlink() is called. This is 43 * probably only relevant for VMS. 44 */ 45/* #define UNLINK_ALL_VERSIONS /**/ 46 47/* PLAN9: 48 * This symbol, if defined, indicates that the program is running under 49 * Plan 9. 50 */ 51#ifndef PLAN9 52#define PLAN9 /**/ 53#endif 54 55/* USEMYBINMODE 56 * This symbol, if defined, indicates that the program should 57 * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure 58 * that a file is in "binary" mode -- that is, that no translation 59 * of bytes occurs on read or write operations. 60 */ 61#undef USEMYBINMODE 62 63/* Stat_t: 64 * This symbol holds the type used to declare buffers for information 65 * returned by stat(). It's usually just struct stat. It may be necessary 66 * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed 67 * information. 68 */ 69#define Stat_t struct stat 70 71/* USE_STAT_RDEV: 72* This symbol is defined if this system has a stat structure declaring 73* st_rdev 74*/ 75#undef USE_STAT_RDEV /**/ 76 77/* ACME_MESS: 78 * This symbol, if defined, indicates that error messages should be 79 * should be generated in a format that allows the use of the Acme 80 * GUI/editor's autofind feature. 81 */ 82#define ACME_MESS /**/ 83 84/* ALTERNATE_SHEBANG: 85 * This symbol, if defined, contains a "magic" string which may be used 86 * as the first line of a Perl program designed to be executed directly 87 * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG 88 * begins with a character other then #, then Perl will only treat 89 * it as a command line if it finds the string "perl" in the first 90 * word; otherwise it's treated as the first line of code in the script. 91 * (IOW, Perl won't hand off to another interpreter via an alternate 92 * shebang sequence that might be legal Perl code.) 93 */ 94/* #define ALTERNATE_SHEBANG "#!" / **/ 95 96#include <signal.h> 97 98#ifndef SIGABRT 99# define SIGABRT SIGILL 100#endif 101#ifndef SIGILL 102# define SIGILL 6 /* blech */ 103#endif 104#define ABORT() kill(PerlProc_getpid(),SIGABRT); 105 106#define BIT_BUCKET "/dev/null" 107#define PERL_SYS_INIT_BODY(c,v) \ 108 MALLOC_CHECK_TAINT2(*c,*v) PERLIO_INIT; MALLOC_INIT 109#define dXSUB_SYS dNOOP 110#define PERL_SYS_TERM_BODY() PERLIO_TERM; MALLOC_TERM 111 112/* 113 * fwrite1() should be a routine with the same calling sequence as fwrite(), 114 * but which outputs all of the bytes requested as a single stream (unlike 115 * fwrite() itself, which on some systems outputs several distinct records 116 * if the number_of_items parameter is >1). 117 */ 118#define fwrite1 fwrite 119 120#define Stat(fname,bufptr) stat((fname),(bufptr)) 121#define Fstat(fd,bufptr) fstat((fd),(bufptr)) 122#define Fflush(fp) fflush(fp) 123#define Mkdir(path,mode) mkdir((path),(mode)) 124 125/* getenv related stuff */ 126#define my_getenv(var) getenv(var) 127/* Plan 9 prefers getenv("home") to getenv("HOME") 128#define HOME home 129 130/* For use by POSIX.xs */ 131extern int tcsendbreak(int, int); 132 133#define CONDOP_SIZE 4 /* The Plan 9 compiler cannot return quads from ?: */ 134 135#undef HAS_SYMLINK /* Plan 9 doesn't really have these. */ 136#undef HAS_LSTAT 137#undef HAS_READLINK 138 139#endif /* __PLAN9ISH_H__ */ 140