|
|
1.1 root 1: /*
2: * main.c 1.4 81/03/09
3: * Config
4: * Do system configuration for VAX/UNIX
5: * 1) Build system data structures
6: * 2) Build makefile
7: * 3) Create header files for devices
8: * Michael Toy -- Berkeley -- 1981
9: */
10:
11: #include <stdio.h>
12: #include <ctype.h>
13: #include "y.tab.h"
14: #include "config.h"
15:
16: main(argc, argv)
17: int argc;
18: char **argv;
19: {
20:
21: if (argc > 1) {
22: if (chdir("..") < 0) {
23: perror("..");
24: exit(1);
25: }
26: if (chdir(argv[1]) < 0) {
27: perror(argv[1]);
28: exit(1);
29: }
30: }
31: if (freopen(LOCAL("conf"), "r", stdin) == NULL)
32: {
33: perror(LOCAL("conf"));
34: exit(2);
35: }
36: dtab = NULL;
37: if (yyparse())
38: exit(3);
39: if (machine != MACHINE_VAX && machine != MACHINE_SUN2 &&
40: machine != MACHINE_SUN3)
41: {
42: printf("Specify machine type, e.g. ``machine vax''\n");
43: exit(1);
44: }
45: ioconf(); /* Print ioconf.c */
46: ubglue(); /* Create ubglue.s */
47: makefile(); /* build Makefile */
48: headers(); /* make a lot of .h files */
49: conf(); /* Create conf.c */
50: execlp("mk", "mk", "depend", NULL);
51: perror("make");
52: exit(1);
53: }
54:
55: /*
56: * get_word
57: * returns EOF on end of file
58: * NULL on end of line
59: * pointer to the word otherwise
60: */
61:
62: char *get_word(fp)
63: register FILE *fp;
64: {
65: static char line[80];
66: register int ch;
67: register char *cp;
68:
69: while((ch = getc(fp)) != EOF)
70: if (ch != ' ' && ch != '\t')
71: break;
72: if (ch == EOF)
73: return WEOF;
74: if (ch == '\n')
75: return NULL;
76: cp = line;
77: *cp++ = ch;
78: while((ch = getc(fp)) != EOF)
79: {
80: if (isspace(ch))
81: break;
82: *cp++ = ch;
83: }
84: *cp = '\0';
85: if (ch == EOF)
86: return WEOF;
87: ungetc(ch, fp);
88: return line;
89: }
90:
91: /*
92: * change a pathname to point to where
93: * our global data files live
94: */
95:
96: char *
97: gpath(file)
98: char *file;
99: {
100: register char *cp;
101:
102: if ((cp = malloc(strlen(file)+8+1)) == NULL) {
103: fprintf(stderr, "out of memory\n");
104: exit(1);
105: }
106: strcpy(cp, "../conf/");
107: strcat(cp, file);
108: return cp;
109: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.