7 changed files with 618 additions and 1078 deletions
@ -1,778 +0,0 @@
|
||||
## |
||||
## OSSP platform - Unix Platform Identification |
||||
## Copyright (c) 2003 The OSSP Project <http://www.ossp.org/> |
||||
## Copyright (c) 2003 Ralf S. Engelschall <rse@engelschall.com> |
||||
## |
||||
## This file is part of OSSP platform, a Unix platform identification |
||||
## program which can be found at http://www.ossp.org/pkg/tool/platform/. |
||||
## |
||||
## This program is free software; you can redistribute it and/or modify |
||||
## it under the terms of the GNU General Public License as published by |
||||
## the Free Software Foundation; either version 2.0 of the License, or |
||||
## (at your option) any later version. |
||||
## |
||||
## This program is distributed in the hope that it will be useful, |
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||
## General Public License for more details. |
||||
## |
||||
## You should have received a copy of the GNU General Public License |
||||
## along with this library; if not, write to the Free Software |
||||
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
||||
## USA, or contact Ralf S. Engelschall <rse@engelschall.com>. |
||||
## |
||||
## platform.sh: the program (language: Bourne-Shell) |
||||
## |
||||
|
||||
# program information |
||||
prog_run="${0}" |
||||
prog_cmd="platform" |
||||
prog_name="OSSP platform" |
||||
prog_vers="0.1.0" |
||||
prog_date="30-Oct-2003" |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## COMMAND LINE PARSING |
||||
## (partly derived from GNU shtool's sh.common) |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
# the command line specification |
||||
str_usage="[-F|--format FORMAT]" |
||||
str_usage="$str_usage [-S|--sep STRING]" |
||||
str_usage="$str_usage [-C|--conc STRING]" |
||||
str_usage="$str_usage [-L|--lower]" |
||||
str_usage="$str_usage [-U|--upper]" |
||||
str_usage="$str_usage [-v|--verbose]" |
||||
str_usage="$str_usage [-c|--concise]" |
||||
str_usage="$str_usage [-n|--no-newline]" |
||||
str_usage="$str_usage [-t|--type TYPE]" |
||||
str_usage="$str_usage [-d|--debug]" |
||||
str_usage="$str_usage [-V|--version]" |
||||
str_usage="$str_usage [-h|--help]" |
||||
arg_spec="0=" |
||||
opt_spec="F:S:C:L.U.v.c.n.t:d.V.h." |
||||
opt_alias="F:format,S:sep,C:conc,L:lower,U:upper,v:verbose,c:consise,t:type,n:no-newline,d:debug,V:version,h:help" |
||||
opt_F="%{sp} (%{ap})" |
||||
opt_S=" " |
||||
opt_C="/" |
||||
opt_L=no |
||||
opt_U=no |
||||
opt_t="" |
||||
opt_v=no |
||||
opt_c=no |
||||
opt_n=no |
||||
opt_d=no |
||||
opt_V=no |
||||
opt_h=no |
||||
|
||||
# commonly used ASCII values |
||||
ASC_TAB=" " |
||||
ASC_NL=" |
||||
" |
||||
|
||||
# parse argument specification string |
||||
eval `echo $arg_spec |\ |
||||
sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` |
||||
|
||||
# parse option specification string |
||||
eval `echo $opt_spec |\ |
||||
sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` |
||||
|
||||
# parse option alias string |
||||
eval `echo $opt_alias |\ |
||||
tr 'x-' 'x_' | sed -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'` |
||||
|
||||
# interate over argument line |
||||
opt_PREV='' |
||||
while [ $# -gt 0 ]; do |
||||
# special option stops processing |
||||
if [ ".$1" = ".--" ]; then |
||||
shift |
||||
break |
||||
fi |
||||
|
||||
# determine option and argument |
||||
opt_ARG_OK=no |
||||
if [ ".$opt_PREV" != . ]; then |
||||
# merge previous seen option with argument |
||||
opt_OPT="$opt_PREV" |
||||
opt_ARG="$1" |
||||
opt_ARG_OK=yes |
||||
opt_PREV='' |
||||
else |
||||
# split argument into option and argument |
||||
case "$1" in |
||||
--[a-zA-Z0-9]*=*) |
||||
eval `echo "x$1" |\ |
||||
sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'` |
||||
opt_STR=`echo $opt_OPT | tr 'x-' 'x_'` |
||||
eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" |
||||
;; |
||||
--[a-zA-Z0-9]*) |
||||
opt_OPT=`echo "x$1" | cut -c4-` |
||||
opt_STR=`echo $opt_OPT | tr 'x-' 'x_'` |
||||
eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" |
||||
opt_ARG='' |
||||
;; |
||||
-[a-zA-Z0-9]*) |
||||
eval `echo "x$1" |\ |
||||
sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ |
||||
-e 's/";\(.*\)$/"; opt_ARG="\1"/'` |
||||
;; |
||||
-[a-zA-Z0-9]) |
||||
opt_OPT=`echo "x$1" | cut -c3-` |
||||
opt_ARG='' |
||||
;; |
||||
*) |
||||
break |
||||
;; |
||||
esac |
||||
fi |
||||
|
||||
# eat up option |
||||
shift |
||||
|
||||
# determine whether option needs an argument |
||||
eval "opt_MODE=\$opt_MODE_${opt_OPT}" |
||||
if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then |
||||
if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then |
||||
opt_PREV="$opt_OPT" |
||||
continue |
||||
fi |
||||
fi |
||||
|
||||
# process option |
||||
case $opt_MODE in |
||||
'.' ) |
||||
# boolean option |
||||
eval "opt_${opt_OPT}=yes" |
||||
;; |
||||
':' ) |
||||
# option with argument (multiple occurances override) |
||||
eval "opt_${opt_OPT}=\"\$opt_ARG\"" |
||||
;; |
||||
'+' ) |
||||
# option with argument (multiple occurances append) |
||||
eval "opt_${opt_OPT}=\"\$opt_${opt_OPT}\${ASC_NL}\$opt_ARG\"" |
||||
;; |
||||
* ) |
||||
echo "${prog_cmd}:Error: unknown option: \`$opt_OPT'" 1>&2 |
||||
echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
done |
||||
if [ ".$opt_PREV" != . ]; then |
||||
echo "${prog_cmd}:Error: missing argument to option \`$opt_PREV'" 1>&2 |
||||
echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
# process help option |
||||
if [ ".$opt_h" = .yes ]; then |
||||
echo "Usage: ${prog_run} ${str_usage}" |
||||
exit 0 |
||||
fi |
||||
|
||||
# process version option |
||||
if [ ".$opt_V" = .yes ]; then |
||||
echo "${prog_name} ${prog_vers} (${prog_date})" |
||||
exit 0 |
||||
fi |
||||
|
||||
# complain about incorrect number of arguments |
||||
case $arg_MODE in |
||||
'=' ) |
||||
if [ $# -ne $arg_NUMS ]; then |
||||
echo "${prog_cmd}:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 |
||||
echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 |
||||
exit 1 |
||||
fi |
||||
;; |
||||
'+' ) |
||||
if [ $# -lt $arg_NUMS ]; then |
||||
echo "${prog_cmd}:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 |
||||
echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 |
||||
exit 1 |
||||
fi |
||||
;; |
||||
esac |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## OPTION POST-PROCESSING |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
if [ ".$opt_t" != . ]; then |
||||
case "$opt_t" in |
||||
binary ) |
||||
# binary package id (OpenPKG RPM) |
||||
opt_F="%<ap>-%<sp>" |
||||
opt_L=yes |
||||
opt_S="" |
||||
opt_C="+" |
||||
;; |
||||
build ) |
||||
# build time checking (OpenPKG RPM) |
||||
opt_F="%<at>-%<st>" |
||||
opt_L=yes |
||||
opt_S="" |
||||
opt_C="+" |
||||
;; |
||||
gnu ) |
||||
# GNU config.guess style <arch>-<vendor>-<os><osversion> |
||||
opt_F="%<at>-unknown-%<st>" |
||||
opt_L=yes |
||||
opt_S="" |
||||
opt_C="+" |
||||
;; |
||||
web ) |
||||
# non-whitespace HTTP Server-header id |
||||
opt_F="%<sp>-%<ap>" |
||||
opt_S="/" |
||||
opt_C="+" |
||||
;; |
||||
summary) |
||||
# human readable verbose summary information |
||||
opt_F="Class: %[sc] (%[ac])\\nProduct: %[sp] (%[ap])\\nTechnology: %[st] (%[at])" |
||||
opt_S=" " |
||||
opt_C="/" |
||||
;; |
||||
all-in-one ) |
||||
# full-table all-in-one information |
||||
opt_F="" |
||||
opt_F="${opt_F}concise architecture class: %<ac>\\n" |
||||
opt_F="${opt_F}regular architecture class: %{ac}\\n" |
||||
opt_F="${opt_F}verbose architecture class: %[ac]\\n" |
||||
opt_F="${opt_F}concise architecture product: %<ap>\\n" |
||||
opt_F="${opt_F}regular architecture product: %{ap}\\n" |
||||
opt_F="${opt_F}verbose architecture product: %[ap]\\n" |
||||
opt_F="${opt_F}concise architecture technology: %<at>\\n" |
||||
opt_F="${opt_F}regular architecture technology: %{at}\\n" |
||||
opt_F="${opt_F}verbose architecture technology: %[at]\\n" |
||||
opt_F="${opt_F}concise system class: %<sc>\\n" |
||||
opt_F="${opt_F}regular system class: %{sc}\\n" |
||||
opt_F="${opt_F}verbose system class: %[sc]\\n" |
||||
opt_F="${opt_F}concise system product: %<sp>\\n" |
||||
opt_F="${opt_F}regular system product: %{sp}\\n" |
||||
opt_F="${opt_F}verbose system product: %[sp]\\n" |
||||
opt_F="${opt_F}concise system technology: %<st>\\n" |
||||
opt_F="${opt_F}regular system technology: %{st}\\n" |
||||
opt_F="${opt_F}verbose system technology: %[st]" |
||||
;; |
||||
* ) |
||||
echo "${prog_cmd}:Error: invalid type \`$opt_t'" 1>&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
fi |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## UTILITY FUNCTIONS |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
# map string to lower case |
||||
util_lower () { |
||||
echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' |
||||
} |
||||
|
||||
# map string to upper case |
||||
util_upper () { |
||||
echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
||||
} |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## ASSEMBLE INITIAL INFORMATION |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
UNAME_MACHINE=`(uname -m) 2>/dev/null` ||\ |
||||
UNAME_MACHINE=`(uname -p) 2>/dev/null` ||\ |
||||
UNAME_MACHINE='unknown' |
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` ||\ |
||||
UNAME_SYSTEM='unknown' |
||||
UNAME_RELEASE=`(uname -r) 2>/dev/null` ||\ |
||||
UNAME_RELEASE=`(uname -v) 2>/dev/null` ||\ |
||||
UNAME_RELEASE='unknown' |
||||
|
||||
UNAME="${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}" |
||||
|
||||
if [ ".$opt_d" = .yes ]; then |
||||
echo "uname => ${UNAME}" 1>&2 |
||||
fi |
||||
|
||||
AC=""; AP=""; AT="" |
||||
SC=""; SP=""; ST="" |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## DISPATCH INTO PLATFORMS |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
case "${UNAME}" in |
||||
|
||||
# FreeBSD |
||||
*:FreeBSD:* ) |
||||
# determine architecture |
||||
AC="${UNAME_MACHINE}" |
||||
case "${AC}" in |
||||
i386 ) AC="iX86" ;; |
||||
esac |
||||
AP="${AC}" |
||||
AT=`(/sbin/sysctl -n hw.model) 2>&1` |
||||
case "${AT}" in |
||||
*"Xeon"* | *"Pentium Pro"* | *"Cyrix 6x86MX"* | *"Pentium II"* | *"Pentium III"* | *"Pentium 4"* | *"Celeron"* ) AT="i686" ;; |
||||
*"Pentium"* ) AT="i586" ;; *"i486[SD]X"* | *"Cyrix 486"* | *"Cyrix [56]x86"* | *"Blue Lightning" | *"Cyrix 486S/DX" ) AT="i486" ;; |
||||
*"i386[SD]X"* | *"NexGen 586"* ) AT="i386" ;; |
||||
* ) AT="${AP}" ;; |
||||
esac |
||||
# determine system |
||||
r=`echo "${UNAME_RELEASE}" |\ |
||||
sed -e 's;[()];;' -e 's/\(-.*\)$/[\1]/'` |
||||
ST="FreeBSD ${r}" |
||||
SP="${ST}" |
||||
case "${r}" in |
||||
1.* ) SC="4.3BSD" ;; |
||||
* ) SC="4.4BSD" ;; |
||||
esac |
||||
;; |
||||
|
||||
# NetBSD |
||||
*:NetBSD:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
AP="${AT}" |
||||
case "${AP}" in |
||||
i[3-6]86 ) AP="iX86" ;; |
||||
esac |
||||
AC="${AP}" |
||||
# determine system |
||||
r=`echo "${UNAME_RELEASE}" | sed -e 's/\(-.*\)$/[\1]/'` |
||||
ST="NetBSD ${r}" |
||||
SP="${ST}" |
||||
case "${r}" in |
||||
0.* ) SC="4.3BSD" ;; |
||||
* ) SC="4.4BSD" ;; |
||||
esac |
||||
;; |
||||
|
||||
# OpenBSD |
||||
*:OpenBSD:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
AP="${AT}" |
||||
case "${AP}" in |
||||
i[3-6]86 ) AP="iX86" ;; |
||||
esac |
||||
AC="${AP}" |
||||
# determine system |
||||
r=`echo "${UNAME_RELEASE}" | sed -e 's/\(-.*\)$/[\1]/'` |
||||
ST="OpenBSD ${r}" |
||||
SP="${ST}" |
||||
SC="4.4BSD" |
||||
;; |
||||
|
||||
# GNU/Linux |
||||
*:Linux:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
case "${AT}" in |
||||
ia64 ) AT="IA64" ;; |
||||
x86_64 ) AT='AMD64' ;; |
||||
parisc ) AT="HPPA32" ;; |
||||
parisc64 ) AT="HPPA64" ;; |
||||
esac |
||||
AP="${AT}" |
||||
case "${AP}" in |
||||
i[3-6]86 ) AP='iX86' ;; |
||||
esac |
||||
AC="${AP}" |
||||
# determine system |
||||
v_kern=`echo "${UNAME_RELEASE}" |\ |
||||
sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'` |
||||
v_libc=`(strings /lib/libc.so.* | grep '^GLIBC_' | sed -e 's/^GLIBC_//' |\ |
||||
sort -n | tail -1 | sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/') 2>/dev/null` |
||||
ST="GNU/<Linux >${v_libc}/<${v_kern}>" |
||||
if [ -f /etc/lsb-release ]; then |
||||
eval `( . /etc/lsb-release |
||||
echo "SC=\"LSB${LSB_VERSION}\"" |
||||
if [ ".${DISTRIB_ID}" != . -a ".${DISTRIB_RELEASE}" != . ]; then |
||||
echo "SP=\"${DISTRIB_ID} ${DISTRIB_RELEASE}\"" |
||||
fi |
||||
) 2>/dev/null` |
||||
fi |
||||
if [ ".$SP" = . ]; then |
||||
for tagfile in x \ |
||||
`cd /etc && \ |
||||
/bin/ls *[_-]release *[_-]version 2>/dev/null | \ |
||||
sed -e '/^redhat-release$/d' -e '/^lsb-release$/d'; \ |
||||
echo redhat-release lsb-release` |
||||
do |
||||
[ ".${tagfile}" = .x ] && continue |
||||
[ ! -f "/etc/${tagfile}" ] && continue |
||||
n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'` |
||||
v=`(grep VERSION /etc/${tagfile}; cat /etc/${tagfile}) | grep '[0-9]' | head -1 |\ |
||||
sed -e 's/^/#/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#.*$//'` |
||||
t="" |
||||
if [ ".${n}" = .redhat ]; then |
||||
t=`head -1 /etc/${tagfile} | \ |
||||
sed -e 's/^/#/' \ |
||||
-e 's/^#.*Red Hat Enterprise Linux \([AEW]S\).*$/\1/' \ |
||||
-e 's/^#.*$//'` |
||||
fi |
||||
case "`util_lower ${n}`" in |
||||
debian ) n="Debian[ GNU/Linux]" ;; |
||||
fedora ) n="Fedora[ GNU/Linux]" ;; |
||||
redhat ) n="RedHat[ Linux]" ;; |
||||
suse ) n="SuSE[ Linux]" ;; |
||||
mandrake ) n="Mandrake[ Linux]" ;; |
||||
gentoo ) n="Gentoo[ Linux]" ;; |
||||
slackware ) n="Slackware[ Linux]" ;; |
||||
turbolinux ) n="TurboLinux" ;; |
||||
unitedlinux ) n="UnitedLinux" ;; |
||||
* ) n="${n}[ GNU/Linux]" ;; |
||||
esac |
||||
if [ ".${t}" != . ]; then |
||||
n="${n} ${t}" |
||||
fi |
||||
SP="$n $v" |
||||
break |
||||
done |
||||
fi |
||||
[ ".$SP" = . ] && SP="${ST}" |
||||
[ ".$SC" = . ] && SC="LSB" |
||||
;; |
||||
|
||||
# Sun Solaris |
||||
*:SunOS:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
case "${AT}" in |
||||
i86pc ) AT="iX86" ;; |
||||
esac |
||||
AP="${AT}" |
||||
case "${AP}" in |
||||
sun4[cdm] ) AP="SPARC32" ;; |
||||
sun4u ) AP="SPARC64" ;; |
||||
sun4* ) AP="SPARC" ;; |
||||
esac |
||||
AC="${AP}" |
||||
case "${AC}" in |
||||
SPARC* ) AC="SPARC" ;; |
||||
esac |
||||
# determine system |
||||
ST="[Sun ]SunOS ${UNAME_RELEASE}" |
||||
v=`echo "${UNAME_RELEASE}" |\ |
||||
sed -e 's;^4\.;1.;' \ |
||||
-e 's;^5\.\([0-6]\)[^0-9]*$;2.\1;' \ |
||||
-e 's;^5\.\([0-9][0-9]*\).*;\1;'` |
||||
SP="[Sun ]Solaris $v" |
||||
case "${UNAME_RELEASE}" in |
||||
4.* ) SC="4.3BSD" ;; |
||||
5.* ) SC="SVR4" ;; |
||||
esac |
||||
;; |
||||
|
||||
# SCO UnixWare |
||||
*:UnixWare:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
case "${AT}" in |
||||
i[3-6]86 | ix86at ) AT="iX86" ;; |
||||
esac |
||||
AP="${AT}" |
||||
# determine system |
||||
v=`/sbin/uname -v` |
||||
ST="[SCO ]UnixWare ${v}" |
||||
SP="${ST}" |
||||
SC="SVR${UNAME_RELEASE}" |
||||
;; |
||||
|
||||
# QNX |
||||
*:QNX:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
case "${AT}" in |
||||
x86pc ) AT="iX86" ;; |
||||
esac |
||||
AP="${AT}" |
||||
# determine system |
||||
v="${UNAME_RELEASE}" |
||||
ST="QNX[ Neutrino RTOS] ${v}" |
||||
v=`echo "${v}" | sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;'` |
||||
SP="QNX[ Neutrino RTOS] ${v}" |
||||
SC="QNX" |
||||
;; |
||||
|
||||
# SGI IRIX |
||||
*:IRIX*:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
AP="${AT}" |
||||
case "${AP}:${UNAME_SYSTEM}" in |
||||
IP*:IRIX64 ) AP="MIPS64" ;; |
||||
IP*:* ) AP="MIPS" ;; |
||||
esac |
||||
AC="${AP}" |
||||
# determine system |
||||
v=`(/bin/uname -R || /bin/uname -r) 2>/dev/null | sed -e 's;[0-9.]* ;;'` |
||||
ST="[SGI ]IRIX ${v}" |
||||
v="${UNAME_RELEASE}" |
||||
SP="[SGI ]IRIX ${v}" |
||||
SC="4.2BSD/SVR3" |
||||
;; |
||||
|
||||
# HP HP-UX |
||||
*:HP-UX:* ) |
||||
# determine architecture |
||||
AT="${UNAME_MACHINE}" |
||||
case "${AT}" in |
||||
ia64 ) AT="IA64" ;; |
||||
9000/[34]?? ) AT=M68K ;; |
||||
9000/[678][0-9][0-9]) |
||||
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` |
||||
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` |
||||
case "${sc_cpu_version}" in |
||||
523 ) AT="HPPA1.0" ;; |
||||
528 ) AT="HPPA1.1" ;; |
||||
532 ) AT="HPPA2.0" |
||||
case "${sc_kernel_bits}" in |
||||
32 ) AT="${AT}n" ;; |
||||
64 ) AT="${AT}w" ;; |
||||
esac |
||||
;; |
||||
esac |
||||
;; |
||||
esac |
||||
AP="${AT}" |
||||
case "${AP}" in |
||||
HPPA* ) AP="HPPA" ;; |
||||
esac |
||||
AC="${AP}" |
||||
# determine system |
||||
v=`echo "${UNAME_RELEASE}" | sed -e 's;^[^0-9]*;;'` |
||||
ST="[HP ]<HP>-<UX> ${v}" |
||||
SP="${ST}" |
||||
case "${v}" in |
||||
10.* ) SC="SVR4.2" ;; |
||||
[7-9]* ) SC="SVR4" ;; |
||||
esac |
||||
;; |
||||
|
||||
# HP Tru64 (OSF1) |
||||
*:OSF1:* ) |
||||
# determine architecture |
||||
AP="${UNAME_MACHINE}" |
||||
case "${AP}" in |
||||
alpha ) AP="Alpha" ;; |
||||
esac |
||||
alpha_type=`(/usr/sbin/psrinfo -v) 2>/dev/null |\ |
||||
sed -n -e 's/^.*The alpha \([^ ][^ ]*\).*processor.*$/\1/p' | head -n 1` |
||||
AT="${AP}${alpha_type}" |
||||
AC="${AP}" |
||||
# determine system |
||||
v=`echo "${UNAME_RELEASE}" | sed -e 's;^[VTX];;'` |
||||
ST="[HP ]Tru64 ${v}" |
||||
SP="${ST}" |
||||
SC="OSF1" |
||||
;; |
||||
|
||||
# IBM AIX |
||||
*:AIX:* ) |
||||
cpu_arch=rs6000 |
||||
if [ -x /usr/sbin/lsdev -a -x /usr/sbin/lsattr ]; then |
||||
cpu_id=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` |
||||
if [ ".`/usr/sbin/lsattr -El ${cpu_id} | grep -i powerpc`" != . ]; then |
||||
cpu_arch=powerpc |
||||
fi |
||||
fi |
||||
if [ -x /usr/bin/oslevel ]; then |
||||
os_level=`/usr/bin/oslevel` |
||||
else |
||||
os_level="`uname -r`.`uname -v`" |
||||
fi |
||||
os_level=`echo "${os_level}" |\ |
||||
sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(\.[0-9][0-9]*\)\(.*\)$;<\1>\2[\3];' \ |
||||
-e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(.*\)$;<\1>\2;'` |
||||
AT="${cpu_arch}" |
||||
AP="${AT}" |
||||
AC="${AP}" |
||||
ST="[IBM ]AIX ${os_level}" |
||||
SP="${ST}" |
||||
case "${os_level}" in |
||||
[12]* ) SC="SVR2" ;; |
||||
* ) SC="SVR4" ;; |
||||
esac |
||||
;; |
||||
|
||||
# Apple MacOS X Darwin |
||||
*:Darwin:* ) |
||||
AT=`uname -p` |
||||
case "${AT}" in |
||||
powerpc ) AT="PPC" ;; |
||||
esac |
||||
AP="${AT}" |
||||
AC="${AP}" |
||||
case "${AC}" in |
||||
i?86 ) AC="iX86" ;; |
||||
esac |
||||
ST="[Apple ]${UNAME_SYSTEM} ${UNAME_RELEASE}" |
||||
SP="${ST}" |
||||
SC="4.4BSD/Mach3" |
||||
;; |
||||
|
||||
# TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO |
||||
# *:XXX:* ) |
||||
# ... |
||||
# ;; |
||||
|
||||
# ...A STILL UNKNOWN PLATFORM... |
||||
* ) |
||||
AT=`echo "${UNAME_MACHINE}" | sed -e "s; ;${opt_C};g"` |
||||
AP="${AT}" |
||||
AC="${AP}" |
||||
v=`echo "${UNAME_RELEASE}" |\ |
||||
sed -e 's/^/#/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ |
||||
-e 's/^#.*$/?/'` |
||||
ST="${UNAME_SYSTEM} ${v}" |
||||
SP="${ST}" |
||||
SC="${SP}" |
||||
;; |
||||
|
||||
esac |
||||
|
||||
## _________________________________________________________________________ |
||||
## |
||||
## PROVIDE RESULT OUTPUT |
||||
## _________________________________________________________________________ |
||||
## |
||||
|
||||
# provide fallback values |
||||
[ ".$AT" = . ] && AT="${AP:-${AC}}" |
||||
[ ".$AP" = . ] && AP="${AT:-${AC}}" |
||||
[ ".$AC" = . ] && AC="${AP:-${AT}}" |
||||
[ ".$ST" = . ] && ST="${SP:-${SC}}" |
||||
[ ".$SP" = . ] && SP="${ST:-${SC}}" |
||||
[ ".$SC" = . ] && SC="${SP:-${ST}}" |
||||
|
||||
# support explicit enforced verbose/concise output |
||||
if [ ".$opt_v" = .yes ]; then |
||||
opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%[\1]/g'` |
||||
elif [ ".$opt_c" = .yes ]; then |
||||
opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%<\1>/g'` |
||||
fi |
||||
|
||||
# provide verbose and concise variants |
||||
AC_V=""; AC_N=""; AC_C="" |
||||
AP_V=""; AP_N=""; AP_C="" |
||||
AT_V=""; AT_N=""; AT_C="" |
||||
SC_V=""; SC_N=""; SC_C="" |
||||
SP_V=""; SP_N=""; SP_C="" |
||||
ST_V=""; ST_N=""; ST_C="" |
||||
for var_lc in at ap ac st sp sc; do |
||||
case "$opt_F" in |
||||
*"%[${val_lc}]"* | *"%{${val_lc}}"* | *"%${val_lc}"* | *"%<${val_lc}>"* ) |
||||
var_uc=`util_upper "$var_lc"` |
||||
eval "val=\"\$${var_uc}\"" |
||||
val_V=""; val_N=""; val_C="" |
||||
case "$opt_F" in |
||||
*"%[${var_lc}]"* ) |
||||
val_V=`echo ":$val" | \ |
||||
sed -e 's/^://' \ |
||||
-e 's;\[\([^]]*\)\];\1;g' \ |
||||
-e 's;<\([^>]*\)>;\1;g' \ |
||||
-e "s; ;§§;g" \ |
||||
-e "s;/;%%;g" \ |
||||
-e "s;§§;${opt_S};g" \ |
||||
-e "s;%%;${opt_C};g"` |
||||
eval "${var_uc}_V=\"\${val_V}\"" |
||||
;; |
||||
esac |
||||
case "$opt_F" in |
||||
*"%{${var_lc}}"* | *"%${var_lc}"* ) |
||||
val_N=`echo ":$val" | \ |
||||
sed -e 's/^://' \ |
||||
-e 's;\[\([^]]*\)\];;g' \ |
||||
-e 's;<\([^>]*\)>;\1;g' \ |
||||
-e "s; ;§§;g" \ |
||||
-e "s;/;%%;g" \ |
||||
-e "s;§§;${opt_S};g" \ |
||||
-e "s;%%;${opt_C};g"` |
||||
eval "${var_uc}_N=\"\${val_N}\"" |
||||
;; |
||||
esac |
||||
case "$opt_F" in |
||||
*"%<${var_lc}>"* ) |
||||
val_C=`echo ":$val" | \ |
||||
sed -e 's/^://' \ |
||||
-e 's;\[\([^]]*\)\];;g' \ |
||||
-e 's;[^<]*<\([^>]*\)>;\1;g' \ |
||||
-e "s; ;§§;g" \ |
||||
-e "s;/;%%;g" \ |
||||
-e "s;§§;${opt_S};g" \ |
||||
-e "s;%%;${opt_C};g"` |
||||
eval "${var_uc}_C=\"\${val_C}\"" |
||||
;; |
||||
esac |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
# create output string |
||||
output=`echo ":$opt_F" |\ |
||||
sed -e "s/^://" \ |
||||
-e "s;%\\[ac\\];${AC_V};g" \ |
||||
-e "s;%{ac};${AC_N};g" \ |
||||
-e "s;%ac;${AC_N};g" \ |
||||
-e "s;%<ac>;${AC_C};g" \ |
||||
-e "s;%\\[ap\\];${AP_V};g" \ |
||||
-e "s;%{ap};${AP_N};g" \ |
||||
-e "s;%ap;${AP_N};g" \ |
||||
-e "s;%<ap>;${AP_C};g" \ |
||||
-e "s;%\\[at\\];${AT_V};g" \ |
||||
-e "s;%{at};${AT_N};g" \ |
||||
-e "s;%at;${AT_N};g" \ |
||||
-e "s;%<at>;${AT_C};g" \ |
||||
-e "s;%\\[sc\\];${SC_V};g" \ |
||||
-e "s;%{sc};${SC_N};g" \ |
||||
-e "s;%sc;${SC_N};g" \ |
||||
-e "s;%<sc>;${SC_C};g" \ |
||||
-e "s;%\\[sp\\];${SP_V};g" \ |
||||
-e "s;%{sp};${SP_N};g" \ |
||||
-e "s;%sp;${SP_N};g" \ |
||||
-e "s;%<sp>;${SP_C};g" \ |
||||
-e "s;%\\[st\\];${ST_V};g" \ |
||||
-e "s;%{st};${ST_N};g" \ |
||||
-e "s;%st;${ST_N};g" \ |
||||
-e "s;%<st>;${ST_C};g" \ |
||||
-e 's/\\\\n/^/g' |\ |
||||
tr '^' '\012'` |
||||
|
||||
# support lower/upper-case mapping |
||||
if [ ".$opt_L" = .yes ]; then |
||||
output=`util_lower "$output"` |
||||
elif [ ".$opt_U" = .yes ]; then |
||||
output=`util_upper "$output"` |
||||
fi |
||||
|
||||
# display output string |
||||
if [ ".$opt_n" = .yes ]; then |
||||
echo . | awk '{ printf("%s", output); }' output="$output" |
||||
else |
||||
echo "$output" |
||||
fi |
||||
|
||||
Loading…
Reference in new issue