Subject: Re: Allow config extract embedded configuration files
To: Frederick Bruckman <fredb@immanent.net>
From: Greywolf <greywolf@starwolf.com>
List: tech-userlevel
Date: 04/14/2003 10:46:41
Thus spake Frederick Bruckman ("FB> ") and Ross Patterson ("RP> ")
sometime Today...

FB> Clearly, we need something like (config -x). Otherwise, what's the point
FB> of embedding the file? I'd find it more useful if it could recover the
FB> original file, to update it for newer sources or to tweak it, than to
FB> configure with the live kernel directly, though.

RP> ... somebody has a string starting "_CFG_" that isn't config data, etc.),

Now that's just asking for trouble in the first place.

RP> .... although it doesn't help in the not-running case.
RP>
RP> I know Linux examples often aren't well-regarded, but in this case it
RP> looks like they've got a good one to offer.  Perhaps NetBSD should have
RP> a /kern/config that can just be read to get the current configuration?

FB> "/kern" isn't well-regarded either, so it would probably be OK. ;-)

Or you can do what I did and just write a SLSS to handle it as described
in the man page...
[note: I probably spent too much time writing this, but if anyone else
finds it useful, have at.]

-=-=-
#! /bin/sh -
#
# xkconf - extract kernel config.
# usage: kxconf [ kernel [ outfile ] ]
####

kver=`uname -v | awk -F/ '{print $NF}'`;

kernel=${1:-/netbsd};
output=${2:-${kver}-running};

test -f $kernel || {
    echo "FATAL: Cannot open $kernel; exiting." >&2;
    exit 1;
}

:>$output 2>/dev/null || {
    echo "WARNING:  Cannot write $output; using temporary file" >&2;
    tmp=`mktemp -t ${kver}` || {
        echo "FATAL:  Cannot create temporary file; exiting." >&2;
	exit 2;
    };
    output=${tmp};
}

test -f ${kernel} && {
	strings ${kernel} | sed -n 's/^_CFG_//p' | unvis > ${output} &&
	echo "Output is in ${output}";
} || {
    echo "FATAL: No output written to ${output}" >&2;
    exit 1;
};

-=-=-

				--*greywolf;
--
Instead of asking why a piece of software is using "1970s technology",
start asking why software is ignoring 30 years of accumulated wisdom.