|
|
1.1 root 1: /*
2: * @(#)context.h 3.7 4/24/85
3: */
4:
5: /*
6: * Copyright (c) 1983 Regents of the University of California,
7: * All rights reserved. Redistribution permitted subject to
8: * the terms of the Berkeley Software License Agreement.
9: */
10:
11: #include <stdio.h>
12:
13: struct context {
14: struct context *x_link; /* nested contexts */
15: char x_type; /* tag for union */
16: union {
17: struct { /* input is a file */
18: char *X_filename; /* input file name */
19: FILE *X_fp; /* input stream */
20: short X_lineno; /* current line number */
21: char X_bol; /* at beginning of line */
22: char X_noerr; /* don't report errors */
23: struct ww *X_errwin; /* error window */
24: } x_f;
25: struct { /* input is a buffer */
26: char *X_buf; /* input buffer */
27: char *X_bufp; /* current position in buf */
28: struct value *X_arg; /* argument for alias */
29: int X_narg; /* number of arguments */
30: } x_b;
31: } x_un;
32: /* holding place for current token */
33: int x_token; /* the token */
34: struct value x_val; /* values associated with token */
35: /* parser error flags */
36: unsigned x_erred :1; /* had an error */
37: unsigned x_synerred :1; /* had syntax error */
38: unsigned x_abort :1; /* fatal error */
39: };
40: #define x_buf x_un.x_b.X_buf
41: #define x_bufp x_un.x_b.X_bufp
42: #define x_arg x_un.x_b.X_arg
43: #define x_narg x_un.x_b.X_narg
44: #define x_filename x_un.x_f.X_filename
45: #define x_fp x_un.x_f.X_fp
46: #define x_lineno x_un.x_f.X_lineno
47: #define x_bol x_un.x_f.X_bol
48: #define x_errwin x_un.x_f.X_errwin
49: #define x_noerr x_un.x_f.X_noerr
50:
51: /* x_type values, 0 is reserved */
52: #define X_FILE 1 /* input is a file */
53: #define X_BUF 2 /* input is a buffer */
54:
55: struct context cx; /* the current context */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.