1 /* $Header: perl.h,v 1.0 87/12/18 13:05:38 root Exp $
4 * Revision 1.0 87/12/18 13:05:38 root
10 #define STDSTDIO /* eventually should be in config.h */
16 # define bcopy(s1,s2,l) memcpy(s2,s1,l);
17 # define bzero(s,l) memset(s,0,l);
23 #include <sys/types.h>
26 #include <sys/times.h>
28 typedef struct arg ARG;
29 typedef struct cmd CMD;
30 typedef struct formcmd FCMD;
31 typedef struct scanpat SPAT;
32 typedef struct stab STAB;
33 typedef struct stio STIO;
34 typedef struct string STR;
35 typedef struct atbl ARRAY;
36 typedef struct htbl HASH;
47 /* A string is TRUE if not "" or "0". */
48 #define True(val) (tmps = (val), (*tmps && !(*tmps == '0' && !tmps[1])))
49 EXT char *Yes INIT("1");
50 EXT char *No INIT("");
52 #define str_true(str) (Str = (str), (Str->str_pok ? True(Str->str_ptr) : (Str->str_nok ? (Str->str_nval != 0.0) : 0 )))
54 #define str_peek(str) (Str = (str), (Str->str_pok ? Str->str_ptr : (Str->str_nok ? (sprintf(buf,"num(%g)",Str->str_nval),buf) : "" )))
55 #define str_get(str) (Str = (str), (Str->str_pok ? Str->str_ptr : str_2ptr(Str)))
56 #define str_gnum(str) (Str = (str), (Str->str_nok ? Str->str_nval : str_2num(Str)))
59 #define GROWSTR(pp,lp,len) if (*(lp) < (len)) growstr(pp,lp,len)
96 char *str_append_till();
109 EXT int line INIT(0);
110 EXT int arybase INIT(0);
118 EXT struct outrec outrec;
119 EXT struct outrec toprec;
121 EXT STAB *last_in_stab INIT(Nullstab);
122 EXT STAB *defstab INIT(Nullstab);
123 EXT STAB *argvstab INIT(Nullstab);
124 EXT STAB *envstab INIT(Nullstab);
125 EXT STAB *sigstab INIT(Nullstab);
126 EXT STAB *defoutstab INIT(Nullstab);
127 EXT STAB *curoutstab INIT(Nullstab);
128 EXT STAB *argvoutstab INIT(Nullstab);
130 EXT STR *freestrroot INIT(Nullstr);
134 EXT char *bufptr INIT(buf);
136 EXT STR *linestr INIT(Nullstr);
138 EXT char record_separator INIT('\n');
139 EXT char *ofs INIT(Nullch);
140 EXT char *ors INIT(Nullch);
141 EXT char *ofmt INIT(Nullch);
142 EXT char *inplace INIT(Nullch);
144 EXT char tokenbuf[256];
145 EXT int expectterm INIT(TRUE);
146 EXT int lex_newlines INIT(FALSE);
149 /* char *str_get(); */
154 EXT struct stat statbuf;
155 EXT struct tms timesbuf;
158 EXT int debug INIT(0);
159 EXT int dlevel INIT(0);
160 EXT char debname[40];
161 EXT char debdelim[40];
169 /* runtime control stuff */
176 EXT int loop_ptr INIT(-1);
180 EXT char *goto_targ INIT(Nullch); /* cmd_exec gets strange when set */
184 struct tm *gmtime(), *localtime();
193 #define UNLINK(f) while (unlink(f) >= 0)
195 #define UNLINK unlink