1 #!/bin/sh 2 # 3 # $NetBSD: sysdb,v 1.22 2011/09/02 07:13:28 mbalmer Exp $ 4 # 5 6 # PROVIDE: sysdb 7 # REQUIRE: mountcritremote 8 # BEFORE: DAEMON 9 10 $_rc_subr_loaded . /etc/rc.subr 11 12 name="sysdb" 13 rcvar=$name 14 start_cmd="sysdb_start" 15 stop_cmd=":" 16 extra_commands="devdb utmp services netgroup password" 17 devdb_cmd="build_devdb" 18 utmp_cmd="build_utmp" 19 services_cmd="build_services" 20 netgroup_cmd="build_netgroup" 21 password_cmd="build_password" 22 echo=: 23 24 sysdb_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 37 check_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" \) -o \( "$src" -nt "$db" \) ]; then 47 $echo -n "$comma$(basename "$src")" 48 comma=", " 49 "$@" 50 fi 51 } 52 53 build_services() 54 { 55 check_file /etc/services /var/db/services.db services_mkdb -q 56 } 57 58 build_netgroup() 59 { 60 check_file /etc/netgroup /var/db/netgroup.db netgroup_mkdb 61 } 62 63 build_devdb() 64 { 65 check_file /dev /var/run/dev.db dev_mkdb 66 } 67 68 build_password() 69 { 70 local p=/etc/master.passwd 71 check_file $p /etc/spwd.db pwd_mkdb -w $p 72 } 73 74 build_utmp() 75 { 76 # Re-create /var/run/utmp and /var/run/utmpx, which are 77 # deleted by mountcritlocal but can't be recreated by it 78 # because install and chown may not be available then 79 # (possibly no /usr). 80 # 81 local i 82 for i in "" x; do 83 if [ ! -f /var/run/utmp$i ]; then 84 $echo -n "${comma}utmp$i" 85 comma=", " 86 install -c -m 664 -g utmp /dev/null /var/run/utmp$i 87 fi 88 done 89 } 90 91 load_rc_config $name 92 run_rc_command "$1" 93