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