I've attached a patch I'd like to commit to config(8) for the way it handles get_srcdir. I'm asking for review since it partially reverts some changes made in revision 1.42 of usr.sbin/config/main.c and I'd like to make sure there are no issues there.
Right now config(8) calls realpath("../..", ... to find the src path to write into the kernel Makefile. I want to change this to use $PWD with the last two path components removed, assuming it's the same dir as ../.. . I want to put this in because I often build from an amd(8)-mounted src tree, and realpath produces a path using amd's special temporary mount directory /.amd_mnt/... instead of the intended /host_mounts/... type of path and it times out when accessed that way. Using the logical cwd means that the generated Makefile references /host_mounts/... and amd knows the mount is still in use when building. Comments? -Ed Index: main.c =================================================================== RCS file: /usr/cvs/src/usr.sbin/config/main.c,v retrieving revision 1.76 diff -p -u -r1.76 main.c --- main.c 17 May 2007 04:53:52 -0000 1.76 +++ main.c 18 Dec 2007 21:02:32 -0000 @@ -249,9 +249,30 @@ main(int argc, char **argv) static void get_srcdir(void) { + char *pwd; if (realpath("../..", srcdir) == NULL) errx(2, "Unable to find root of source tree"); + + if ((pwd = getenv("PWD")) != NULL && *pwd == '/' && + (pwd = strdup(pwd))) { + struct stat lg, phy; + int i; + char *p; + + /* remove last two path components */ + for (i = 0; i < 2; i++) { + if ((p = strrchr(pwd, '/')) == NULL) { + free(pwd); + return; + } + *p = '\0'; + } + if (stat(pwd, &lg) != -1 && stat(srcdir, &phy) != -1 && + lg.st_dev == phy.st_dev && lg.st_ino == phy.st_ino) + strlcpy(srcdir, pwd, MAXPATHLEN); + free(pwd); + } } static void _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"