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