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