|
|
1.1 root 1: # include "monitor.h"
2: # include <ingres.h>
3: # include <aux.h>
4: # include <sccs.h>
5:
6: SCCSID(@(#)include.c 8.1 12/31/84)
7:
8:
9:
10: /*
11: ** INCLUDE FILE
12: **
13: ** A file name, which must follow the \i, is read and inserted
14: ** into the text stream at this location. It may include all of
15: ** the standard control functions. Includes may be nested.
16: **
17: ** If the parameter is 0, the file name is taken from the input;
18: ** otherwise it is taken directly from the parameter. In this
19: ** mode, errors are not printed.
20: **
21: ** Prompts are turned off during the include.
22: */
23:
24: include(filename)
25: char *filename;
26: {
27: int savendf;
28: FILE *saveinp;
29: register char *f;
30: register FILE *b;
31: extern char *getfilenm();
32:
33: f = filename;
34: if (f == 0)
35: f = getfilenm();
36: if (sequal(f, "-"))
37: {
38: /* read keyboard */
39: b = stdin;
40: }
41: else if (*f == 0)
42: {
43: /* back up one level (EOF on next read) */
44: GiveEof = TRUE;
45: return;
46: }
47: else
48: {
49: /* read file */
50: if ((b = fopen(f, "r")) == NULL)
51: {
52: if (filename == 0)
53: printf("Cannot open \"%s\"\n", f);
54: return;
55: }
56: }
57:
58: /* check for too deep */
59: if (Idepth >= 5)
60: {
61: printf("Include nested too deep\n");
62: if (b)
63: fclose(b);
64: return;
65: }
66: Idepth++;
67:
68: /* get input from alternate file */
69: savendf = Nodayfile;
70: if (b == stdin)
71: {
72: Nodayfile = Userdflag;
73: prompt("<<input>>");
74: }
75: else
76: Nodayfile = -1;
77: saveinp = Input;
78: Input = b;
79: monitor(TRUE);
80:
81: /* done -- restore old file */
82: Input = saveinp;
83: Nodayfile = savendf;
84: Idepth--;
85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.