sysdb revision 1.23
11.1Slukem#!/bin/sh
21.1Slukem#
31.23Snakayama# $NetBSD: sysdb,v 1.23 2012/02/21 12:30:32 nakayama Exp $
41.1Slukem#
51.1Slukem
61.5Slukem# PROVIDE: sysdb
71.3Slukem# REQUIRE: mountcritremote
81.9Sthorpej# BEFORE:  DAEMON
91.1Slukem
101.14Smycroft$_rc_subr_loaded . /etc/rc.subr
111.1Slukem
121.1Slukemname="sysdb"
131.20Sdyoungrcvar=$name
141.1Slukemstart_cmd="sysdb_start"
151.1Slukemstop_cmd=":"
161.16Schristosextra_commands="devdb utmp services netgroup password"
171.11Satatatdevdb_cmd="build_devdb"
181.11Satatatutmp_cmd="build_utmp"
191.16Schristosservices_cmd="build_services"
201.16Schristosnetgroup_cmd="build_netgroup"
211.16Schristospassword_cmd="build_password"
221.16Schristosecho=:
231.1Slukem
241.1Slukemsysdb_start()
251.1Slukem{
261.16Schristos	echo -n "Building databases:"
271.16Schristos	echo=echo
281.16Schristos	comma=" "
291.12Satatat	$devdb_cmd
301.12Satatat	$utmp_cmd
311.16Schristos	$services_cmd
321.16Schristos	$netgroup_cmd
331.16Schristos	$password_cmd
341.22Smbalmer	echo "."
351.16Schristos}
361.16Schristos
371.16Schristoscheck_file()
381.16Schristos{
391.16Schristos	local src="$1"
401.16Schristos	local db="$2"
411.18Schristos
421.16Schristos	shift 2
431.19Schristos	if [ ! -e "$src" ]; then
441.18Schristos		return
451.18Schristos	fi
461.16Schristos	if [ \( ! -f "$db" \) -o \( "$src" -nt "$db" \) ]; then
471.16Schristos		$echo -n "$comma$(basename "$src")"
481.16Schristos		comma=", "
491.16Schristos		"$@"
501.16Schristos	fi
511.16Schristos}
521.16Schristos
531.16Schristosbuild_services()
541.16Schristos{
551.23Snakayama	check_file /etc/services /var/db/services.cdb services_mkdb -q
561.16Schristos}
571.16Schristos
581.16Schristosbuild_netgroup()
591.16Schristos{
601.17Schristos	check_file /etc/netgroup /var/db/netgroup.db netgroup_mkdb
611.11Satatat}
621.4Slukem
631.11Satatatbuild_devdb()
641.11Satatat{
651.16Schristos	check_file /dev /var/run/dev.db dev_mkdb
661.16Schristos}
671.16Schristos
681.16Schristosbuild_password()
691.16Schristos{
701.16Schristos	local p=/etc/master.passwd
711.21Schristos	check_file $p /etc/spwd.db pwd_mkdb -w $p
721.11Satatat}
731.11Satatat
741.11Satatatbuild_utmp()
751.11Satatat{
761.10Sperry	#	Re-create /var/run/utmp and /var/run/utmpx, which are
771.10Sperry	#	deleted by mountcritlocal but can't be recreated by it
781.10Sperry	#	because install and chown may not be available then
791.10Sperry	#	(possibly no /usr).
801.4Slukem	#
811.16Schristos	local i
821.16Schristos	for i in "" x; do
831.16Schristos		if [ ! -f /var/run/utmp$i ]; then
841.16Schristos			$echo -n "${comma}utmp$i"
851.16Schristos			comma=", "
861.16Schristos			install -c -m 664 -g utmp /dev/null /var/run/utmp$i
871.16Schristos		fi
881.16Schristos	done
891.1Slukem}
901.1Slukem
911.2Slukemload_rc_config $name
921.1Slukemrun_rc_command "$1"
93