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