diff options
author | Bill Fenner <fenner@FreeBSD.org> | 2001-11-07 00:33:56 +0000 |
---|---|---|
committer | Bill Fenner <fenner@FreeBSD.org> | 2001-11-07 00:33:56 +0000 |
commit | 85c9d676b5eec2f4dd34a4b3f858dd6414c9b783 (patch) | |
tree | 9b03037ae141daba056125f55d2c329fdf790c14 /etc/rc.d/network3 | |
parent | 70982dca889ffc7a2399c98cf27f5c3ec26647e1 (diff) | |
download | src-85c9d676b5eec2f4dd34a4b3f858dd6414c9b783.tar.gz src-85c9d676b5eec2f4dd34a4b3f858dd6414c9b783.zip |
Update the nsswitch.conf -> host.conf generator to handle criteria,
continuation lines, extra whitespace, and to use the last matching
line in the file. This syncs the host.conf generation with how
the nsswitch.conf is parsed.
Only print " host.conf" instead of a multi-line message, since this
happens on every boot.
Notes
Notes:
svn path=/head/; revision=86163
Diffstat (limited to 'etc/rc.d/network3')
-rw-r--r-- | etc/rc.d/network3 | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/etc/rc.d/network3 b/etc/rc.d/network3 index 1ca57d56db08..db566996768c 100644 --- a/etc/rc.d/network3 +++ b/etc/rc.d/network3 @@ -41,8 +41,7 @@ network_pass1() { # Generate host.conf for compatibility # if [ -f "/etc/nsswitch.conf" ]; then - echo '' - echo 'Generating /etc/host.conf for compatibility' + echo -n ' host.conf' generate_host_conf /etc/nsswitch.conf /etc/host.conf fi @@ -880,16 +879,23 @@ BEGIN { xlat["files"] = "hosts"; xlat["dns"] = "bind"; xlat["nis"] = "nis"; + cont = 0; } -/^hosts:/ { - print "# Auto-generated, do not edit"; - for (n = 2; n <= NF; ++n) - if ($n in xlat) - print xlat[$n]; - quit; +sub(/^[\t ]*hosts:/, "") || cont { + if (!cont) + srcs = "" + sub(/#.*/, "") + gsub(/[][]/, " & ") + cont = sub(/\\$/, "") + srcs = srcs " " $0 } -// { - next; +END { + print "# Auto-generated from nsswitch.conf, do not edit" + ns = split(srcs, s) + for (n = 1; n <= ns; ++n) { + if (s[n] in xlat) + print xlat[s[n]] + } } ' <$nsswitch_conf >$host_conf } |