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

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

partition="$1"
dir="$2"
type="$3"
uuid="$4"
subvol="$5"

if [ -e "$dir/etc/debian_version" ]; then
	short="Debian"
	long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
# RPM derived distributions may also have a redhat-release or
# mandrake-release, so check their files first.
elif [ -e "$dir/etc/altlinux-release" ]; then
	short="ALTLinux"
	long="$(cat "$dir/etc/altlinux-release")"
elif [ -e "$dir/etc/magic-release" ]; then
	short="Magic"
	long="$(cat "$dir/etc/magic-release")"
elif [ -e "$dir/etc/blackPanther-release" ]; then
	short="blackPanther"
	long="$(cat "$dir/etc/blackPanther-release")"
elif [ -e "$dir/etc/ark-release" ]; then
	short="Ark"
	long="$(cat "$dir/etc/ark-release")"
elif [ -e "$dir/etc/arch-release" ]; then
	short="Arch"
	long="$(cat "$dir/etc/arch-release")"
elif [ -e "$dir/etc/asplinux-release" ]; then
	short="ASPLinux"
	long="$(cat "$dir/etc/asplinux-release")"
elif [ -e "$dir/etc/lvr-release" ]; then
	short="LvR"
	long="$(cat "$dir/etc/lvr-release")"
elif [ -e "$dir/etc/caos-release" ]; then
	short="cAos"
	long="$(cat "$dir/etc/caos-release")"
elif [ -e "$dir/etc/aurox-release" ]; then
	short="Aurox"
	long="$(cat "$dir/etc/aurox-release")"
elif [ -e "$dir/etc/engarde-release" ]; then
	short="EnGarde"
	long="$(cat "$dir/etc/engarde-release")"
elif [ -e "$dir/etc/vine-release" ]; then
	short="Vine"
	long="$(cat "$dir/etc/vine-release")"
elif [ -e "$dir/etc/whitebox-release" ]; then
	short="WhiteBox"
	long="$(cat "$dir/etc/whitebox-release")"
elif [ -e "$dir/etc/pld-release" ]; then
	short="PLD"
	long="$(cat "$dir/etc/pld-release")"
elif [ -e "$dir/etc/startcom-release" ]; then
	short="StartCom"
	long="$(cat "$dir/etc/startcom-release")"
elif [ -e "$dir/etc/trustix-release" ]; then
	short="Trustix"
	long="$(cat "$dir/etc/trustix-release")"
elif [ -e "$dir/etc/openna-release" ]; then
	short="OpenNA"
	long="$(cat "$dir/etc/openna-release")"
elif [ -e "$dir/etc/conectiva-release" ]; then
	short="Conectiva"
	long="$(cat "$dir/etc/conectiva-release")"
elif [ -e "$dir/etc/mandrake-release" ]; then
	short="Mandrake"
	long="$(cat "$dir/etc/mandrake-release")"
elif [ -e "$dir/etc/fedora-release" ]; then
	short="Fedora"
	long="$(cat "$dir/etc/fedora-release")"
elif [ -e "$dir/etc/redhat-release" ]; then
	short="RedHat"
	long="$(cat "$dir/etc/redhat-release")"
elif [ -e "$dir/etc/SuSE-release" ]; then
	short="SUSE"
	long="$(head -n 1 "$dir/etc/SuSE-release")"
elif [ -e "$dir/etc/gentoo-release" ]; then
	short="Gentoo"
	long="$(cat "$dir/etc/gentoo-release")"
elif [ -e "$dir/etc/cobalt-release" ]; then
	short="Cobalt"
	long="$(cat "$dir/etc/cobalt-release")"
elif [ -e "$dir/etc/yellowdog-release" ]; then
	short="YellowDog"
	long="$(cat "$dir/etc/yellowdog-release")"
elif [ -e "$dir/etc/turbolinux-release" ]; then
	short="Turbolinux"
	long="$(cat "$dir/etc/turbolinux-release")"
elif [ -e "$dir/etc/pardus-release" ]; then
	short="Pardus"
	long="$(cat "$dir/etc/pardus-release")"
elif [ -e "$dir/etc/kanotix-version" ]; then
	short="Kanotix"
	long="$(cat "$dir/etc/kanotix-version")"
elif [ -e "$dir/etc/slackware-version" ]; then
	short="Slackware"
	long="$(printf "Slackware Linux (%s)\n" "$(cat "$dir/etc/slackware-version")")"
elif [ -e "$dir/sbin/pkgtool" ]; then
	short="Slackware"
	long="Slackware Linux"
elif grep -qs OpenLinux "$dir/etc/issue"; then
	short="Caldera"
	long="Caldera OpenLinux"
elif [ -e "$dir/etc/frugalware-release" ]; then
	short="Frugalware Linux"
	long="$(cat "$dir/etc/frugalware-release")"
elif [ -e "$dir/etc/kdemar-release" ]; then
	short="K-DEMar"
	long="$(printf "K-DEMar GNU/Linux (%s)\n" "$(cat "$dir/etc/kdemar-release")")"
elif [ -e "$dir/etc/lfs-release" ]; then
	short="LFS"
	long="$(printf "Linux From Scratch (%s)\n" "$(cat "$dir/etc/lfs-release")")"
elif [ -e "$dir/etc/meego-release" ]; then
	short="MeeGo"
	long="$(head -1 "$dir/etc/meego-release")"
elif [ -L "$dir/etc/os-release" ]; then
	RELPATH=$(readlink -f "$dir/etc/os-release")
	if readlink "$dir/etc/os-release" | grep -q '^/'; then
		RELPATH="$dir$RELPATH"
	fi
	if [ -f "$RELPATH" ]; then
		short=$(sed -n "/^NAME=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" "$RELPATH")
		long="$short $(sed -n "/^VERSION=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" "$RELPATH")"
	else
		exit 1
	fi
elif [ -e "$dir/etc/os-release" ]; then
	short=$(sed -n "/^NAME=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release)
	long="$short $(sed -n "/^VERSION=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release)"
else
	exit 1
fi

label="$(count_next_label "$short")"
if [ "x$type" = "xbtrfs" -a "x$uuid" != "x" -a "x$subvol" != "x" ]; then
	result "$partition:$long:$label:linux:$type:$uuid:$subvol"
else
	result "$partition:$long:$label:linux"
fi
exit 0
