You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.0 KiB
102 lines
3.0 KiB
#!/bin/dash
|
|
|
|
. ./utils.sh
|
|
|
|
##
|
|
# if we are on a linux try to figure out wich distribution we are
|
|
# running.
|
|
# First look what kind of realease file we have:
|
|
#
|
|
# 00 01 - Novell SuSE ---> /etc/SuSE-release
|
|
# 00 02 - Red Hat ---> /etc/redhat-release, /etc/redhat_version
|
|
# 00 04 - Fedora ---> /etc/fedora-release
|
|
# 00 08 - Slackware ---> /etc/slackware-release, /etc/slackware-version
|
|
# 00 10 - Debian ---> /etc/debian_release, /etc/debian_version
|
|
# 00 20 - Mandrake ---> /etc/mandrake-release
|
|
# 00 40 - Yellow dog ---> /etc/yellowdog-release
|
|
# 00 80 - Sun JDS ---> /etc/sun-release
|
|
# 01 00 - Solaris/Sparc ---> /etc/release
|
|
# 02 00 - Gentoo ---> /etc/gentoo-release
|
|
#
|
|
# Here I follow a pessimistic way because I prefere to have no
|
|
# identification at all over a wrong one...so I check for all these files.
|
|
# If I can't find any or find multiple of them I assume this system
|
|
# as unidentified. Anyway when I found one I still check the content...
|
|
# Here I need some help as I don't know the valid content of these files.
|
|
# For now I assume that at least the name of the distribution is in
|
|
# the file.
|
|
#
|
|
gather_dist_info() {
|
|
[ -z "${DIST}" ] || return
|
|
|
|
case "${OS}" in
|
|
*Linux*)
|
|
local SUSE=1
|
|
local REDHAT=2
|
|
local FEDORA=4
|
|
local SLACKWARE=8
|
|
local DEBIAN=16
|
|
local MANDRAKE=32
|
|
local YELLOWDOG=64
|
|
local SUNJDS=128
|
|
local GENTOO=256
|
|
local SOLARIS=512
|
|
|
|
local LAST=${SOLARIS}
|
|
|
|
local CHK=$((SUSE|REDHAT|FEDORA|SLACKWARE|DEBIAN|MANDRAKE|\
|
|
YELLOWDOG|SUNJDS|GENTOO|SOLARIS))
|
|
|
|
eval local FILES_${SUSE}=\'/etc/SuSE-release\'
|
|
eval local FILES_${REDHAT}=\'/etc/redhat-release /etc/redhat_version\'
|
|
eval local FILES_${FEDORA}=\'/etc/fedora-release\'
|
|
eval local FILES_${SLACKWARE}=\'/etc/slackware-release /etc/slackware-version\'
|
|
eval local FILES_${DEBIAN}=\'/etc/debian_release /etc/debian_version\'
|
|
eval local FILES_${MANDRAKE}=\'/etc/mandrake-release\'
|
|
eval local FILES_${YELLOWDOG}=\'/etc/yellowdog-release\'
|
|
eval local FILES_${SUNJDS}=\'/etc/sun-release\'
|
|
eval local FILES_${GENTOO}=\'/etc/gentoo-release\'
|
|
eval local FILES_${SOLARIS}=\'/etc/release\'
|
|
|
|
local CUR=1
|
|
while [ ${CUR} -le ${LAST} ]
|
|
do
|
|
local DIR
|
|
|
|
eval local FILES=\"\${FILES_${CUR}}\"
|
|
|
|
for DIR in ${FILES}
|
|
do
|
|
[ -f ${DIR} ] || CHK=$((CHK&~CUR))
|
|
done
|
|
|
|
CUR=$((CUR*2))
|
|
done
|
|
|
|
DIST="Unknown"
|
|
|
|
[ ${CHK} -eq ${SUSE} ] && DIST="Suse"
|
|
[ ${CHK} -eq ${REDHAT} ] && DIST="Redhat"
|
|
[ ${CHK} -eq ${FEDORA} ] && DIST="Fedora"
|
|
[ ${CHK} -eq ${SLACKWARE} ] && DIST="Slakware"
|
|
[ ${CHK} -eq ${DEBIAN} ] && DIST="Debian"
|
|
[ ${CHK} -eq ${MANDRAKE} ] && DIST="Mandrake"
|
|
[ ${CHK} -eq ${YELLOWDOG} ] && DIST="Yellowdog"
|
|
[ ${CHK} -eq ${SUNJDS} ] && DIST="Sun"
|
|
[ ${CHK} -eq ${GENTOO} ] && DIST="Gentoo"
|
|
[ ${CHK} -eq ${SOLARIS} ] && DIST="Solaris"
|
|
|
|
if [ 'Unknown' != "${DIST}" ]
|
|
then
|
|
eval ${GREP} -iq ${DIST} \${FILES_${CHK}} || DIST="Unknown"
|
|
fi
|
|
|
|
CLASSES="${CLASSES}${DIST} ";;
|
|
*)
|
|
DIST="${OS}"
|
|
esac
|
|
|
|
export DIST CLASSES
|
|
}
|
|
|
|
# vim: set ts=4 sw=4:
|