#!/bin/sh

# don't run normal rc stuff if factory=1
# used by manufacturing to verify boards on a clean system
if [ "$(kernopt factory)" = "1" ]; then
  echo "$0: found factory=1, exiting" >/dev/kmsg
  exit 0
fi

# /usr should take precedence over /
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:.


# Send our output (and that of our child processes) to /dev/kmsg so it'll be
# timestamped and uploaded along with the kernel messages.  We can't use
# logger here because syslogd isn't started yet, and anyway, doing it
# this way guarantees all our boot messages are in exactly the right order.
# (otherwise kernel task switching could result in kernel driver messages
# showing up before the userspace messages that triggered them)
exec >/dev/kmsg 2>&1

# TODO(apenwarr): mkdir -p seems buggy across symlinks.
#  Strangely doing the 'cd' commands below seems to make things like
#  'mkdir -p /var/lock/whatever' start working, implying it's caused by a bug
#  in the kernel somewhere (perhaps in NFS).
mkdir /tmp/run
(cd /var/lock)
(cd /var/cache)
(cd /var/log)

. /etc/utils.sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
case "$1" in
   start)
     SCRIPTS=/etc/init.d/S[0-9]?*
     ;;
   stop)
     # We use "crash-only" shutdown style, based on the assumption that
     # our system will mostly be stopped by a hard poweroff anyway.  Thus,
     # there's no reason to try to shutdown the system politely.  Instead
     # of using /etc/init.d/K* for shutdown scripts, we just leave it blank.
     SCRIPTS=
     ;;
esac

for i in ${SCRIPTS}; do

  # Ignore if /config/init_skiplist exists and contains the name of the file
  if [ -e /config/init_skiplist ] &&
     filecontains "$i" /config/init_skiplist; then
    echo "Skipping $i"
    continue
  fi

  # Ignore dangling symlinks (if any).
  [ ! -f "$i" ] && continue

  # Ignore backup files (filename~) created by editors (mostly for nfsroot)
  [ "$i" != "${i%~}" ] && continue

  echo "---- ${i##*/}" >&2

  case "$i" in
    *.sh)
      # Source shell script for speed.
      (
         trap - INT QUIT TSTP
         set $1
         . $i
      )
      ;;
    *)
      # No sh extension, so fork subprocess.
      $i $1
      ;;
  esac
done

echo
echo "/etc/init.d/rcS: done." >&2
