sysdb revision 1.20
1b8e80941Smrg#!/bin/sh
2b8e80941Smrg#
3b8e80941Smrg# $NetBSD: sysdb,v 1.20 2007/08/26 23:55:50 dyoung Exp $
4b8e80941Smrg#
5b8e80941Smrg
6b8e80941Smrg# PROVIDE: sysdb
7b8e80941Smrg# REQUIRE: mountcritremote
8b8e80941Smrg# BEFORE:  DAEMON
9b8e80941Smrg
10b8e80941Smrg$_rc_subr_loaded . /etc/rc.subr
11b8e80941Smrg
12b8e80941Smrgname="sysdb"
13b8e80941Smrgrcvar=$name
14b8e80941Smrgstart_cmd="sysdb_start"
15b8e80941Smrgstop_cmd=":"
16b8e80941Smrgextra_commands="devdb utmp services netgroup password"
17b8e80941Smrgdevdb_cmd="build_devdb"
18b8e80941Smrgutmp_cmd="build_utmp"
19b8e80941Smrgservices_cmd="build_services"
20b8e80941Smrgnetgroup_cmd="build_netgroup"
21b8e80941Smrgpassword_cmd="build_password"
22b8e80941Smrgecho=:
23b8e80941Smrg
24b8e80941Smrgsysdb_start()
25b8e80941Smrg{
26b8e80941Smrg	echo -n "Building databases:"
27b8e80941Smrg	echo=echo
28b8e80941Smrg	comma=" "
29b8e80941Smrg	$devdb_cmd
30b8e80941Smrg	$utmp_cmd
31b8e80941Smrg	$services_cmd
32b8e80941Smrg	$netgroup_cmd
33b8e80941Smrg	$password_cmd
34b8e80941Smrg	echo " done"
35b8e80941Smrg}
36
37check_file()
38{
39	local src="$1"
40	local db="$2"
41
42	shift 2
43	if [ ! -e "$src" ]; then
44		return
45	fi
46	if [ \( ! -f "$db" \) -o \( "$src" -nt "$db" \) ]; then
47		$echo -n "$comma$(basename "$src")"
48		comma=", "
49		"$@"
50	fi
51}
52
53build_services()
54{
55	check_file /etc/services /var/db/services.db services_mkdb -q
56}
57
58build_netgroup()
59{
60	check_file /etc/netgroup /var/db/netgroup.db netgroup_mkdb
61}
62
63build_devdb()
64{
65	check_file /dev /var/run/dev.db dev_mkdb
66}
67
68build_password()
69{
70	local p=/etc/master.passwd
71	check_file $p /etc/spwd.db pwd_mkdb $p
72}
73
74build_utmp()
75{
76	#	Re-create /var/run/utmp and /var/run/utmpx, which are
77	#	deleted by mountcritlocal but can't be recreated by it
78	#	because install and chown may not be available then
79	#	(possibly no /usr).
80	#
81	local i
82	for i in "" x; do
83		if [ ! -f /var/run/utmp$i ]; then
84			$echo -n "${comma}utmp$i"
85			comma=", "
86			install -c -m 664 -g utmp /dev/null /var/run/utmp$i
87		fi
88	done
89}
90
91load_rc_config $name
92run_rc_command "$1"
93