#!/sbin/sh

# Modern devices use /system as root ("/")
system_as_root=`getprop ro.build.system_root_image`
if [ "$system_as_root" == "true" ]; then
  if mount /system_root; then
    exit 0
  fi

  active_slot=`getprop ro.boot.slot_suffix`
  if [ ! -z "$active_slot" ]; then
    block=/dev/block/bootdevice/by-name/system$active_slot
  else
    block=/dev/block/bootdevice/by-name/system
  fi
  mkdir -p /system_root
  if mount -o rw $block /system_root ||
     mount -o rw $block /system_root -t ext4 ||
     mount -o rw $block /system_root -t f2fs; then
    exit 0
  fi
else
  if mount /system; then
    exit 0
  fi

  # Try to get the block from /etc/recovery.fstab
  block=`cat /etc/recovery.fstab | cut -d '#' -f 1 | grep /system | grep -o '/dev/[^ ]*' | head -1`
  if [ -n "$block" ] && mount $block /system; then
    exit 0
  fi
fi

exit 1
