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: }