Blame linux-boot-probes/mounted/sparc/50silo

Packit d86cd3
#!/bin/sh
Packit d86cd3
. /usr/share/os-prober/common.sh
Packit d86cd3
set -e
Packit d86cd3
Packit d86cd3
partition="$1"
Packit d86cd3
bootpart="$2"
Packit d86cd3
mpoint="$3"
Packit d86cd3
type="$4"
Packit d86cd3
Packit d86cd3
found_item=0
Packit d86cd3
Packit d86cd3
title=""
Packit d86cd3
rootdev=""
Packit d86cd3
kernel=""
Packit d86cd3
parameters=""
Packit d86cd3
initrd=""
Packit d86cd3
read_only=""
Packit d86cd3
default_rootdev=""
Packit d86cd3
default_kernel=""
Packit d86cd3
default_parameters=""
Packit d86cd3
default_initrd=""
Packit d86cd3
default_read_only=""
Packit d86cd3
Packit d86cd3
dequote () {
Packit d86cd3
	item="${1%\"}"
Packit d86cd3
	echo "${item#\"}"
Packit d86cd3
}
Packit d86cd3
Packit d86cd3
recordstanza () {
Packit d86cd3
	if [ -n "$kernel" ] && [ -n "$title" ]; then
Packit d86cd3
		if [ -e "$mpoint/$kernel" ] || [ -e "$mpoint/boot$kernel" ]; then
Packit d86cd3
			if [ -e "$mpoint/boot$initrd" ] || [ -e "$mpoint/$initrd" ]; then
Packit d86cd3
				if [ "$read_only" ]; then
Packit d86cd3
					parameters="ro $parameters"
Packit d86cd3
				fi
Packit d86cd3
				if [ "$rootdev" ]; then
Packit d86cd3
					parameters="root=$rootdev $parameters"
Packit d86cd3
				fi
Packit d86cd3
				parameters="${parameters% }"
Packit d86cd3
				result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
Packit d86cd3
				found_item=1
Packit d86cd3
			else
Packit d86cd3
				debug "cannot find $initrd, not recording"
Packit d86cd3
			fi
Packit d86cd3
		else
Packit d86cd3
			debug "cannot find $kernel, not recording"
Packit d86cd3
		fi
Packit d86cd3
		title=""
Packit d86cd3
		rootdev="$default_rootdev"
Packit d86cd3
		kernel="$default_kernel"
Packit d86cd3
		parameters="$default_parameters"
Packit d86cd3
		initrd="$default_initrd"
Packit d86cd3
		read_only="$default_read_only"
Packit d86cd3
	else
Packit d86cd3
		# Everything before set default values.
Packit d86cd3
		default_rootdev="$rootdev"
Packit d86cd3
		default_kernel="$kernel"
Packit d86cd3
		default_parameters="$parameters"
Packit d86cd3
		default_initrd="$initrd"
Packit d86cd3
		default_read_only="$read_only"
Packit d86cd3
	fi
Packit d86cd3
}
Packit d86cd3
Packit d86cd3
parse_silo_conf () {
Packit d86cd3
	mpoint="$1"
Packit d86cd3
	rootpart="$2"
Packit d86cd3
	bootpart="$3"
Packit d86cd3
	IFS=" 	="
Packit d86cd3
	while read line; do
Packit d86cd3
		debug "parsing: $line"
Packit d86cd3
		set -f
Packit d86cd3
		set -- $line
Packit d86cd3
		set +f
Packit d86cd3
		case "$1" in
Packit d86cd3
			root)
Packit d86cd3
				rootdev=$(dequote "$2")
Packit d86cd3
			;;
Packit d86cd3
			image)
Packit d86cd3
				recordstanza
Packit d86cd3
				# Dereference if symbolic link
Packit d86cd3
				if echo "$2" | grep -qs "/boot/"; then
Packit d86cd3
					kernel="$(readlink -f "$(dequote "$mpoint$2")" | sed -e 's#'"$mpoint"'##g')"
Packit d86cd3
				else
Packit d86cd3
					kernel="$(readlink -f "$(dequote "$mpoint/boot$2")" | sed -e 's#'"$mpoint"'/boot##g')"
Packit d86cd3
				fi
Packit d86cd3
			;;
Packit d86cd3
			append)
Packit d86cd3
				shift 1
Packit d86cd3
				parameters=$(dequote "${line#append=}")
Packit d86cd3
			;;
Packit d86cd3
			initrd)
Packit d86cd3
				# Dereference if symbolic link
Packit d86cd3
				if echo "$2" | grep -qs "/boot/"; then
Packit d86cd3
					initrd="$(readlink -f "$(dequote "$mpoint$2")" | sed -e 's#'"$mpoint"'##g')"
Packit d86cd3
				else
Packit d86cd3
					initrd="$(readlink -f "$(dequote "$mpoint/boot$2")" | sed -e 's#'"$mpoint"'/boot##g')"
Packit d86cd3
				fi
Packit d86cd3
			;;
Packit d86cd3
			label)
Packit d86cd3
				shift 1
Packit d86cd3
				title=$(dequote "$*" | sed -e 's/:/ /g')
Packit d86cd3
			;;
Packit d86cd3
			other)
Packit d86cd3
				recordstanza
Packit d86cd3
			;;
Packit d86cd3
			read-only)
Packit d86cd3
				read_only=1
Packit d86cd3
			;;
Packit d86cd3
		esac
Packit d86cd3
	done
Packit d86cd3
	recordstanza
Packit d86cd3
}
Packit d86cd3
Packit d86cd3
if [ -e "$mpoint/boot/silo.conf" ]; then
Packit d86cd3
	debug "parsing silo.conf"
Packit d86cd3
	parse_silo_conf "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/silo.conf"
Packit d86cd3
fi
Packit d86cd3
Packit d86cd3
if [ "$found_item" = 0 ]; then
Packit d86cd3
	exit 1
Packit d86cd3
else
Packit d86cd3
	exit 0
Packit d86cd3
fi