sysdb revision 1.26
11.1Slukem#!/bin/sh
21.1Slukem#
31.26Skre# $NetBSD: sysdb,v 1.26 2023/12/25 08:38:32 kre 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.26Skre	if ! [ -e "$src" ]; then
441.18Schristos		return
451.18Schristos	fi
461.26Skre	if ! [ -f "$db" ] || [ "$src" -nt "$db" ]; then
471.25Sdholland		$echo -n "$comma${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.24Sjoerg	check_file /dev /var/run/dev.cdb dev_mkdb
671.16Schristos}
681.16Schristos
691.16Schristosbuild_password()
701.16Schristos{
711.16Schristos	local p=/etc/master.passwd
721.21Schristos	check_file $p /etc/spwd.db pwd_mkdb -w $p
731.11Satatat}
741.11Satatat
751.11Satatatbuild_utmp()
761.11Satatat{
771.10Sperry	#	Re-create /var/run/utmp and /var/run/utmpx, which are
781.10Sperry	#	deleted by mountcritlocal but can't be recreated by it
791.10Sperry	#	because install and chown may not be available then
801.10Sperry	#	(possibly no /usr).
811.4Slukem	#
821.16Schristos	local i
831.16Schristos	for i in "" x; do
841.26Skre		if ! [ -f /var/run/utmp$i ]; then
851.16Schristos			$echo -n "${comma}utmp$i"
861.16Schristos			comma=", "
871.16Schristos			install -c -m 664 -g utmp /dev/null /var/run/utmp$i
881.16Schristos		fi
891.16Schristos	done
901.1Slukem}
911.1Slukem
921.2Slukemload_rc_config $name
931.1Slukemrun_rc_command "$1"
94