|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)main.c 1.10 (Berkeley) 8/11/83"; ! 3: #endif ! 4: ! 5: #include <stdio.h> ! 6: #include <ctype.h> ! 7: #include "y.tab.h" ! 8: #include "config.h" ! 9: ! 10: /* ! 11: * Config builds a set of files for building a UNIX ! 12: * system given a description of the desired system. ! 13: */ ! 14: main(argc, argv) ! 15: int argc; ! 16: char **argv; ! 17: { ! 18: ! 19: if (argc > 1 && eq("-p", argv[1])) { ! 20: fprintf(stderr,"The -p flag is not implemented\n"); ! 21: /* ! 22: profiling++; ! 23: */ ! 24: argc--, argv++; ! 25: } ! 26: if (argc != 2) { ! 27: fprintf(stderr, "usage: config [ -p ] sysname\n"); ! 28: exit(1); ! 29: } ! 30: PREFIX = argv[1]; ! 31: if (freopen(argv[1], "r", stdin) == NULL) { ! 32: perror(argv[1]); ! 33: exit(2); ! 34: } ! 35: dtab = NULL; ! 36: confp = &conf_list; ! 37: if (yyparse()) ! 38: exit(3); ! 39: switch (machine) { ! 40: ! 41: case MACHINE_VAX: ! 42: vax_ioconf(); /* Print ioconf.c */ ! 43: ubglue(); /* Create ubglue.s */ ! 44: break; ! 45: ! 46: case MACHINE_TAHOE: ! 47: tahoe_ioconf(); /* Print ioconf.c */ ! 48: ubglue(); /* Create ubglue.s */ ! 49: break; ! 50: ! 51: case MACHINE_SUN: ! 52: sun_ioconf(); ! 53: break; ! 54: ! 55: default: ! 56: printf("Specify machine type, e.g. ``machine vax''\n"); ! 57: exit(1); ! 58: } ! 59: makefile(); /* build Makefile */ ! 60: headers(); /* make a lot of .h files */ ! 61: swapconf(); /* swap config files */ ! 62: printf("Don't forget to run \"make depend\"\n"); ! 63: } ! 64: ! 65: /* ! 66: * get_word ! 67: * returns EOF on end of file ! 68: * NULL on end of line ! 69: * pointer to the word otherwise ! 70: */ ! 71: char * ! 72: get_word(fp) ! 73: register FILE *fp; ! 74: { ! 75: static char line[80]; ! 76: register int ch; ! 77: register char *cp; ! 78: ! 79: while ((ch = getc(fp)) != EOF) ! 80: if (ch != ' ' && ch != '\t') ! 81: break; ! 82: if (ch == EOF) ! 83: return ((char *)EOF); ! 84: if (ch == '\n') ! 85: return (NULL); ! 86: cp = line; ! 87: *cp++ = ch; ! 88: while ((ch = getc(fp)) != EOF) { ! 89: if (isspace(ch)) ! 90: break; ! 91: *cp++ = ch; ! 92: } ! 93: *cp = 0; ! 94: if (ch == EOF) ! 95: return ((char *)EOF); ! 96: (void) ungetc(ch, fp); ! 97: return (line); ! 98: } ! 99: ! 100: /* ! 101: * prepend the path to a filename ! 102: */ ! 103: char * ! 104: path(file) ! 105: char *file; ! 106: { ! 107: register char *cp; ! 108: ! 109: cp = malloc((unsigned)(strlen(PREFIX)+strlen(file)+5)); ! 110: (void) strcpy(cp, "../"); ! 111: (void) strcat(cp, PREFIX); ! 112: (void) strcat(cp, "/"); ! 113: (void) strcat(cp, file); ! 114: return (cp); ! 115: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.