+# Pardus Linux
+Pardus Linux 1.0 pardus-linux 1.0 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+1.0\s+/i
+Pardus Linux 2007 pardus-linux 2007 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007\s+/i
+Pardus Linux 2007.1 Felis chaus pardus-linux 2007.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.1\s+/i
+Pardus Linux 2007.2 Caracac caracal pardus-linux 2007.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.2\s+/i
+Pardus Linux 2007.3 Lynx lynx pardus-linux 2007.3 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.3\s+/i
+Pardus Linux 2008 pardus-linux 2008 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008\s+/i
+Pardus Linux 2008.1 Hyaena hyaena pardus-linux 2008.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008.1\s+/i
+Pardus Linux 2008.2 Canis aureus pardus-linux 2008.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008.2\s+/i
+Pardus Linux 2009 pardus-linux 2009 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009\s+/i
+Pardus Linux 2009.1 Anthropoides virgo pardus-linux 2009.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009.1\s+/i
+Pardus Linux 2009.2 Geronticus eremita pardus-linux 2009.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009.2\s+/i
+Pardus Linux 2011 pardus-linux 2011 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2011\s+/i
+
# Sun Solaris
Sun Solaris 2.5.1 solaris 2.5.1 $uname =~ /SunOS.*\s5\.5\.1\s/i
Sun Solaris 2.6 solaris 2.6 $uname =~ /SunOS.*\s5\.6\s/i
Caldera OpenLinux 3.2 open-linux 3.2e $etc_issue =~ /OpenLinux.*3\.2/i
# Redhat enterprise clones
+Asianux Server $1 redhat-linux $1+10.0 `cat /etc/asianux-release 2>/dev/null` =~ /Asianux\s+Server\s+(\d+)/i
+Asianux $1 redhat-linux $1+10.0 `cat /etc/asianux-release 2>/dev/null` =~ /Asianux\s+release\s+(\d+\.\d+)/i
Whitebox Linux $1 redhat-linux 10.0 `cat /etc/whitebox-release 2>/dev/null` =~ /White\s+Box\s+Enterprise\s+Linux\s+release\s+(\S+)/i
Tao Linux $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Tao\s+Linux\s+release\s+(\S+)/i
CentOS Linux $1 redhat-linux 10.0 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+release\s+(\S+)/i && $1 < 4
-CentOS Linux $1 redhat-linux 12.0 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+release\s+(\S+)/i && $1 >= 4
+CentOS Linux $2 redhat-linux $2+8.0 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+(Linux\s+)?release\s+(\S+)/i && $2 >= 4
Scientific Linux $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\S+)/i && $1 < 4
-Scientific Linux $1 redhat-linux 12.0 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\S+)/i && $1 >= 4
+Scientific Linux $1 redhat-linux $1+8.0 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\d+)/i && $1 >= 4
Gralinux $1 redhat-linux $2+8.0 `cat /etc/redhtat-release 2>/dev/null` =~ /Gralinux\s+(ES|AS|WS)\s+release\s+(\d+)/i
NeoShine Linux $1 redhat-linux $1+10 `cat /etc/neoshine-release 2>/dev/null` =~ /NeoShine\s+Linux.*release\s+(\d+)/i
+Endian Firewall Linux $1 redhat-linux $1+10.0 `cat /etc/endian-release 2>/dev/null` =~ /release\s+(\S+)/
+Oracle Enterprise Linux $2 redhat-linux $2+8.0 `cat /etc/enterprise-release 2>/dev/null` =~ /Enterprise.*Linux\s+Enterprise\s+Linux\s+Server\s+release\s+(\d+)/i
+Oracle VM $2 redhat-linux $2+8.0 `cat /etc/ovs-release 2>/dev/null` =~ /Oracle.*VM\s+server\s+release\s+(\d+)/i
+XenServer Linux $1 redhat-linux 13.0 `cat /etc/redhat-release 2>/dev/null` =~ /XenServer\s+release\s+5\./
# Redhat enterprise versions
Redhat Enterprise Linux 2.1AS redhat-linux 7.3 `cat /etc/redhat-release 2>/dev/null` =~ /(Advanced\s+Server.*2\.1)|(AS.*2\.1)/i
Redhat Enterprise Linux 2.1WS redhat-linux 7.3 `cat /etc/redhat-release 2>/dev/null` =~ /WS.*2\.1/
Redhat Enterprise Linux 3.0AS redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /(3\.0AS)|(2\.9\.5AS)|(AS\s+release\s+3)/i
Redhat Enterprise Linux "$2$1" redhat-linux $2 >= 4 ? $2+8.0 : 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /(ES|AS|WS)\s+release\s+(\S+)/
-Redhat Enterprise Linux $1 redhat-linux $1+8.0 `cat /etc/redhat-release 2>/dev/null` =~ /Red.*Hat\s+Enterprise\s+Linux\s+Server\s+release\s+(\d+)/
+Redhat Enterprise Linux $2 redhat-linux $2+8.0 `cat /etc/redhat-release 2>/dev/null` =~ /Red.*Hat\s+Enterprise\s+Linux\s+(Server|Client|Workstation)\s+release\s+(\d+)/i
# Redhat enterprise desktop
Redhat Linux Desktop $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Desktop\s+release\s+(\S+)/i || `cat /etc/redhat-release 2>/dev/null` =~ /ES\s+release\s+(\S+)/i
# Redhat clones
AlphaCore Linux $1 redhat-linux 11.0 `cat /etc/alphacore-release 2>/dev/null` =~ /Alpha\s*Core\s+release\s+(\S+)\s/i
X/OS Linux $1 redhat-linux sprintf("%.1f", 9.0+$1) `cat /etc/redhat-release /etc/fedora-release 2>/dev/null` =~ /X\/OS.*release\s(\S+)\s/i
-Asianux $1 redhat-linux 10.0 `cat /etc/release /etc/asianux-release 2>/dev/null` =~ /Asianux\s+release\s+(\S+)/i
Haansoft Linux $1 redhat-linux 10.0 `cat /etc/Haansoft-release 2>/dev/null` =~ /Haansoft\s+Linux\s+OS\s+release\s+(\S+)/i
cAos Linux $1 redhat-linux sprintf("%.1f", 10.0+$1) `cat /etc/caos-release 2>/dev/null` =~ /release\s+(\S+)/i
+Wind River Linux 3.0 redhat-linux 18.0 `cat /etc/wrs-release 2>/dev/null` =~ /Wind\s+River\s+Linux\s+3\.0/
+Wind River Linux 2.0 redhat-linux 16.0 `cat /etc/wrs-release 2>/dev/null` =~ /Wind\s+River\s+Linux\s+2\.0/
+
+# Amazon Linux
+Amazon Linux $1 redhat-linux 20.0 `cat /etc/system-release 2>/dev/null` =~ /Amazon\s+Linux.*\s2011/
# Free Redhat Linux and Fedora
Redhat Linux $1 redhat-linux $1 `cat /etc/redhat-release 2>/dev/null` =~ /red.*hat.*release\s+(\S+)/i && `cat /etc/redhat-release 2>/dev/null` !~ /[eE]nterprise|AS|ES|WS|[aA]dvanced/
# Slackware clones
White Dwarf Linux 2.1.0 slackware-linux 8.1 `cat /tmp/wd/version 2>/dev/null` =~ /2\.1\.0/
-Slamd64 Linux $1 slackware-linux 11.1 `cat /etc/slamd64-version 2>/dev/null` =~ /([0-9\.]+)/
+Slamd64 Linux $1 slackware-linux 11.1 `cat /etc/slamd64-version 2>/dev/null` =~ /\s([0-9\.]+)/
# Slackware Linux
-Slackware Linux $1 slackware-linux $1 `cat /etc/slackware-version 2>/dev/null` =~ /([0-9\.]+)/
+Slackware Linux $1 slackware-linux $1 `cat /etc/slackware-version 2>/dev/null` =~ /Slackware ([0-9\.]+)/i
# Debian clones
Xandros Linux 2.0 debian-linux 3.0 $etc_issue =~ /Xandros.*\s2\.0/i
APLINUX 1.3 debian-linux 3.1 $etc_issue =~ /APLINUX.*1\.3/i
BigBlock $1 suse-linux 8.2 `cat /etc/bigblock-revision 2>/dev/null` =~ /Version:\s(1[0-9\.-]+)\s/i
BigBlock $1 debian-linux 3.0 `cat /etc/bigblock-revision 2>/dev/null` =~ /Version:\s(2[0-9\.-]+)\s/i
+Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\sgutsy/i
+Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\s(7\.[0-9\.]+)\s/i
+Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\s(8\.[0-9\.]+)\s/i
+Ubuntu Linux $1 debian-linux 5.0 $etc_issue =~ /Ubuntu.*\s(9\.[0-9\.]+)\s/i
+Ubuntu Linux $1 debian-linux 5.0 $etc_issue =~ /Ubuntu.*\s(10\.[0-9\.]+)\s/i
+Ubuntu Linux $1 debian-linux 6.0 $etc_issue =~ /Ubuntu.*\s(11\.[0-9\.]+)\s/i || $etc_issue =~ /Ubuntu\s+natty/i
Ubuntu Linux $1 debian-linux 3.1 $etc_issue =~ /Ubuntu.*\s([0-9\.]+)\s/i
+Mepis Linux $1 debian-linux $1 $etc_issue =~ /MEPIS/ && `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/
+Mepis Linux $1 debian-linux 4.0 $etc_issue =~ /MEPIS/ && `cat /etc/debian_version 2>/dev/null` =~ /(stable)/
+
+# Linux Mint (Mint should be before Debian to avoid false-positive)
+Linux Mint 6 debian-linux 5.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 6 Felicia"/
+Linux Mint 7 debian-linux 5.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 7 Gloria"/
+Linux Mint 8 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 8 Helena"/
+Linux Mint 9 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 9 Isadora"/
+Linux Mint 10 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 10 Julia"/
+Linux Mint 11 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 11 Katya"/
# Debian Linux versions with numbers
-Debian Linux $1 debian-linux $1 $etc_issue =~ /Debian.*\s([0-9\.]+)\s/i
-Debian Linux 3.2 debian-linux 3.2 $etc_issue =~ /Debian.*\stesting\/unstable\s/i
-Debian Linux 4.0 debian-linux 4.0 $etc_issue =~ /Debian.*lenny\/sid\s/i
+Debian Linux $1 debian-linux $1 $etc_issue =~ /Debian.*\s([0-9\.]+)\s/i || `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/
+Debian Linux 2.0 debian-linux 2.0 `cat /etc/debian_version 2>/dev/null` =~ /^(hamm)/i
+Debian Linux 2.1 debian-linux 2.1 `cat /etc/debian_version 2>/dev/null` =~ /^(slink)/i
+Debian Linux 2.2 debian-linux 2.2 `cat /etc/debian_version 2>/dev/null` =~ /^(potato)/i
+Debian Linux 3.0 debian-linux 3.0 `cat /etc/debian_version 2>/dev/null` =~ /^(woody)/i
+Debian Linux 3.1 debian-linux 3.1 `cat /etc/debian_version 2>/dev/null` =~ /^(sarge)/i
+Debian Linux 4.0 debian-linux 4.0 `cat /etc/debian_version 2>/dev/null` =~ /^(etch)/i
+Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(lenny)/i
+Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(squeeze)/i
+Debian Linux 7.0 debian-linux 7.0 `cat /etc/debian_version 2>/dev/null` =~ /^(wheezy)/i
+# These change sometimes...
+Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(stable)/i
+# These don't have a version number yet, so we use the one from "stable"
+Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(testing)/i
+Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(unstable)/i
+Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(sid)/i
# SuSE enterprise versions
SuSE OpenExchange Linux $1 suse-linux 8.2 `cat /etc/SLOX-release 2>/dev/null` =~ /VERSION\s+=\s+(\S+)/i
# Mandrake derivatives
pclinuxos Linux 2005 mandrake-linux 10.0 `cat /etc/mandrake-release 2>/dev/null` =~ /pclinuxos\s+Linux\s+release\s+2005/i
-pclinuxos Linux 2006 mandrake-linux 10.0 `cat /etc/mandrake-release 2>/dev/null` =~ /pclinuxos\s+Linux\s+release\s+2006/i
-pclinuxos Linux 2007 mandrake-linux 10.0 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2007/i
+pclinuxos Linux 2006 mandrake-linux 10.2 `cat /etc/mandrake-release 2>/dev/null` =~ /pclinuxos\s+Linux\s+release\s+2006/i
+pclinuxos Linux 2007 mandrake-linux 10.3 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2007/i
+pclinuxos Linux 2008 mandrake-linux 10.4 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2008/i
+pclinuxos Linux 2009 mandrake-linux 10.5 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2009/i
# Mandrake Linux
Mandrake Linux 5.3 redhat-linux 5.0 $etc_issue =~ /Mandrake\s+release\s+5\.3/i
Mandrake Linux 7.0 redhat-linux 6.1 $etc_issue =~ /Mandrake\s+release\s+7\.0/i
Mandrake Linux 7.1 redhat-linux 6.2 $etc_issue =~ /Mandrake\s+release\s+7\.1/i
Mandrake Linux $1 mandrake-linux $1 `cat /etc/mandrake-release 2>/dev/null` =~ /Mandrake.*?([0-9\.]+)/i || $etc_issue =~ /Mandrake\s+release\s+([0-9\.]+)/i || $etc_issue =~ /Mandrakelinux\s+release\s+([0-9\.]+)/i
+
+# Mandriva Linux
Mandriva Linux $2 mandrake-linux 10.2 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2006\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i
Mandriva Linux $2 mandrake-linux 10.3 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i
+Mandriva Linux $2 mandrake-linux 10.4 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2008\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2008\.\d+)/i
+Mandriva Linux $2 mandrake-linux 10.5 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2009\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2009\.\d+)/i
+Mandriva Linux $2 mandrake-linux $2 $etc_issue =~ /(Mandriva).*(20\d\d\.\d+)/i || `cat /etc/mandriva-release 2>/dev/null` =~ /(Mandriva).*(20\d\d\.\d+)/i
+
+# Mandriva Corporate
+Mandrake Linux Corporate Server $i mandrake-linux $i $etc_issue =~ /Mandrake\s+Linux\s+Corporate\s+Server\s+release\s+([0-9\.]+)/i
+Mandriva Linux Enterprise Server 5.0 mandrake-linux 2009 $etc_issue =~ /Mandriva\s+Linux\s+Enterprise\s+Server\s+release\s+5\.0\s+\(Official\)\s+for\s+(i586|x86_64)/i
# Conectiva Linux (now subsumed into Mandrake?)
Conectiva Linux 3.0 redhat-linux 5.2 $etc_issue =~ /Conectiva.*Linux.*3\.0/i
Caixa Magica 8.1 suse-linux 8.0 `cat /etc/CxM-release 2>/dev/null` =~ /8\.1/ || $etc_issue =~ /Caixa\s+8\.1\s/i
Caixa Magica 10.0 suse-linux 9.2 `cat /etc/CxM-release 2>/dev/null` =~ /10\.0/ || $etc_issue =~ /Caixa\s+10\.0\s/i
+# openmamba Linux
+openmamba Linux $1 openmamba-linux $1 `cat /etc/openmamba-release 2>/dev/null` =~ /openmamba\s+release\s+(\S+)/i
+
# All FreeBSD versions
-FreeBSD $1 freebsd $1 $uname =~ /FreeBSD.*?\s([0-9\.]+)/i
+FreeBSD $1 freebsd $1 $uname =~ /FreeBSD.*?\s([0-9]+\.[0-9\.]+)/i
# FreeBSD clones
DragonFly BSD 1.0 freebsd 4.8 $uname =~ /DragonFly.*?\s1\.0A/i
NetBSD 1.6 netbsd 1.6 $uname =~ /NetBSD.*1\.6/i
NetBSD 2.0 netbsd 2.0 $uname =~ /NetBSD.*2\.0/i
NetBSD 3.0 netbsd 3.0 $uname =~ /NetBSD.*3\.0/i
+NetBSD 4.0 netbsd 4.0 $uname =~ /NetBSD.*4\.0/i
+NetBSD $1 netbsd $1 `uname` =~ /NetBSD/ && `uname -r` =~ /([\d.]+)/
# BSDI (may not be detected properly)
BSDI $1 freebsd $1 $uname =~ /BSDI.*\s([0-9\.]+)/i
Mac OS X 10.2 macos 6.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.2/i
Mac OS X 10.3 macos 7.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.3/i
Mac OS X 10.4 macos 8.1 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.4/i
+Mac OS X 10.5 macos 9.2 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.5/i
# Darwin, the open source version of OS X
Darwin $1 macos $1 $uname =~ /Darwin.*\s([0-9\.]+)/