#!/bin/sh

set -e

chrooted() {
  if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ];
  then
    # the devicenumber/inode pair of / is the same as that of /sbin/init's
    # root, so we're *not* in a chroot and hence return false.
    return 1
  fi
  echo "A chroot environment has been detected, udev not started."
  return 0
}

can_start_udevd() {
  if [ ! -d /sys/class/ ]; then
    echo "udev requires a mounted sysfs, not started."
    return 1
  fi
  return 0
}

enable_udev() {
  can_start_udevd || return 0
  invoke-rc.d udev start
}

update_initramfs() {
  [ -x /usr/sbin/update-initramfs -a -e /etc/initramfs-tools/initramfs.conf ] \
    || return 0
  update-initramfs -u
}

update_hwdb() {
  systemd-hwdb --usr update || true
}

case "$1" in
    remove)
    # update/create hwdb before we (re)start udev
    update_hwdb

    if ! chrooted; then
      if can_start_udevd; then
        if [ -d /run/systemd/system ] ; then
          systemctl daemon-reload || true
        fi
        invoke-rc.d udev restart
      fi
    fi

    update_initramfs
    ;;
esac

#DEBHELPER#
