1 /* $Header: perl.h,v 1.0.1.4 88/01/30 08:54:00 root Exp $
4 * Revision 1.0.1.4 88/01/30 08:54:00 root
5 * patch9: changed #define YYDEBUG; to #define YYDEBUG 1
7 * Revision 1.0.1.3 88/01/28 10:24:17 root
8 * patch8: added eval operator.
10 * Revision 1.0.1.2 88/01/24 03:53:47 root
11 * patch 2: hid str_peek() in #ifdef DEBUGGING.
13 * Revision 1.0.1.1 88/01/21 21:29:23 root
14 * No longer defines STDSTDIO--gets it from config.h now.
16 * Revision 1.0 87/12/18 13:05:38 root
27 # define bcopy(s1,s2,l) memcpy(s2,s1,l);
28 # define bzero(s,l) memset(s,0,l);
34 #include <sys/types.h>
43 #include <sys/times.h>
45 typedef struct arg ARG;
46 typedef struct cmd CMD;
47 typedef struct formcmd FCMD;
48 typedef struct scanpat SPAT;
49 typedef struct stab STAB;
50 typedef struct stio STIO;
51 typedef struct string STR;
52 typedef struct atbl ARRAY;
53 typedef struct htbl HASH;
70 /* A string is TRUE if not "" or "0". */
71 #define True(val) (tmps = (val), (*tmps && !(*tmps == '0' && !tmps[1])))
72 EXT char *Yes INIT("1");
73 EXT char *No INIT("");
75 #define str_true(str) (Str = (str), (Str->str_pok ? True(Str->str_ptr) : (Str->str_nok ? (Str->str_nval != 0.0) : 0 )))
78 #define str_peek(str) (Str = (str), (Str->str_pok ? Str->str_ptr : (Str->str_nok ? (sprintf(buf,"num(%g)",Str->str_nval),buf) : "" )))
81 #define str_get(str) (Str = (str), (Str->str_pok ? Str->str_ptr : str_2ptr(Str)))
82 #define str_gnum(str) (Str = (str), (Str->str_nok ? Str->str_nval : str_2num(Str)))
85 #define GROWSTR(pp,lp,len) if (*(lp) < (len)) growstr(pp,lp,len)
112 STR *eval(); /* this evaluates expressions */
113 STR *do_eval(); /* this evaluates eval operator */
123 char *str_append_till();
136 EXT int line INIT(0);
137 EXT int arybase INIT(0);
145 EXT struct outrec outrec;
146 EXT struct outrec toprec;
148 EXT STAB *last_in_stab INIT(Nullstab);
149 EXT STAB *defstab INIT(Nullstab);
150 EXT STAB *argvstab INIT(Nullstab);
151 EXT STAB *envstab INIT(Nullstab);
152 EXT STAB *sigstab INIT(Nullstab);
153 EXT STAB *defoutstab INIT(Nullstab);
154 EXT STAB *curoutstab INIT(Nullstab);
155 EXT STAB *argvoutstab INIT(Nullstab);
157 EXT STR *freestrroot INIT(Nullstr);
161 EXT char *bufptr INIT(buf);
163 EXT STR *linestr INIT(Nullstr);
165 EXT char record_separator INIT('\n');
166 EXT char *ofs INIT(Nullch);
167 EXT char *ors INIT(Nullch);
168 EXT char *ofmt INIT(Nullch);
169 EXT char *inplace INIT(Nullch);
171 EXT char tokenbuf[256];
172 EXT int expectterm INIT(TRUE);
173 EXT int lex_newlines INIT(FALSE);
174 EXT int in_eval INIT(FALSE);
177 /* char *str_get(); */
182 EXT struct stat statbuf;
183 EXT struct tms timesbuf;
186 EXT int debug INIT(0);
187 EXT int dlevel INIT(0);
188 EXT char debname[40];
189 EXT char debdelim[40];
197 /* runtime control stuff */
204 EXT int loop_ptr INIT(-1);
207 EXT jmp_buf eval_env;
209 EXT char *goto_targ INIT(Nullch); /* cmd_exec gets strange when set */
213 struct tm *gmtime(), *localtime();
216 #define UNLINK(f) while (unlink(f) >= 0)
218 #define UNLINK unlink