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