Annotation of 43BSD/etc/config/main.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.