Home | History | Annotate | Line # | Download | only in rc.d
sysdb revision 1.22
      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