#!/bin/sh
# Test for *BSD distributions.
set -e

. /usr/share/os-prober/common.sh

partition="$1"
dir="$2"
type="$3"

if [ "$type" = ufs ]; then
  disk=$(echo $partition | gawk '{ match($0, /([[:alpha:][:punct:]]+)[[:digit:]]+/, disk); print disk[1] }')

  if [ ! -z "$disk" ]; then
    tpartition=$(echo $partition | sed 's|\/|\\/|g')

    system=$(fdisk -l $disk | awk '/'$tpartition'[[:blank:]]+\*[[:blank:]]+.+[[:blank:]]+.+BSD/ {print $7}')

    if [ ! -z "$system" ]; then
      title=

      if [ -f $dir/etc/motd ]; then
        case $system in
        FreeBSD | NetBSD | OpenBSD) title=$(cat $dir/etc/motd | gawk '{ match($0, /('$system')[[:blank:]]+([[:graph:]]+)[[:blank:]]+(\([[:print:]]+\))/, title); print title[1], title[2], title[3]; exit 0}')
                                    ;;
        esac
      fi

      if [ -z "$title" ]; then
        title="$system"
      fi

      label="$(count_next_label "$system")"
      echo "$partition:$title:$label:chain"

      exit 0
    else
      exit 1
    fi
  else
    exit 1
  fi
else
  exit 1
fi
