Module Name:    src
Committed By:   christos
Date:           Thu Aug 30 12:31:26 UTC 2012

Modified Files:
        src/usr.bin/config: config.1 main.c

Log Message:
make config -x look at the booted kernel first.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/usr.bin/config/config.1
cvs rdiff -u -r1.47 -r1.48 src/usr.bin/config/main.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/config.1
diff -u src/usr.bin/config/config.1:1.10 src/usr.bin/config/config.1:1.11
--- src/usr.bin/config/config.1:1.10	Mon Aug 31 03:45:24 2009
+++ src/usr.bin/config/config.1	Thu Aug 30 08:31:25 2012
@@ -1,4 +1,4 @@
-.\"	$NetBSD: config.1,v 1.10 2009/08/31 07:45:24 wiz Exp $
+.\"	$NetBSD: config.1,v 1.11 2012/08/30 12:31:25 christos Exp $
 .\"
 .\" Copyright (c) 1980, 1991, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -71,9 +71,17 @@ flag), then extracts the embedded config
 writes it to standard output.
 If
 .Ar kernel-file
-is not given,
-.Pa /netbsd
-is used.
+is not given, and the system is not running
+.Nx
+an error is printed.
+On systems running
+.Nx
+the booted kernel is looked up using the
+.Xr sysctl 3
+.Dv machdep.booted_kernel
+variable and if that's not found,
+.Dv _PATH_UNIX
+(/netbsd) is used.
 Configuration data will be available if the given kernel was compiled
 with either
 .Va INCLUDE_CONFIG_FILE

Index: src/usr.bin/config/main.c
diff -u src/usr.bin/config/main.c:1.47 src/usr.bin/config/main.c:1.48
--- src/usr.bin/config/main.c:1.47	Sun Mar 11 22:58:55 2012
+++ src/usr.bin/config/main.c	Thu Aug 30 08:31:25 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.47 2012/03/12 02:58:55 dholland Exp $	*/
+/*	$NetBSD: main.c,v 1.48 2012/08/30 12:31:25 christos Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -60,6 +60,9 @@ COPYRIGHT("@(#) Copyright (c) 1992, 1993
 #include <sys/stat.h>
 #include <sys/param.h>
 #include <sys/mman.h>
+#ifdef __NetBSD__
+#include <sys/sysctl.h>
+#endif
 #include <paths.h>
 #include <ctype.h>
 #include <err.h>
@@ -230,12 +233,20 @@ main(int argc, char **argv)
 		errx(EXIT_FAILURE, "-L can only be used with -s and -v");
 
 	if (xflag) {
+		if (argc == 0) {
 #ifdef __NetBSD__
-		conffile = (argc == 1) ? argv[0] : _PATH_UNIX;
+			char path_unix[MAXPATHLEN];
+			size_t len = sizeof(path_unix) - 1;
+			path_unix[0] = '/';
+
+			conffile = sysctlbyname("machdep.booted_kernel",
+			    &path_unix[1], &len, NULL, 0) == -1 ? _PATH_UNIX :
+			    path_unix;
 #else
-		if (argc == 0)
 			errx(EXIT_FAILURE, "no kernel supplied");
 #endif
+		} else
+			conffile = argv[0];
 		if (!is_elf(conffile))
 			errx(EXIT_FAILURE, "%s: not a binary kernel",
 			    conffile);

Reply via email to