2013/10/28 Marc Espie <es...@nerim.net>: > Theo says "no need for reconfig, "make config" will do just fine. > > okays ? > > > Index: config.h > =================================================================== > RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/config.h,v > retrieving revision 1.25 > diff -u -p -r1.25 config.h > --- config.h 5 Dec 2012 23:20:26 -0000 1.25 > +++ config.h 28 Oct 2013 07:44:56 -0000 > @@ -339,6 +339,10 @@ void defoption(const char *name); > int devbase_has_instances(struct devbase *, int); > int deva_has_instances(struct deva *, int); > void setupdirs(void); > +int pflag; > +char *sflag; > +char *bflag; > +char *startdir; > > /* mkheaders.c */ > int mkheaders(void); > Index: main.c > =================================================================== > RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/main.c,v > retrieving revision 1.44 > diff -u -p -r1.44 main.c > --- main.c 22 Jun 2012 22:02:29 -0000 1.44 > +++ main.c 28 Oct 2013 07:47:13 -0000 > @@ -93,15 +93,24 @@ usage(void) > exit(1); > } > > +int pflag = 0; > +char *sflag = NULL; > +char *bflag = NULL; > +char *startdir; > + > int > main(int argc, char *argv[]) > { > char *p; > const char *last_component; > char *outfile = NULL; > - int pflag, ch, eflag, uflag, fflag; > + int ch, eflag, uflag, fflag; > + char dirbuffer[PATH_MAX]; > > pflag = eflag = uflag = fflag = 0; > + startdir = getcwd(dirbuffer, sizeof dirbuffer); > + if (startdir == NULL) > + warn("Can't getcwd, no make reconfig");
"make config" here, too. > while ((ch = getopt(argc, argv, "egpfb:s:o:u")) != -1) { > switch (ch) { > > @@ -148,10 +157,12 @@ main(int argc, char *argv[]) > break; > > case 'b': > + bflag = optarg; > builddir = optarg; > break; > > case 's': > + sflag = optarg; > srcdir = optarg; > break; > > Index: mkmakefile.c > =================================================================== > RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/mkmakefile.c,v > retrieving revision 1.37 > diff -u -p -r1.37 mkmakefile.c > --- mkmakefile.c 17 Sep 2012 17:36:13 -0000 1.37 > +++ mkmakefile.c 28 Oct 2013 17:57:38 -0000 > @@ -60,6 +60,7 @@ > static const char *srcpath(struct files *); > > static int emitdefs(FILE *); > +static int emitreconfig(FILE *); > static int emitfiles(FILE *, int); > > static int emitobjs(FILE *); > @@ -120,6 +121,10 @@ mkmakefile(void) > if ((*fn)(ofp)) > goto wrerror; > } > + if (startdir != NULL) { > + if (emitreconfig(ofp) != 0) > + goto wrerror; > + } > if (ferror(ifp)) { > (void)fprintf(stderr, > "config: error reading %s (at line %d): %s\n", > @@ -271,6 +276,33 @@ emitdefs(FILE *fp) > for (nv = mkoptions; nv != NULL; nv = nv->nv_next) > if (fprintf(fp, "%s=%s\n", nv->nv_name, nv->nv_str) < 0) > return (1); > + return (0); > +} > + > +static int > +emitreconfig(FILE *fp) > +{ > + if (fputs("\n" > + ".PHONY: config\n" > + "config:\n", fp) < 0) > + return (1); > + if (fprintf(fp, "\tcd %s && config ", startdir) < 0) > + return (1); > + if (pflag) { > + if (fputs("-p ", fp) < 0) > + return (1); > + } > + if (sflag) { > + if (fprintf(fp, "-s %s ", sflag) < 0) > + return (1); > + } > + if (bflag) { > + if (fprintf(fp, "-b %s ", bflag) < 0) > + return (1); > + } > + /* other options */ > + if (fprintf(fp, "%s\n", conffile) < 0) > + return (1); > return (0); > } Reads and runs fine here on i386. Handy, thanks. -- WBR, Vadim Zhukov