perl 1.0 patch 7: use of included malloc.c should be optional
[p5sagit/p5-mst-13.2.git] / perl.h
CommitLineData
135863df 1/* $Header: perl.h,v 1.0.1.2 88/01/24 03:53:47 root Exp $
8d063cd8 2 *
3 * $Log: perl.h,v $
135863df 4 * Revision 1.0.1.2 88/01/24 03:53:47 root
5 * patch 2: hid str_peek() in #ifdef DEBUGGING.
6 *
36ce8bec 7 * Revision 1.0.1.1 88/01/21 21:29:23 root
8 * No longer defines STDSTDIO--gets it from config.h now.
9 *
8d063cd8 10 * Revision 1.0 87/12/18 13:05:38 root
11 * Initial revision
12 *
13 */
14
15#define DEBUGGING
8d063cd8 16
17#define VOIDUSED 1
18#include "config.h"
19
20#ifndef BCOPY
21# define bcopy(s1,s2,l) memcpy(s2,s1,l);
22# define bzero(s,l) memset(s,0,l);
23#endif
24
25#include <stdio.h>
26#include <ctype.h>
27#include <setjmp.h>
28#include <sys/types.h>
29#include <sys/stat.h>
135863df 30
31#ifdef TMINSYS
32#include <sys/time.h>
33#else
8d063cd8 34#include <time.h>
135863df 35#endif
36
8d063cd8 37#include <sys/times.h>
38
39typedef struct arg ARG;
40typedef struct cmd CMD;
41typedef struct formcmd FCMD;
42typedef struct scanpat SPAT;
43typedef struct stab STAB;
44typedef struct stio STIO;
45typedef struct string STR;
46typedef struct atbl ARRAY;
47typedef struct htbl HASH;
48
49#include "str.h"
50#include "form.h"
51#include "stab.h"
52#include "spat.h"
53#include "arg.h"
54#include "cmd.h"
55#include "array.h"
56#include "hash.h"
57
135863df 58#ifdef CHARSPRINTF
59 char *sprintf();
60#else
61 int sprintf();
62#endif
63
8d063cd8 64/* A string is TRUE if not "" or "0". */
65#define True(val) (tmps = (val), (*tmps && !(*tmps == '0' && !tmps[1])))
66EXT char *Yes INIT("1");
67EXT char *No INIT("");
68
69#define str_true(str) (Str = (str), (Str->str_pok ? True(Str->str_ptr) : (Str->str_nok ? (Str->str_nval != 0.0) : 0 )))
70
135863df 71#ifdef DEBUGGING
8d063cd8 72#define str_peek(str) (Str = (str), (Str->str_pok ? Str->str_ptr : (Str->str_nok ? (sprintf(buf,"num(%g)",Str->str_nval),buf) : "" )))
135863df 73#endif
74
8d063cd8 75#define str_get(str) (Str = (str), (Str->str_pok ? Str->str_ptr : str_2ptr(Str)))
76#define str_gnum(str) (Str = (str), (Str->str_nok ? Str->str_nval : str_2num(Str)))
77EXT STR *Str;
78
79#define GROWSTR(pp,lp,len) if (*(lp) < (len)) growstr(pp,lp,len)
80
81CMD *add_label();
82CMD *block_head();
83CMD *append_line();
84CMD *make_acmd();
85CMD *make_ccmd();
86CMD *invert();
87CMD *addcond();
88CMD *addloop();
89CMD *wopt();
90
91SPAT *stab_to_spat();
92
93STAB *stabent();
94
95ARG *stab_to_arg();
96ARG *op_new();
97ARG *make_op();
98ARG *make_lval();
99ARG *make_match();
100ARG *make_split();
101ARG *flipflip();
102
103STR *arg_to_str();
104STR *str_new();
105STR *stab_str();
106STR *eval();
107
108FCMD *load_format();
109
110char *scanpat();
111char *scansubst();
112char *scantrans();
113char *scanstr();
114char *scanreg();
115char *reg_get();
116char *str_append_till();
117char *str_gets();
118
119bool do_match();
120bool do_open();
121bool do_close();
122bool do_print();
123
124int do_subst();
125
126void str_free();
127void freearg();
128
129EXT int line INIT(0);
130EXT int arybase INIT(0);
131
132struct outrec {
133 int o_lines;
134 char *o_str;
135 int o_len;
136};
137
138EXT struct outrec outrec;
139EXT struct outrec toprec;
140
141EXT STAB *last_in_stab INIT(Nullstab);
142EXT STAB *defstab INIT(Nullstab);
143EXT STAB *argvstab INIT(Nullstab);
144EXT STAB *envstab INIT(Nullstab);
145EXT STAB *sigstab INIT(Nullstab);
146EXT STAB *defoutstab INIT(Nullstab);
147EXT STAB *curoutstab INIT(Nullstab);
148EXT STAB *argvoutstab INIT(Nullstab);
149
150EXT STR *freestrroot INIT(Nullstr);
151
152EXT FILE *rsfp;
153EXT char buf[1024];
154EXT char *bufptr INIT(buf);
155
156EXT STR *linestr INIT(Nullstr);
157
158EXT char record_separator INIT('\n');
159EXT char *ofs INIT(Nullch);
160EXT char *ors INIT(Nullch);
161EXT char *ofmt INIT(Nullch);
162EXT char *inplace INIT(Nullch);
163
164EXT char tokenbuf[256];
165EXT int expectterm INIT(TRUE);
166EXT int lex_newlines INIT(FALSE);
167
168FILE *popen();
169/* char *str_get(); */
170STR *interp();
171void free_arg();
172STIO *stio_new();
173
174EXT struct stat statbuf;
175EXT struct tms timesbuf;
176
177#ifdef DEBUGGING
178EXT int debug INIT(0);
179EXT int dlevel INIT(0);
180EXT char debname[40];
181EXT char debdelim[40];
182#define YYDEBUG;
183extern int yydebug;
184#endif
185
186EXT STR str_no;
187EXT STR str_yes;
188
189/* runtime control stuff */
190
191EXT struct loop {
192 char *loop_label;
193 jmp_buf loop_env;
194} loop_stack[32];
195
196EXT int loop_ptr INIT(-1);
197
198EXT jmp_buf top_env;
199
200EXT char *goto_targ INIT(Nullch); /* cmd_exec gets strange when set */
201
202double atof();
203long time();
204struct tm *gmtime(), *localtime();
205
8d063cd8 206#ifdef EUNICE
207#define UNLINK(f) while (unlink(f) >= 0)
208#else
209#define UNLINK unlink
210#endif