summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2004-05-24 11:48:58 +0000
committerdes <des@FreeBSD.org>2004-05-24 11:48:58 +0000
commit7d5a1a0c2b0bb381577a6bd818c7afd72388f9d5 (patch)
tree34a579298582a8c5239796d146b167535d84817a /etc
parentf15855a4570dc101a884aad06d8f6f33295c68aa (diff)
downloadFreeBSD-src-7d5a1a0c2b0bb381577a6bd818c7afd72388f9d5.zip
FreeBSD-src-7d5a1a0c2b0bb381577a6bd818c7afd72388f9d5.tar.gz
Move the task of updating nsswitch.conf / host.conf into a separate
script called nsswitch.
Diffstat (limited to 'etc')
-rw-r--r--etc/rc.d/nisdomain64
-rw-r--r--etc/rc.d/nsswitch108
2 files changed, 108 insertions, 64 deletions
diff --git a/etc/rc.d/nisdomain b/etc/rc.d/nisdomain
index 4866f4d..1ca4afa 100644
--- a/etc/rc.d/nisdomain
+++ b/etc/rc.d/nisdomain
@@ -37,72 +37,8 @@ name="nisdomain"
start_cmd="nisdomain_start"
stop_cmd=":"
-convert_host_conf()
-{
- host_conf=$1; shift;
- nsswitch_conf=$1; shift;
- awk ' \
- /^[:blank:]*#/ { next } \
- /(hosts|local|file)/ { nsswitch[c] = "files"; c++; next } \
- /(dns|bind)/ { nsswitch[c] = "dns"; c++; next } \
- /nis/ { nsswitch[c] = "nis"; c++; next } \
- { printf "Warning: unrecognized line [%s]", $0 > "/dev/stderr" } \
- END { \
- printf "hosts: "; \
- for (i in nsswitch) printf "%s ", nsswitch[i]; \
- printf "\n"; \
- }' < $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";
- cont = 0;
-}
-sub(/^[\t ]*hosts:/, "") || cont {
- if (!cont)
- srcs = ""
- sub(/#.*/, "")
- gsub(/[][]/, " & ")
- cont = sub(/\\$/, "")
- srcs = srcs " " $0
-}
-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
-}
-
nisdomain_start()
{
- # Generate host.conf for compatibility
- #
- if [ -f "/etc/nsswitch.conf" ]; then
- echo 'Generating host.conf.'
- generate_host_conf /etc/nsswitch.conf /etc/host.conf
- fi
-
- # Convert host.conf to nsswitch.conf if necessary
- #
- if [ -f "/etc/host.conf" -a ! -f "/etc/nsswitch.conf" ]; then
- echo ''
- echo 'Warning: /etc/host.conf is no longer used'
- echo ' /etc/nsswitch.conf will be created for you'
- convert_host_conf /etc/host.conf /etc/nsswitch.conf
- fi
-
# Set the domainname if we're using NIS
#
case ${nisdomainname} in
diff --git a/etc/rc.d/nsswitch b/etc/rc.d/nsswitch
new file mode 100644
index 0000000..830467c
--- /dev/null
+++ b/etc/rc.d/nsswitch
@@ -0,0 +1,108 @@
+#!/bin/sh
+#
+# Copyright (c) 1993 - 2004 The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# PROVIDE: nsswitch
+# REQUIRE: root
+# BEFORE: network
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+
+name="nsswitch"
+start_cmd="nsswitch_start"
+stop_cmd=":"
+
+convert_host_conf()
+{
+ host_conf=$1; shift;
+ nsswitch_conf=$1; shift;
+ awk ' \
+ /^[:blank:]*#/ { next } \
+ /(hosts|local|file)/ { nsswitch[c] = "files"; c++; next } \
+ /(dns|bind)/ { nsswitch[c] = "dns"; c++; next } \
+ /nis/ { nsswitch[c] = "nis"; c++; next } \
+ { printf "Warning: unrecognized line [%s]", $0 > "/dev/stderr" } \
+ END { \
+ printf "hosts: "; \
+ for (i in nsswitch) printf "%s ", nsswitch[i]; \
+ printf "\n"; \
+ }' < $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";
+ cont = 0;
+}
+sub(/^[\t ]*hosts:/, "") || cont {
+ if (!cont)
+ srcs = ""
+ sub(/#.*/, "")
+ gsub(/[][]/, " & ")
+ cont = sub(/\\$/, "")
+ srcs = srcs " " $0
+}
+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
+}
+
+nsswitch_start()
+{
+ # Generate host.conf for compatibility
+ #
+ if [ -f "/etc/nsswitch.conf" ]; then
+ echo 'Generating host.conf.'
+ generate_host_conf /etc/nsswitch.conf /etc/host.conf
+ fi
+
+ # Convert host.conf to nsswitch.conf if necessary
+ #
+ if [ -f "/etc/host.conf" -a ! -f "/etc/nsswitch.conf" ]; then
+ echo ''
+ echo 'Warning: /etc/host.conf is no longer used'
+ echo ' /etc/nsswitch.conf will be created for you'
+ convert_host_conf /etc/host.conf /etc/nsswitch.conf
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
OpenPOWER on IntegriCloud