Module Name:    src
Committed By:   uebayasi
Date:           Wed Sep  2 05:09:25 UTC 2015

Modified Files:
        src/usr.bin/config: defs.h files.c main.c mkdevsw.c mkheaders.c
            mkioconf.c mkswap.c

Log Message:
In `-S' mode, generate *.c files under conf/ subdirectory.  Register generated
.c files to the `files' list internally.


To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 src/usr.bin/config/defs.h
cvs rdiff -u -r1.26 -r1.27 src/usr.bin/config/files.c
cvs rdiff -u -r1.84 -r1.85 src/usr.bin/config/main.c
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/config/mkdevsw.c
cvs rdiff -u -r1.27 -r1.28 src/usr.bin/config/mkheaders.c
cvs rdiff -u -r1.30 -r1.31 src/usr.bin/config/mkioconf.c
cvs rdiff -u -r1.8 -r1.9 src/usr.bin/config/mkswap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/config/defs.h
diff -u src/usr.bin/config/defs.h:1.83 src/usr.bin/config/defs.h:1.84
--- src/usr.bin/config/defs.h:1.83	Tue Sep  1 16:01:23 2015
+++ src/usr.bin/config/defs.h	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: defs.h,v 1.83 2015/09/01 16:01:23 uebayasi Exp $	*/
+/*	$NetBSD: defs.h,v 1.84 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -433,6 +433,8 @@ struct	nvlist *machinesubarches;
 const char *ioconfname;		/* ioconf name, mutually exclusive to machine */
 const char *srcdir;		/* path to source directory (rel. to build) */
 const char *builddir;		/* path to build directory */
+int	builddirfd;		/* dir fd of builddir */
+int	buildconfdirfd;		/* dir fd of builddir/conf */
 const char *defbuilddir;	/* default build directory */
 const char *ident;		/* kernel "ident"ification string */
 int	errors;			/* counts calls to error() */

Index: src/usr.bin/config/files.c
diff -u src/usr.bin/config/files.c:1.26 src/usr.bin/config/files.c:1.27
--- src/usr.bin/config/files.c:1.26	Tue Sep  1 16:01:23 2015
+++ src/usr.bin/config/files.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: files.c,v 1.26 2015/09/01 16:01:23 uebayasi Exp $	*/
+/*	$NetBSD: files.c,v 1.27 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: files.c,v 1.26 2015/09/01 16:01:23 uebayasi Exp $");
+__RCSID("$NetBSD: files.c,v 1.27 2015/09/02 05:09:25 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <errno.h>
@@ -278,13 +278,15 @@ fixfiles(void)
  		struct config *cf;
  		char swapname[100];
 
-		addfile("devsw.c", NULL, 0, NULL);
-		addfile("ioconf.c", NULL, 0, NULL);
+		buildprefix_push("conf");
+		addfile("conf/devsw.c", NULL, 0, NULL);
+		addfile("conf/ioconf.c", NULL, 0, NULL);
  		TAILQ_FOREACH(cf, &allcf, cf_next) {
- 			(void)snprintf(swapname, sizeof(swapname), "swap%s.c",
+ 			(void)snprintf(swapname, sizeof(swapname), "conf/swap%s.c",
  			    cf->cf_name);
  			addfile(intern(swapname), NULL, 0, NULL);
  		}
+		buildprefix_pop();
 	}
 
 	err = 0;

Index: src/usr.bin/config/main.c
diff -u src/usr.bin/config/main.c:1.84 src/usr.bin/config/main.c:1.85
--- src/usr.bin/config/main.c:1.84	Tue Sep  1 16:01:23 2015
+++ src/usr.bin/config/main.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.84 2015/09/01 16:01:23 uebayasi Exp $	*/
+/*	$NetBSD: main.c,v 1.85 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: main.c,v 1.84 2015/09/01 16:01:23 uebayasi Exp $");
+__RCSID("$NetBSD: main.c,v 1.85 2015/09/02 05:09:25 uebayasi Exp $");
 
 #ifndef MAKE_BOOTSTRAP
 #include <sys/cdefs.h>
@@ -100,6 +100,8 @@ extern int yydebug;
 #endif
 int	dflag;
 
+static const char *buildconfdir = ".";
+
 static struct dlhash *obsopttab;
 static struct hashtab *mkopttab;
 static struct nvlist **nextopt;
@@ -522,11 +524,15 @@ main(int argc, char **argv)
 	/*
 	 * Ready to go.  Build all the various files.
 	 */
-	if (mksubdirs() || mksymlinks() || mkmakefile() || mkheaders() || mkswap() ||
+	if ((Sflag && mksubdirs()) || mksymlinks() || mkmakefile() || mkheaders() || mkswap() ||
 	    mkioconf() || (do_devsw ? mkdevsw() : 0) || mkident() || errors)
 		stop();
 	(void)printf("Build directory is %s\n", builddir);
 	(void)printf("Don't forget to run \"make depend\"\n");
+
+	close(buildconfdirfd);
+	close(builddirfd);
+
 	return 0;
 }
 
@@ -650,9 +656,6 @@ mksubdirs(void)
 	const char *prefix, *sep;
 	char buf[MAXPATHLEN];
 
-	if (!Sflag)
-		return 0;
-
 	TAILQ_FOREACH(fi, &allfiles, fi_next) {
 		if ((fi->fi_flags & FI_SEL) == 0)
 			continue;
@@ -672,6 +675,8 @@ mksubdirs(void)
 		mksubdir(buf);
 	}
 
+	buildconfdir = "conf";
+
 	return 0;
 }
 
@@ -689,6 +694,9 @@ mksymlinks(void)
 
 	p = buf;
 
+	if ((buildconfdirfd = open(buildconfdir, O_RDONLY)) == -1)
+		errx(EXIT_FAILURE, "cannot opens %s", buildconfdir);
+
 	snprintf(buf, sizeof(buf), "%s/arch/%s/include", srcdir, machine);
 	ret = recreate(p, "machine");
 	ret = recreate(p, machine);
@@ -1464,6 +1472,8 @@ setupdirs(void)
 			errx(EXIT_FAILURE, "cannot create %s", builddir);
 	} else if (!S_ISDIR(st.st_mode))
 		errx(EXIT_FAILURE, "%s is not a directory", builddir);
+	if ((builddirfd = open(builddir, O_RDONLY)) == -1)
+		errx(EXIT_FAILURE, "cannot opens %s", builddir);
 	if (chdir(builddir) == -1)
 		err(EXIT_FAILURE, "cannot change to %s", builddir);
 	if (stat(srcdir, &st) == -1)

Index: src/usr.bin/config/mkdevsw.c
diff -u src/usr.bin/config/mkdevsw.c:1.12 src/usr.bin/config/mkdevsw.c:1.13
--- src/usr.bin/config/mkdevsw.c:1.12	Mon Nov 10 21:13:04 2014
+++ src/usr.bin/config/mkdevsw.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mkdevsw.c,v 1.12 2014/11/10 21:13:04 christos Exp $	*/
+/*	$NetBSD: mkdevsw.c,v 1.13 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkdevsw.c,v 1.12 2014/11/10 21:13:04 christos Exp $");
+__RCSID("$NetBSD: mkdevsw.c,v 1.13 2015/09/02 05:09:25 uebayasi Exp $");
 
 #include <stdio.h>
 #include <string.h>
@@ -53,9 +53,10 @@ mkdevsw(void)
 {
 	FILE *fp;
 
+	fchdir(buildconfdirfd);
 	if ((fp = fopen("devsw.c.tmp", "w")) == NULL) {
 		warn("cannot create devsw.c");
-		return (1);
+		goto err;
 	}
 
 	emitheader(fp);
@@ -67,17 +68,21 @@ mkdevsw(void)
 	if (ferror(fp)) {
 		warn("error writing devsw.c");
 		fclose(fp);
-		return 1;
+		goto err;
 	}
 
 	(void)fclose(fp);
 
 	if (moveifchanged("devsw.c.tmp", "devsw.c") != 0) {
 		warn("error renaming devsw.c");
-		return (1);
+		goto err;
 	}
-
+	fchdir(builddirfd);
 	return (0);
+
+err:
+	fchdir(builddirfd);
+	return (1);
 }
 
 static void

Index: src/usr.bin/config/mkheaders.c
diff -u src/usr.bin/config/mkheaders.c:1.27 src/usr.bin/config/mkheaders.c:1.28
--- src/usr.bin/config/mkheaders.c:1.27	Thu Aug 20 09:44:24 2015
+++ src/usr.bin/config/mkheaders.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mkheaders.c,v 1.27 2015/08/20 09:44:24 christos Exp $	*/
+/*	$NetBSD: mkheaders.c,v 1.28 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkheaders.c,v 1.27 2015/08/20 09:44:24 christos Exp $");
+__RCSID("$NetBSD: mkheaders.c,v 1.28 2015/09/02 05:09:25 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <ctype.h>
@@ -392,6 +392,7 @@ emitioconfh(void)
 	struct devi *i;
 
 	tfname = "tmp_ioconf.h";
+	fchdir(buildconfdirfd);
 	if ((tfp = fopen(tfname, "w")) == NULL)
 		return (herr("open", tfname, NULL));
 
@@ -415,7 +416,11 @@ emitioconfh(void)
 	if (fclose(tfp) == EOF)
 		return (herr("clos", tfname, NULL));
 
-	return (moveifchanged(tfname, "ioconf.h"));
+	if (moveifchanged(tfname, "ioconf.h") != 0)
+		return (herr("mvif", tfname, NULL));
+
+	fchdir(builddirfd);
+	return 0;
 }
 
 /*
@@ -528,6 +533,7 @@ herr(const char *what, const char *fname
 	warn("error %sing %s", what, fname);
 	if (fp)
 		(void)fclose(fp);
+	fchdir(builddirfd);
 	return (1);
 }
 

Index: src/usr.bin/config/mkioconf.c
diff -u src/usr.bin/config/mkioconf.c:1.30 src/usr.bin/config/mkioconf.c:1.31
--- src/usr.bin/config/mkioconf.c:1.30	Fri Aug 28 03:55:15 2015
+++ src/usr.bin/config/mkioconf.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mkioconf.c,v 1.30 2015/08/28 03:55:15 uebayasi Exp $	*/
+/*	$NetBSD: mkioconf.c,v 1.31 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkioconf.c,v 1.30 2015/08/28 03:55:15 uebayasi Exp $");
+__RCSID("$NetBSD: mkioconf.c,v 1.31 2015/09/02 05:09:25 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <err.h>
@@ -87,9 +87,10 @@ mkioconf(void)
 	FILE *fp;
 
 	qsort(packed, npacked, sizeof *packed, cforder);
+	fchdir(buildconfdirfd);
 	if ((fp = fopen("ioconf.c.tmp", "w")) == NULL) {
 		warn("cannot write ioconf.c");
-		return (1);
+		goto err;
 	}
 
 	fprintf(fp, "#include \"ioconf.h\"\n");
@@ -116,15 +117,20 @@ mkioconf(void)
 #if 0
 		(void)unlink("ioconf.c.tmp");
 #endif
-		return (1);
+		goto err;
 	}
 
 	(void)fclose(fp);
 	if (moveifchanged("ioconf.c.tmp", "ioconf.c") != 0) {
 		warn("error renaming ioconf.c");
-		return (1);
+		goto err;
 	}
+	fchdir(builddirfd);
 	return (0);
+
+err:
+	fchdir(builddirfd);
+	return (1);
 }
 
 static int

Index: src/usr.bin/config/mkswap.c
diff -u src/usr.bin/config/mkswap.c:1.8 src/usr.bin/config/mkswap.c:1.9
--- src/usr.bin/config/mkswap.c:1.8	Wed Oct 29 17:14:50 2014
+++ src/usr.bin/config/mkswap.c	Wed Sep  2 05:09:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mkswap.c,v 1.8 2014/10/29 17:14:50 christos Exp $	*/
+/*	$NetBSD: mkswap.c,v 1.9 2015/09/02 05:09:25 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkswap.c,v 1.8 2014/10/29 17:14:50 christos Exp $");
+__RCSID("$NetBSD: mkswap.c,v 1.9 2015/09/02 05:09:25 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <errno.h>
@@ -97,9 +97,10 @@ mkoneswap(struct config *cf)
 
 	(void)snprintf(fname, sizeof(fname), "swap%s.c", cf->cf_name);
 	(void)snprintf(tname, sizeof(tname), "swap%s.c.tmp", cf->cf_name);
+	fchdir(buildconfdirfd);
 	if ((fp = fopen(tname, "w")) == NULL) {
 		warn("cannot open %s", fname);
-		return (1);
+		goto err;
 	}
 
 	autogen_comment(fp, fname);
@@ -149,8 +150,9 @@ mkoneswap(struct config *cf)
 	}
 	if (moveifchanged(tname, fname) != 0) {
 		warn("error renaming %s", fname);
-		return (1);
+		goto err;
 	}
+	fchdir(builddirfd);
 	return (0);
 
  wrerror:
@@ -160,5 +162,7 @@ mkoneswap(struct config *cf)
 #if 0
 	(void)unlink(fname);
 #endif
+ err:
+	fchdir(builddirfd);
 	return (1);
 }

Reply via email to