V10/cmd/config/main.c

Compare this file to the similar file:
Show the results in this format:

/*
 * main.c	1.4	81/03/09
 * Config
 *	Do system configuration for VAX/UNIX
 *		1) Build system data structures
 *		2) Build makefile
 *		3) Create header files for devices
 *	Michael Toy -- Berkeley -- 1981
 */

#include <stdio.h>
#include <ctype.h>
#include "y.tab.h"
#include "config.h"

main(argc, argv)
int argc;
char **argv;
{

    if (argc > 1) {
	if (chdir("..") < 0) {
	    perror("..");
	    exit(1);
	}
	if (chdir(argv[1]) < 0) {
	    perror(argv[1]);
	    exit(1);
	}
    }
    if (freopen(LOCAL("conf"), "r", stdin) == NULL)
    {
	perror(LOCAL("conf"));
	exit(2);
    }
    dtab = NULL;
    if (yyparse())
	exit(3);
    ioconf();			/* Print ioconf.c */
    ubglue();			/* Create ubglue.s */
    makefile();			/* build Makefile */
    headers();			/* make a lot of .h files */
    conf();			/* Create conf.c */
    execlp("make", "make", "-s", "depend", NULL);
    perror("make");
    exit(1);
}

/*
 * get_word
 *	returns EOF on end of file
 *	NULL on end of line
 *	pointer to the word otherwise
 */

char *get_word(fp)
register FILE *fp;
{
    static char line[80];
    register int ch;
    register char *cp;

    while((ch = getc(fp)) != EOF)
	if (ch != ' ' && ch != '\t')
	    break;
    if (ch == EOF)
	return WEOF;
    if (ch == '\n')
	return NULL;
    cp = line;
    *cp++ = ch;
    while((ch = getc(fp)) != EOF)
    {
	if (isspace(ch))
	    break;
	*cp++ = ch;
    }
    *cp = '\0';
    if (ch == EOF)
	return WEOF;
    ungetc(ch, fp);
    return line;
}

/*
 * change a pathname to point to where
 * our global data files live
 */

char *
gpath(file)
char *file;
{
    register char *cp;

    if ((cp = malloc(strlen(file)+8+1)) == NULL) {
	fprintf(stderr, "out of memory\n");
	exit(1);
    }
    strcpy(cp, "../conf/");
    strcat(cp, file);
    return cp;
}