#!/bin/bash -efu

. bootchain-sh-functions


listpvdir()
{
	# shellcheck disable=SC2012
	if [ -z "${1-}" ]; then
		ls -1F "$prevdir/" |sort |head -n20
	else
		ls -1F "$prevdir/" |sort |grep -svE "$1" |head -n20
	fi
}


# Entry point
message "$PROG for $name [$callnum] started"

message "PREV DIR: $prevdir"
message "Data DIR: $datadir"
message "DEST DIR: $destdir"

{ printf "##############################"

  if [ -d "$prevdir" ]; then
	printf "\nPrevious step results (%s):\n" "$prevdir"

	if mountpoint -q -- "$prevdir"; then
		listpvdir
	elif [ ! -b "$prevdir/dev" ] &&
		[ ! -c "$prevdir/dev" ] &&
		[ ! -s "$prevdir/DEVNAME" ]
	then
		listpvdir
	else
		if [ -b "$prevdir/dev" ] || [ -c "$prevdir/dev" ]; then
			devname="$(resolve_devname "$prevdir/dev")"
			devno="$(get_majmin "$prevdir/dev" ||:)"
			[ -z "$devno" ] || [ -z "$devname" ] ||
				printf 'dev (%s -> %s)\n' "$devno" "$devname"
		fi

		if [ -s "$prevdir/DEVNAME" ]; then
			read -r devname <"$prevdir/DEVNAME" 2>/dev/null ||
				devname=
			if [ -z "$devname" ]; then
				printf 'DEVNAME\n'
			else
				devno="$(get_majmin "$devname")" ||
					devno="ABSENT"
				printf 'DEVNAME (%s -> %s)\n' "$devno" "$devname"
			fi
		fi

		if [ -s "$prevdir/FILESIZE" ]; then
			read -r fsize <"$prevdir/FILESIZE" 2>/dev/null ||
				fsize="NOT READABLE"
			printf 'FILESIZE (%s)\n' "$fsize"
		fi

		listpvdir "^(dev|DEVNAME|FILESIZE)$"
	fi
  fi

  # FIXME: make this better to specify interested mount points only
  [ -z "${OEM_CDROOT-}" ] && regex="$BC_ROOT" ||
	regex="$BC_ROOT $OEM_CDROOT"
  regex="$regex $mntdir"
  regex="${regex//\//\\/}"
  regex=" (${regex// /\|})\/"

  if mount |grep -qsE "$regex"; then
	printf "\nMount points and devices:\n"
	mount |grep -sE "$regex"
  fi

  printf "##############################\n"
} 1>&2

message "$PROG for $name [$callnum] finished"
