sysdb revision 1.18
11.1Slukem#!/bin/sh
21.1Slukem#
31.18Schristos# $NetBSD: sysdb,v 1.18 2007/05/13 17:23:56 christos 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.1Slukemstart_cmd="sysdb_start"
141.1Slukemstop_cmd=":"
151.16Schristosextra_commands="devdb utmp services netgroup password"
161.11Satatatdevdb_cmd="build_devdb"
171.11Satatatutmp_cmd="build_utmp"
181.16Schristosservices_cmd="build_services"
191.16Schristosnetgroup_cmd="build_netgroup"
201.16Schristospassword_cmd="build_password"
211.16Schristosecho=:
221.1Slukem
231.1Slukemsysdb_start()
241.1Slukem{
251.16Schristos	echo -n "Building databases:"
261.16Schristos	echo=echo
271.16Schristos	comma=" "
281.12Satatat	$devdb_cmd
291.12Satatat	$utmp_cmd
301.16Schristos	$services_cmd
311.16Schristos	$netgroup_cmd
321.16Schristos	$password_cmd
331.16Schristos	echo " done"
341.16Schristos}
351.16Schristos
361.16Schristoscheck_file()
371.16Schristos{
381.16Schristos	local src="$1"
391.16Schristos	local db="$2"
401.18Schristos
411.16Schristos	shift 2
421.18Schristos	if [ ! -f "$src" ]; then
431.18Schristos		return
441.18Schristos	fi
451.16Schristos	if [ \( ! -f "$db" \) -o \( "$src" -nt "$db" \) ]; then
461.16Schristos		$echo -n "$comma$(basename "$src")"
471.16Schristos		comma=", "
481.16Schristos		"$@"
491.16Schristos	fi
501.16Schristos}
511.16Schristos
521.16Schristosbuild_services()
531.16Schristos{
541.17Schristos	check_file /etc/services /var/db/services.db services_mkdb -q
551.16Schristos}
561.16Schristos
571.16Schristosbuild_netgroup()
581.16Schristos{
591.17Schristos	check_file /etc/netgroup /var/db/netgroup.db netgroup_mkdb
601.11Satatat}
611.4Slukem
621.11Satatatbuild_devdb()
631.11Satatat{
641.16Schristos	check_file /dev /var/run/dev.db dev_mkdb
651.16Schristos}
661.16Schristos
671.16Schristosbuild_password()
681.16Schristos{
691.16Schristos	local p=/etc/master.passwd
701.16Schristos	check_file $p /etc/spwd.db pwd_mkdb $p
711.11Satatat}
721.11Satatat
731.11Satatatbuild_utmp()
741.11Satatat{
751.10Sperry	#	Re-create /var/run/utmp and /var/run/utmpx, which are
761.10Sperry	#	deleted by mountcritlocal but can't be recreated by it
771.10Sperry	#	because install and chown may not be available then
781.10Sperry	#	(possibly no /usr).
791.4Slukem	#
801.16Schristos	local i
811.16Schristos	for i in "" x; do
821.16Schristos		if [ ! -f /var/run/utmp$i ]; then
831.16Schristos			$echo -n "${comma}utmp$i"
841.16Schristos			comma=", "
851.16Schristos			install -c -m 664 -g utmp /dev/null /var/run/utmp$i
861.16Schristos		fi
871.16Schristos	done
881.1Slukem}
891.1Slukem
901.2Slukemload_rc_config $name
911.1Slukemrun_rc_command "$1"
92