| /* $Header$ |
| * |
| * Copyright (c) 1989, Larry Wall |
| * |
| * You may distribute under the terms of the GNU General Public License |
| * as specified in the README file that comes with the perl 3.0 kit. |
| * |
| * $Log$ |
| * Revision 1.2 2004/09/01 14:33:24 criswell |
| * Migrating test suite out of the source tree. |
| * |
| * Revision 1.1 2004/02/17 22:21:15 criswell |
| * Initial commit of the perl Malloc Benchmark. I've cheated a little by |
| * generating the yacc output files and committing them directly, but it was |
| * easier than disabling the Bison Voodoo that gets executed by default. |
| * |
| * Revision 4.0 91/03/20 01:03:09 lwall |
| * 4.0 baseline. |
| * |
| */ |
| |
| #define O_NULL 0 |
| #define O_RCAT 1 |
| #define O_ITEM 2 |
| #define O_SCALAR 3 |
| #define O_ITEM2 4 |
| #define O_ITEM3 5 |
| #define O_CONCAT 6 |
| #define O_REPEAT 7 |
| #define O_MATCH 8 |
| #define O_NMATCH 9 |
| #define O_SUBST 10 |
| #define O_NSUBST 11 |
| #define O_ASSIGN 12 |
| #define O_LOCAL 13 |
| #define O_AASSIGN 14 |
| #define O_SASSIGN 15 |
| #define O_CHOP 16 |
| #define O_DEFINED 17 |
| #define O_UNDEF 18 |
| #define O_STUDY 19 |
| #define O_POW 20 |
| #define O_MULTIPLY 21 |
| #define O_DIVIDE 22 |
| #define O_MODULO 23 |
| #define O_ADD 24 |
| #define O_SUBTRACT 25 |
| #define O_LEFT_SHIFT 26 |
| #define O_RIGHT_SHIFT 27 |
| #define O_LT 28 |
| #define O_GT 29 |
| #define O_LE 30 |
| #define O_GE 31 |
| #define O_EQ 32 |
| #define O_NE 33 |
| #define O_NCMP 34 |
| #define O_BIT_AND 35 |
| #define O_XOR 36 |
| #define O_BIT_OR 37 |
| #define O_AND 38 |
| #define O_OR 39 |
| #define O_COND_EXPR 40 |
| #define O_COMMA 41 |
| #define O_NEGATE 42 |
| #define O_NOT 43 |
| #define O_COMPLEMENT 44 |
| #define O_SELECT 45 |
| #define O_WRITE 46 |
| #define O_DBMOPEN 47 |
| #define O_DBMCLOSE 48 |
| #define O_OPEN 49 |
| #define O_TRANS 50 |
| #define O_NTRANS 51 |
| #define O_CLOSE 52 |
| #define O_EACH 53 |
| #define O_VALUES 54 |
| #define O_KEYS 55 |
| #define O_LARRAY 56 |
| #define O_ARRAY 57 |
| #define O_AELEM 58 |
| #define O_DELETE 59 |
| #define O_LHASH 60 |
| #define O_HASH 61 |
| #define O_HELEM 62 |
| #define O_LAELEM 63 |
| #define O_LHELEM 64 |
| #define O_LSLICE 65 |
| #define O_ASLICE 66 |
| #define O_HSLICE 67 |
| #define O_LASLICE 68 |
| #define O_LHSLICE 69 |
| #define O_SPLICE 70 |
| #define O_PUSH 71 |
| #define O_POP 72 |
| #define O_SHIFT 73 |
| #define O_UNPACK 74 |
| #define O_SPLIT 75 |
| #define O_LENGTH 76 |
| #define O_SPRINTF 77 |
| #define O_SUBSTR 78 |
| #define O_PACK 79 |
| #define O_GREP 80 |
| #define O_JOIN 81 |
| #define O_SLT 82 |
| #define O_SGT 83 |
| #define O_SLE 84 |
| #define O_SGE 85 |
| #define O_SEQ 86 |
| #define O_SNE 87 |
| #define O_SCMP 88 |
| #define O_SUBR 89 |
| #define O_DBSUBR 90 |
| #define O_CALLER 91 |
| #define O_SORT 92 |
| #define O_REVERSE 93 |
| #define O_WARN 94 |
| #define O_DIE 95 |
| #define O_PRTF 96 |
| #define O_PRINT 97 |
| #define O_CHDIR 98 |
| #define O_EXIT 99 |
| #define O_RESET 100 |
| #define O_LIST 101 |
| #define O_EOF 102 |
| #define O_GETC 103 |
| #define O_TELL 104 |
| #define O_RECV 105 |
| #define O_READ 106 |
| #define O_SYSREAD 107 |
| #define O_SYSWRITE 108 |
| #define O_SEND 109 |
| #define O_SEEK 110 |
| #define O_RETURN 111 |
| #define O_REDO 112 |
| #define O_NEXT 113 |
| #define O_LAST 114 |
| #define O_DUMP 115 |
| #define O_GOTO 116 |
| #define O_INDEX 117 |
| #define O_RINDEX 118 |
| #define O_TIME 119 |
| #define O_TMS 120 |
| #define O_LOCALTIME 121 |
| #define O_GMTIME 122 |
| #define O_TRUNCATE 123 |
| #define O_LSTAT 124 |
| #define O_STAT 125 |
| #define O_CRYPT 126 |
| #define O_ATAN2 127 |
| #define O_SIN 128 |
| #define O_COS 129 |
| #define O_RAND 130 |
| #define O_SRAND 131 |
| #define O_EXP 132 |
| #define O_LOG 133 |
| #define O_SQRT 134 |
| #define O_INT 135 |
| #define O_ORD 136 |
| #define O_ALARM 137 |
| #define O_SLEEP 138 |
| #define O_RANGE 139 |
| #define O_F_OR_R 140 |
| #define O_FLIP 141 |
| #define O_FLOP 142 |
| #define O_FORK 143 |
| #define O_WAIT 144 |
| #define O_WAITPID 145 |
| #define O_SYSTEM 146 |
| #define O_EXEC_OP 147 |
| #define O_HEX 148 |
| #define O_OCT 149 |
| #define O_CHOWN 150 |
| #define O_KILL 151 |
| #define O_UNLINK 152 |
| #define O_CHMOD 153 |
| #define O_UTIME 154 |
| #define O_UMASK 155 |
| #define O_MSGGET 156 |
| #define O_SHMGET 157 |
| #define O_SEMGET 158 |
| #define O_MSGCTL 159 |
| #define O_SHMCTL 160 |
| #define O_SEMCTL 161 |
| #define O_MSGSND 162 |
| #define O_MSGRCV 163 |
| #define O_SEMOP 164 |
| #define O_SHMREAD 165 |
| #define O_SHMWRITE 166 |
| #define O_RENAME 167 |
| #define O_LINK 168 |
| #define O_MKDIR 169 |
| #define O_RMDIR 170 |
| #define O_GETPPID 171 |
| #define O_GETPGRP 172 |
| #define O_SETPGRP 173 |
| #define O_GETPRIORITY 174 |
| #define O_SETPRIORITY 175 |
| #define O_CHROOT 176 |
| #define O_FCNTL 177 |
| #define O_IOCTL 178 |
| #define O_FLOCK 179 |
| #define O_UNSHIFT 180 |
| #define O_REQUIRE 181 |
| #define O_DOFILE 182 |
| #define O_EVAL 183 |
| #define O_FTRREAD 184 |
| #define O_FTRWRITE 185 |
| #define O_FTREXEC 186 |
| #define O_FTEREAD 187 |
| #define O_FTEWRITE 188 |
| #define O_FTEEXEC 189 |
| #define O_FTIS 190 |
| #define O_FTEOWNED 191 |
| #define O_FTROWNED 192 |
| #define O_FTZERO 193 |
| #define O_FTSIZE 194 |
| #define O_FTMTIME 195 |
| #define O_FTATIME 196 |
| #define O_FTCTIME 197 |
| #define O_FTSOCK 198 |
| #define O_FTCHR 199 |
| #define O_FTBLK 200 |
| #define O_FTFILE 201 |
| #define O_FTDIR 202 |
| #define O_FTPIPE 203 |
| #define O_FTLINK 204 |
| #define O_SYMLINK 205 |
| #define O_READLINK 206 |
| #define O_FTSUID 207 |
| #define O_FTSGID 208 |
| #define O_FTSVTX 209 |
| #define O_FTTTY 210 |
| #define O_FTTEXT 211 |
| #define O_FTBINARY 212 |
| #define O_SOCKET 213 |
| #define O_BIND 214 |
| #define O_CONNECT 215 |
| #define O_LISTEN 216 |
| #define O_ACCEPT 217 |
| #define O_GHBYNAME 218 |
| #define O_GHBYADDR 219 |
| #define O_GHOSTENT 220 |
| #define O_GNBYNAME 221 |
| #define O_GNBYADDR 222 |
| #define O_GNETENT 223 |
| #define O_GPBYNAME 224 |
| #define O_GPBYNUMBER 225 |
| #define O_GPROTOENT 226 |
| #define O_GSBYNAME 227 |
| #define O_GSBYPORT 228 |
| #define O_GSERVENT 229 |
| #define O_SHOSTENT 230 |
| #define O_SNETENT 231 |
| #define O_SPROTOENT 232 |
| #define O_SSERVENT 233 |
| #define O_EHOSTENT 234 |
| #define O_ENETENT 235 |
| #define O_EPROTOENT 236 |
| #define O_ESERVENT 237 |
| #define O_SOCKPAIR 238 |
| #define O_SHUTDOWN 239 |
| #define O_GSOCKOPT 240 |
| #define O_SSOCKOPT 241 |
| #define O_GETSOCKNAME 242 |
| #define O_GETPEERNAME 243 |
| #define O_SSELECT 244 |
| #define O_FILENO 245 |
| #define O_BINMODE 246 |
| #define O_VEC 247 |
| #define O_GPWNAM 248 |
| #define O_GPWUID 249 |
| #define O_GPWENT 250 |
| #define O_SPWENT 251 |
| #define O_EPWENT 252 |
| #define O_GGRNAM 253 |
| #define O_GGRGID 254 |
| #define O_GGRENT 255 |
| #define O_SGRENT 256 |
| #define O_EGRENT 257 |
| #define O_GETLOGIN 258 |
| #define O_OPENDIR 259 |
| #define O_READDIR 260 |
| #define O_TELLDIR 261 |
| #define O_SEEKDIR 262 |
| #define O_REWINDDIR 263 |
| #define O_CLOSEDIR 264 |
| #define O_SYSCALL 265 |
| #define O_PIPE 266 |
| #define MAXO 267 |
| |
| #ifndef DOINIT |
| extern char *opname[]; |
| #else |
| char *opname[] = { |
| "NULL", |
| "RCAT", |
| "ITEM", |
| "SCALAR", |
| "ITEM2", |
| "ITEM3", |
| "CONCAT", |
| "REPEAT", |
| "MATCH", |
| "NMATCH", |
| "SUBST", |
| "NSUBST", |
| "ASSIGN", |
| "LOCAL", |
| "AASSIGN", |
| "SASSIGN", |
| "CHOP", |
| "DEFINED", |
| "UNDEF", |
| "STUDY", |
| "POW", |
| "MULTIPLY", |
| "DIVIDE", |
| "MODULO", |
| "ADD", |
| "SUBTRACT", |
| "LEFT_SHIFT", |
| "RIGHT_SHIFT", |
| "LT", |
| "GT", |
| "LE", |
| "GE", |
| "EQ", |
| "NE", |
| "NCMP", |
| "BIT_AND", |
| "XOR", |
| "BIT_OR", |
| "AND", |
| "OR", |
| "COND_EXPR", |
| "COMMA", |
| "NEGATE", |
| "NOT", |
| "COMPLEMENT", |
| "SELECT", |
| "WRITE", |
| "DBMOPEN", |
| "DBMCLOSE", |
| "OPEN", |
| "TRANS", |
| "NTRANS", |
| "CLOSE", |
| "EACH", |
| "VALUES", |
| "KEYS", |
| "LARRAY", |
| "ARRAY", |
| "AELEM", |
| "DELETE", |
| "LHASH", |
| "HASH", |
| "HELEM", |
| "LAELEM", |
| "LHELEM", |
| "LSLICE", |
| "ASLICE", |
| "HSLICE", |
| "LASLICE", |
| "LHSLICE", |
| "SPLICE", |
| "PUSH", |
| "POP", |
| "SHIFT", |
| "UNPACK", |
| "SPLIT", |
| "LENGTH", |
| "SPRINTF", |
| "SUBSTR", |
| "PACK", |
| "GREP", |
| "JOIN", |
| "SLT", |
| "SGT", |
| "SLE", |
| "SGE", |
| "SEQ", |
| "SNE", |
| "SCMP", |
| "SUBR", |
| "DBSUBR", |
| "CALLER", |
| "SORT", |
| "REVERSE", |
| "WARN", |
| "DIE", |
| "PRINTF", |
| "PRINT", |
| "CHDIR", |
| "EXIT", |
| "RESET", |
| "LIST", |
| "EOF", |
| "GETC", |
| "TELL", |
| "RECV", |
| "READ", |
| "SYSREAD", |
| "SYSWRITE", |
| "SEND", |
| "SEEK", |
| "RETURN", |
| "REDO", |
| "NEXT", |
| "LAST", |
| "DUMP", |
| "GOTO",/* shudder */ |
| "INDEX", |
| "RINDEX", |
| "TIME", |
| "TIMES", |
| "LOCALTIME", |
| "GMTIME", |
| "TRUNCATE", |
| "LSTAT", |
| "STAT", |
| "CRYPT", |
| "ATAN2", |
| "SIN", |
| "COS", |
| "RAND", |
| "SRAND", |
| "EXP", |
| "LOG", |
| "SQRT", |
| "INT", |
| "ORD", |
| "ALARM", |
| "SLEEP", |
| "RANGE", |
| "FLIP_OR_RANGE", |
| "FLIP", |
| "FLOP", |
| "FORK", |
| "WAIT", |
| "WAITPID", |
| "SYSTEM", |
| "EXEC", |
| "HEX", |
| "OCT", |
| "CHOWN", |
| "KILL", |
| "UNLINK", |
| "CHMOD", |
| "UTIME", |
| "UMASK", |
| "MSGGET", |
| "SHMGET", |
| "SEMGET", |
| "MSGCTL", |
| "SHMCTL", |
| "SEMCTL", |
| "MSGSND", |
| "MSGRCV", |
| "SEMOP", |
| "SHMREAD", |
| "SHMWRITE", |
| "RENAME", |
| "LINK", |
| "MKDIR", |
| "RMDIR", |
| "GETPPID", |
| "GETPGRP", |
| "SETPGRP", |
| "GETPRIORITY", |
| "SETPRIORITY", |
| "CHROOT", |
| "FCNTL", |
| "SYSIOCTL", |
| "FLOCK", |
| "UNSHIFT", |
| "REQUIRE", |
| "DOFILE", |
| "EVAL", |
| "FTRREAD", |
| "FTRWRITE", |
| "FTREXEC", |
| "FTEREAD", |
| "FTEWRITE", |
| "FTEEXEC", |
| "FTIS", |
| "FTEOWNED", |
| "FTROWNED", |
| "FTZERO", |
| "FTSIZE", |
| "FTMTIME", |
| "FTATIME", |
| "FTCTIME", |
| "FTSOCK", |
| "FTCHR", |
| "FTBLK", |
| "FTFILE", |
| "FTDIR", |
| "FTPIPE", |
| "FTLINK", |
| "SYMLINK", |
| "READLINK", |
| "FTSUID", |
| "FTSGID", |
| "FTSVTX", |
| "FTTTY", |
| "FTTEXT", |
| "FTBINARY", |
| "SOCKET", |
| "BIND", |
| "CONNECT", |
| "LISTEN", |
| "ACCEPT", |
| "GHBYNAME", |
| "GHBYADDR", |
| "GHOSTENT", |
| "GNBYNAME", |
| "GNBYADDR", |
| "GNETENT", |
| "GPBYNAME", |
| "GPBYNUMBER", |
| "GPROTOENT", |
| "GSBYNAME", |
| "GSBYPORT", |
| "GSERVENT", |
| "SHOSTENT", |
| "SNETENT", |
| "SPROTOENT", |
| "SSERVENT", |
| "EHOSTENT", |
| "ENETENT", |
| "EPROTOENT", |
| "ESERVENT", |
| "SOCKPAIR", |
| "SHUTDOWN", |
| "GSOCKOPT", |
| "SSOCKOPT", |
| "GETSOCKNAME", |
| "GETPEERNAME", |
| "SSELECT", |
| "FILENO", |
| "BINMODE", |
| "VEC", |
| "GPWNAM", |
| "GPWUID", |
| "GPWENT", |
| "SPWENT", |
| "EPWENT", |
| "GGRNAM", |
| "GGRGID", |
| "GGRENT", |
| "SGRENT", |
| "EGRENT", |
| "GETLOGIN", |
| "OPENDIR", |
| "READDIR", |
| "TELLDIR", |
| "SEEKDIR", |
| "REWINDDIR", |
| "CLOSEDIR", |
| "SYSCALL", |
| "PIPE", |
| "267" |
| }; |
| #endif |
| |
| #define A_NULL 0 |
| #define A_EXPR 1 |
| #define A_CMD 2 |
| #define A_STAB 3 |
| #define A_LVAL 4 |
| #define A_SINGLE 5 |
| #define A_DOUBLE 6 |
| #define A_BACKTICK 7 |
| #define A_READ 8 |
| #define A_SPAT 9 |
| #define A_LEXPR 10 |
| #define A_ARYLEN 11 |
| #define A_ARYSTAB 12 |
| #define A_LARYLEN 13 |
| #define A_GLOB 14 |
| #define A_WORD 15 |
| #define A_INDREAD 16 |
| #define A_LARYSTAB 17 |
| #define A_STAR 18 |
| #define A_LSTAR 19 |
| #define A_WANTARRAY 20 |
| |
| #define A_MASK 31 |
| #define A_DONT 32 /* or this into type to suppress evaluation */ |
| |
| #ifndef DOINIT |
| extern char *argname[]; |
| #else |
| char *argname[] = { |
| "A_NULL", |
| "EXPR", |
| "CMD", |
| "STAB", |
| "LVAL", |
| "SINGLE", |
| "DOUBLE", |
| "BACKTICK", |
| "READ", |
| "SPAT", |
| "LEXPR", |
| "ARYLEN", |
| "ARYSTAB", |
| "LARYLEN", |
| "GLOB", |
| "WORD", |
| "INDREAD", |
| "LARYSTAB", |
| "STAR", |
| "LSTAR", |
| "WANTARRAY", |
| "21" |
| }; |
| #endif |
| |
| #ifndef DOINIT |
| extern bool hoistable[]; |
| #else |
| bool hoistable[] = |
| {0, /* A_NULL */ |
| 0, /* EXPR */ |
| 1, /* CMD */ |
| 1, /* STAB */ |
| 0, /* LVAL */ |
| 1, /* SINGLE */ |
| 0, /* DOUBLE */ |
| 0, /* BACKTICK */ |
| 0, /* READ */ |
| 0, /* SPAT */ |
| 0, /* LEXPR */ |
| 1, /* ARYLEN */ |
| 1, /* ARYSTAB */ |
| 0, /* LARYLEN */ |
| 0, /* GLOB */ |
| 1, /* WORD */ |
| 0, /* INDREAD */ |
| 0, /* LARYSTAB */ |
| 1, /* STAR */ |
| 1, /* LSTAR */ |
| 1, /* WANTARRAY */ |
| 0, /* 21 */ |
| }; |
| #endif |
| |
| union argptr { |
| ARG *arg_arg; |
| char *arg_cval; |
| STAB *arg_stab; |
| SPAT *arg_spat; |
| CMD *arg_cmd; |
| STR *arg_str; |
| HASH *arg_hash; |
| }; |
| |
| struct arg { |
| union argptr arg_ptr; |
| short arg_len; |
| unsigned short arg_type; |
| unsigned short arg_flags; |
| }; |
| |
| #define AF_ARYOK 1 /* op can handle multiple values here */ |
| #define AF_POST 2 /* post *crement this item */ |
| #define AF_PRE 4 /* pre *crement this item */ |
| #define AF_UP 8 /* increment rather than decrement */ |
| #define AF_COMMON 16 /* left and right have symbols in common */ |
| #define AF_DEPR 32 /* an older form of the construct */ |
| #define AF_LISTISH 64 /* turn into list if important */ |
| #define AF_LOCAL 128 /* list of local variables */ |
| |
| /* |
| * Most of the ARG pointers are used as pointers to arrays of ARG. When |
| * so used, the 0th element is special, and represents the operator to |
| * use on the list of arguments following. The arg_len in the 0th element |
| * gives the maximum argument number, and the arg_str is used to store |
| * the return value in a more-or-less static location. Sorry it's not |
| * re-entrant (yet), but it sure makes it efficient. The arg_type of the |
| * 0th element is an operator (O_*) rather than an argument type (A_*). |
| */ |
| |
| #define Nullarg Null(ARG*) |
| |
| #ifndef DOINIT |
| EXT unsigned short opargs[MAXO+1]; |
| #else |
| #define A(e1,e2,e3) (e1+(e2<<2)+(e3<<4)) |
| #define A5(e1,e2,e3,e4,e5) (e1+(e2<<2)+(e3<<4)+(e4<<6)+(e5<<8)) |
| unsigned short opargs[MAXO+1] = { |
| A(0,0,0), /* NULL */ |
| A(1,1,0), /* RCAT */ |
| A(1,0,0), /* ITEM */ |
| A(1,0,0), /* SCALAR */ |
| A(0,0,0), /* ITEM2 */ |
| A(0,0,0), /* ITEM3 */ |
| A(1,1,0), /* CONCAT */ |
| A(3,1,0), /* REPEAT */ |
| A(1,0,0), /* MATCH */ |
| A(1,0,0), /* NMATCH */ |
| A(1,0,0), /* SUBST */ |
| A(1,0,0), /* NSUBST */ |
| A(1,1,0), /* ASSIGN */ |
| A(1,0,0), /* LOCAL */ |
| A(3,3,0), /* AASSIGN */ |
| A(0,0,0), /* SASSIGN */ |
| A(3,0,0), /* CHOP */ |
| A(1,0,0), /* DEFINED */ |
| A(1,0,0), /* UNDEF */ |
| A(1,0,0), /* STUDY */ |
| A(1,1,0), /* POW */ |
| A(1,1,0), /* MULTIPLY */ |
| A(1,1,0), /* DIVIDE */ |
| A(1,1,0), /* MODULO */ |
| A(1,1,0), /* ADD */ |
| A(1,1,0), /* SUBTRACT */ |
| A(1,1,0), /* LEFT_SHIFT */ |
| A(1,1,0), /* RIGHT_SHIFT */ |
| A(1,1,0), /* LT */ |
| A(1,1,0), /* GT */ |
| A(1,1,0), /* LE */ |
| A(1,1,0), /* GE */ |
| A(1,1,0), /* EQ */ |
| A(1,1,0), /* NE */ |
| A(1,1,0), /* NCMP */ |
| A(1,1,0), /* BIT_AND */ |
| A(1,1,0), /* XOR */ |
| A(1,1,0), /* BIT_OR */ |
| A(1,0,0), /* AND */ |
| A(1,0,0), /* OR */ |
| A(1,0,0), /* COND_EXPR */ |
| A(1,1,0), /* COMMA */ |
| A(1,0,0), /* NEGATE */ |
| A(1,0,0), /* NOT */ |
| A(1,0,0), /* COMPLEMENT */ |
| A(1,0,0), /* SELECT */ |
| A(1,0,0), /* WRITE */ |
| A(1,1,1), /* DBMOPEN */ |
| A(1,0,0), /* DBMCLOSE */ |
| A(1,1,0), /* OPEN */ |
| A(1,0,0), /* TRANS */ |
| A(1,0,0), /* NTRANS */ |
| A(1,0,0), /* CLOSE */ |
| A(0,0,0), /* EACH */ |
| A(0,0,0), /* VALUES */ |
| A(0,0,0), /* KEYS */ |
| A(0,0,0), /* LARRAY */ |
| A(0,0,0), /* ARRAY */ |
| A(0,1,0), /* AELEM */ |
| A(0,1,0), /* DELETE */ |
| A(0,0,0), /* LHASH */ |
| A(0,0,0), /* HASH */ |
| A(0,1,0), /* HELEM */ |
| A(0,1,0), /* LAELEM */ |
| A(0,1,0), /* LHELEM */ |
| A(0,3,3), /* LSLICE */ |
| A(0,3,0), /* ASLICE */ |
| A(0,3,0), /* HSLICE */ |
| A(0,3,0), /* LASLICE */ |
| A(0,3,0), /* LHSLICE */ |
| A(0,3,1), /* SPLICE */ |
| A(0,3,0), /* PUSH */ |
| A(0,0,0), /* POP */ |
| A(0,0,0), /* SHIFT */ |
| A(1,1,0), /* UNPACK */ |
| A(1,0,1), /* SPLIT */ |
| A(1,0,0), /* LENGTH */ |
| A(3,0,0), /* SPRINTF */ |
| A(1,1,1), /* SUBSTR */ |
| A(1,3,0), /* PACK */ |
| A(0,3,0), /* GREP */ |
| A(1,3,0), /* JOIN */ |
| A(1,1,0), /* SLT */ |
| A(1,1,0), /* SGT */ |
| A(1,1,0), /* SLE */ |
| A(1,1,0), /* SGE */ |
| A(1,1,0), /* SEQ */ |
| A(1,1,0), /* SNE */ |
| A(1,1,0), /* SCMP */ |
| A(0,3,0), /* SUBR */ |
| A(0,3,0), /* DBSUBR */ |
| A(1,0,0), /* CALLER */ |
| A(1,3,0), /* SORT */ |
| A(0,3,0), /* REVERSE */ |
| A(0,3,0), /* WARN */ |
| A(0,3,0), /* DIE */ |
| A(1,3,0), /* PRINTF */ |
| A(1,3,0), /* PRINT */ |
| A(1,0,0), /* CHDIR */ |
| A(1,0,0), /* EXIT */ |
| A(1,0,0), /* RESET */ |
| A(3,0,0), /* LIST */ |
| A(1,0,0), /* EOF */ |
| A(1,0,0), /* GETC */ |
| A(1,0,0), /* TELL */ |
| A5(1,1,1,1,0), /* RECV */ |
| A(1,1,3), /* READ */ |
| A(1,1,3), /* SYSREAD */ |
| A(1,1,3), /* SYSWRITE */ |
| A(1,1,3), /* SEND */ |
| A(1,1,1), /* SEEK */ |
| A(0,3,0), /* RETURN */ |
| A(0,0,0), /* REDO */ |
| A(0,0,0), /* NEXT */ |
| A(0,0,0), /* LAST */ |
| A(0,0,0), /* DUMP */ |
| A(0,0,0), /* GOTO */ |
| A(1,1,1), /* INDEX */ |
| A(1,1,1), /* RINDEX */ |
| A(0,0,0), /* TIME */ |
| A(0,0,0), /* TIMES */ |
| A(1,0,0), /* LOCALTIME */ |
| A(1,0,0), /* GMTIME */ |
| A(1,1,0), /* TRUNCATE */ |
| A(1,0,0), /* LSTAT */ |
| A(1,0,0), /* STAT */ |
| A(1,1,0), /* CRYPT */ |
| A(1,1,0), /* ATAN2 */ |
| A(1,0,0), /* SIN */ |
| A(1,0,0), /* COS */ |
| A(1,0,0), /* RAND */ |
| A(1,0,0), /* SRAND */ |
| A(1,0,0), /* EXP */ |
| A(1,0,0), /* LOG */ |
| A(1,0,0), /* SQRT */ |
| A(1,0,0), /* INT */ |
| A(1,0,0), /* ORD */ |
| A(1,0,0), /* ALARM */ |
| A(1,0,0), /* SLEEP */ |
| A(1,1,0), /* RANGE */ |
| A(1,0,0), /* F_OR_R */ |
| A(1,0,0), /* FLIP */ |
| A(0,1,0), /* FLOP */ |
| A(0,0,0), /* FORK */ |
| A(0,0,0), /* WAIT */ |
| A(1,1,0), /* WAITPID */ |
| A(1,3,0), /* SYSTEM */ |
| A(1,3,0), /* EXEC */ |
| A(1,0,0), /* HEX */ |
| A(1,0,0), /* OCT */ |
| A(0,3,0), /* CHOWN */ |
| A(0,3,0), /* KILL */ |
| A(0,3,0), /* UNLINK */ |
| A(0,3,0), /* CHMOD */ |
| A(0,3,0), /* UTIME */ |
| A(1,0,0), /* UMASK */ |
| A(1,1,0), /* MSGGET */ |
| A(1,1,1), /* SHMGET */ |
| A(1,1,1), /* SEMGET */ |
| A(1,1,1), /* MSGCTL */ |
| A(1,1,1), /* SHMCTL */ |
| A5(1,1,1,1,0), /* SEMCTL */ |
| A(1,1,1), /* MSGSND */ |
| A5(1,1,1,1,1), /* MSGRCV */ |
| A(1,1,1), /* SEMOP */ |
| A5(1,1,1,1,0), /* SHMREAD */ |
| A5(1,1,1,1,0), /* SHMWRITE */ |
| A(1,1,0), /* RENAME */ |
| A(1,1,0), /* LINK */ |
| A(1,1,0), /* MKDIR */ |
| A(1,0,0), /* RMDIR */ |
| A(0,0,0), /* GETPPID */ |
| A(1,0,0), /* GETPGRP */ |
| A(1,1,0), /* SETPGRP */ |
| A(1,1,0), /* GETPRIORITY */ |
| A(1,1,1), /* SETPRIORITY */ |
| A(1,0,0), /* CHROOT */ |
| A(1,1,1), /* FCNTL */ |
| A(1,1,1), /* SYSIOCTL */ |
| A(1,1,0), /* FLOCK */ |
| A(0,3,0), /* UNSHIFT */ |
| A(1,0,0), /* REQUIRE */ |
| A(1,0,0), /* DOFILE */ |
| A(1,0,0), /* EVAL */ |
| A(1,0,0), /* FTRREAD */ |
| A(1,0,0), /* FTRWRITE */ |
| A(1,0,0), /* FTREXEC */ |
| A(1,0,0), /* FTEREAD */ |
| A(1,0,0), /* FTEWRITE */ |
| A(1,0,0), /* FTEEXEC */ |
| A(1,0,0), /* FTIS */ |
| A(1,0,0), /* FTEOWNED */ |
| A(1,0,0), /* FTROWNED */ |
| A(1,0,0), /* FTZERO */ |
| A(1,0,0), /* FTSIZE */ |
| A(1,0,0), /* FTMTIME */ |
| A(1,0,0), /* FTATIME */ |
| A(1,0,0), /* FTCTIME */ |
| A(1,0,0), /* FTSOCK */ |
| A(1,0,0), /* FTCHR */ |
| A(1,0,0), /* FTBLK */ |
| A(1,0,0), /* FTFILE */ |
| A(1,0,0), /* FTDIR */ |
| A(1,0,0), /* FTPIPE */ |
| A(1,0,0), /* FTLINK */ |
| A(1,1,0), /* SYMLINK */ |
| A(1,0,0), /* READLINK */ |
| A(1,0,0), /* FTSUID */ |
| A(1,0,0), /* FTSGID */ |
| A(1,0,0), /* FTSVTX */ |
| A(1,0,0), /* FTTTY */ |
| A(1,0,0), /* FTTEXT */ |
| A(1,0,0), /* FTBINARY */ |
| A5(1,1,1,1,0), /* SOCKET */ |
| A(1,1,0), /* BIND */ |
| A(1,1,0), /* CONNECT */ |
| A(1,1,0), /* LISTEN */ |
| A(1,1,0), /* ACCEPT */ |
| A(1,0,0), /* GHBYNAME */ |
| A(1,1,0), /* GHBYADDR */ |
| A(0,0,0), /* GHOSTENT */ |
| A(1,0,0), /* GNBYNAME */ |
| A(1,1,0), /* GNBYADDR */ |
| A(0,0,0), /* GNETENT */ |
| A(1,0,0), /* GPBYNAME */ |
| A(1,0,0), /* GPBYNUMBER */ |
| A(0,0,0), /* GPROTOENT */ |
| A(1,1,0), /* GSBYNAME */ |
| A(1,1,0), /* GSBYPORT */ |
| A(0,0,0), /* GSERVENT */ |
| A(1,0,0), /* SHOSTENT */ |
| A(1,0,0), /* SNETENT */ |
| A(1,0,0), /* SPROTOENT */ |
| A(1,0,0), /* SSERVENT */ |
| A(0,0,0), /* EHOSTENT */ |
| A(0,0,0), /* ENETENT */ |
| A(0,0,0), /* EPROTOENT */ |
| A(0,0,0), /* ESERVENT */ |
| A5(1,1,1,1,1), /* SOCKPAIR */ |
| A(1,1,0), /* SHUTDOWN */ |
| A(1,1,1), /* GSOCKOPT */ |
| A5(1,1,1,1,0), /* SSOCKOPT */ |
| A(1,0,0), /* GETSOCKNAME */ |
| A(1,0,0), /* GETPEERNAME */ |
| A5(1,1,1,1,0), /* SSELECT */ |
| A(1,0,0), /* FILENO */ |
| A(1,0,0), /* BINMODE */ |
| A(1,1,1), /* VEC */ |
| A(1,0,0), /* GPWNAM */ |
| A(1,0,0), /* GPWUID */ |
| A(0,0,0), /* GPWENT */ |
| A(0,0,0), /* SPWENT */ |
| A(0,0,0), /* EPWENT */ |
| A(1,0,0), /* GGRNAM */ |
| A(1,0,0), /* GGRGID */ |
| A(0,0,0), /* GGRENT */ |
| A(0,0,0), /* SGRENT */ |
| A(0,0,0), /* EGRENT */ |
| A(0,0,0), /* GETLOGIN */ |
| A(1,1,0), /* OPENDIR */ |
| A(1,0,0), /* READDIR */ |
| A(1,0,0), /* TELLDIR */ |
| A(1,1,0), /* SEEKDIR */ |
| A(1,0,0), /* REWINDDIR */ |
| A(1,0,0), /* CLOSEDIR */ |
| A(1,3,0), /* SYSCALL */ |
| A(1,1,0), /* PIPE */ |
| 0 |
| }; |
| #undef A |
| #undef A5 |
| #endif |
| |
| int do_trans(); |
| int do_split(); |
| bool do_eof(); |
| long do_tell(); |
| bool do_seek(); |
| int do_tms(); |
| int do_time(); |
| int do_stat(); |
| STR *do_push(); |
| FILE *nextargv(); |
| STR *do_fttext(); |
| int do_slice(); |