#!/bin/sh

. /lib/partman/lib/base.sh

ARCH="$(archdetect)"

for dev in $DEVICES/*; do
	[ -d "$dev" ] || continue
	cd $dev
	partitions=
	open_dialog PARTITIONS
	while { read_line num id size type fs path name; [ "$id" ]; }; do
		[ "$fs" != free ] || continue
		partitions="$partitions $id,$num"
	done
	close_dialog

	for part in $partitions; do
		id=${part%,*}
		num=${part#*,}
		[ -f $id/method ] || continue
		[ -f $id/acting_filesystem ] || continue
		filesystem=$(cat $id/acting_filesystem)
		case $filesystem in
		    fat16|fat32|ntfs)
			[ -f "$id/mountpoint" ] || continue
			mountpoint="$(cat "$id/mountpoint")"
			# Check for FAT file systems mounted in places where POSIX
			# filesystem semantics are usually expected, and make the
			# user choose again.
			case $mountpoint in
			    /boot)
				case $ARCH in
				    armel/omap)
					# omap uboot has problems with ext2;
					# the problems with FAT can be
					# worked around.
					continue
					;;
				esac
			    ;;
			esac
			case $mountpoint in
			    /|/boot|/home|/opt|/srv|/tmp|/usr|/usr/local|/var)
				>"$id/visual_mountpoint"
				db_subst partman-basicfilesystems/posix_filesystem_required FILESYSTEM "$filesystem"
				db_subst partman-basicfilesystems/posix_filesystem_required MOUNTPOINT "$mountpoint"
				db_metaget partman/filesystem_short/ext2 description || RET=
				[ "$RET" ] || RET=ext2
				db_subst partman-basicfilesystems/posix_filesystem_required EXT2 "$RET"
				db_input critical partman-basicfilesystems/posix_filesystem_required || true
				db_go || true
				exit 1
				;;
			esac
			;;
		esac
	done
done
