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