Date: 13 Oct 2001 18:27:08 +0200 From: Dag-Erling Smorgrav <des@ofug.org> To: arch@freebsd.org Subject: Generating host.conf for backward compatibility Message-ID: <xzplmifh5er.fsf_-_@flood.ping.uio.no> In-Reply-To: <xzp4rp3ippr.fsf@flood.ping.uio.no> References: <3BC67CBD.1DAAC031@DougBarton.net> <xzpr8s9av9n.fsf@flood.ping.uio.no> <3BC7EA21.15F43811@DougBarton.net> <xzp8zefiqhz.fsf@flood.ping.uio.no> <xzp4rp3ippr.fsf@flood.ping.uio.no>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-= In our eagerness to switch from host.conf to nsswitch.conf, we forgot that old binaries and libraries (COMPAT_* and tons of third-party software for which sources might not even be available) still expect to find /etc/host.conf, and may not work (correctly) if it doesn't exist. The attached patch creates host.conf from nsswitch.conf if it detects the latter. The first time you boot after upgrading from -STABLE or an old -CURRENT, nsswitch.conf will be created, and host.conf won't be touched; all subsequent times, host.conf will be auto-generated from the information contained in nsswitch.conf. DES -- Dag-Erling Smorgrav - des@ofug.org --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=host_conf.diff Index: etc/rc.network =================================================================== RCS file: /home/ncvs/src/etc/rc.network,v retrieving revision 1.105 diff -u -r1.105 rc.network --- etc/rc.network 10 Oct 2001 20:36:51 -0000 1.105 +++ etc/rc.network 13 Oct 2001 16:23:35 -0000 @@ -38,16 +38,21 @@ network_pass1() { echo -n 'Doing initial network setup:' + # Generate host.conf for compatibility + # + if [ -f "/etc/nsswitch.conf" ]; then + echo '' + echo 'Generating /etc/host.conf for compatibility' + generate_host_conf /etc/nsswitch.conf /etc/host.conf + fi + # Convert host.conf to nsswitch.conf if necessary - if [ -f "/etc/host.conf" ]; then + # + if [ -f "/etc/host.conf" -a ! -f "/etc/nsswitch.conf" ]; then echo '' echo 'Warning: /etc/host.conf is no longer used' - if [ -f "/etc/nsswitch.conf" ]; then - echo ' /etc/nsswitch.conf will be used instead' - else - echo ' /etc/nsswitch.conf will be created for you' - convert_host_conf /etc/host.conf /etc/nsswitch.conf - fi + echo ' /etc/nsswitch.conf will be created for you' + convert_host_conf /etc/host.conf /etc/nsswitch.conf fi # Set the host name if it is not already set @@ -827,3 +832,25 @@ }' < $host_conf > $nsswitch_conf } +generate_host_conf() { + nsswitch_conf=$1; shift; + host_conf=$1; shift; + + awk ' +BEGIN { + xlat["files"] = "hosts"; + xlat["dns"] = "bind"; + xlat["nis"] = "nis"; +} +/^hosts:/ { + print "# Auto-generated, do not edit"; + for (n = 2; n <= NF; ++n) + if ($n in xlat) + print xlat[$n]; + quit; +} +// { + next; +} +' <$nsswitch_conf >$host_conf +} --=-=-=-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzplmifh5er.fsf_-_>