OSSP CVS Repository

ossp - Check-in [3692]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 3692
Date: 2003-Dec-13 22:23:55 (local)
2003-Dec-13 21:23:55 (UTC)
User:rse
Branch:
Comment: Replaced old and inflexible "shtool guessos" command with a completely new command "shtool platform" command. It distinguishes a Unix platform according to its hardware architecture and operating system. For both there is a class, product and technology identification. For each of those six identifications, there is a verbose, regular and concise version.
Tickets:
Inspections:
Files:
ossp-pkg/shtool/AUTHORS      1.5 -> 1.6     0 inserted, 4 deleted
ossp-pkg/shtool/ChangeLog      1.191 -> 1.192     10 inserted, 2 deleted
ossp-pkg/shtool/Makefile.in      1.47 -> 1.48     1 inserted, 1 deleted
ossp-pkg/shtool/NEWS      1.6 -> 1.7     2 inserted, 1 deleted
ossp-pkg/shtool/README      1.96 -> 1.97     1 inserted, 1 deleted
ossp-pkg/shtool/sh.common      1.21 -> 1.22     10 inserted, 0 deleted
ossp-pkg/shtool/sh.guessos      1.23->removed
ossp-pkg/shtool/sh.platform      added-> 1.1
ossp-pkg/shtool/shtool.pod      1.63 -> 1.64     123 inserted, 11 deleted
ossp-pkg/shtool/shtoolize.in      1.31 -> 1.32     1 inserted, 1 deleted
ossp-pkg/shtool/shtoolize.pod      1.10 -> 1.11     2 inserted, 2 deleted
ossp-pkg/shtool/test.db      1.20 -> 1.21     3 inserted, 3 deleted

ossp-pkg/shtool/AUTHORS 1.5 -> 1.6

--- AUTHORS      2001/06/14 14:24:16     1.5
+++ AUTHORS      2003/12/13 21:23:55     1.6
@@ -21,7 +21,3 @@
      Written by: Ulrich Drepper, Ralf S. Engelschall
      Edited  by: Ralf S. Engelschall
 
-  o  sh.guessos:
-     Written by: Jim Jagielski et all, ASF
-     Edited  by: Ralf S. Engelschall
-


ossp-pkg/shtool/ChangeLog 1.191 -> 1.192

--- ChangeLog    2003/11/17 12:36:42     1.191
+++ ChangeLog    2003/12/13 21:23:55     1.192
@@ -9,8 +9,16 @@
 
  ChangeLog
 
- Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to 17-Nov-2003):
-   
+ Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to xx-Dec-2003):
+
+   *) Replaced old and inflexible "shtool guessos" command
+      with a completely new command "shtool platform" command.
+      It distinguishes a Unix platform according to its hardware
+      architecture and operating system. For both there is a class,
+      product and technology identification. For each of those six
+      identifications, there is a verbose, regular and concise version.
+      [Ralf S. Engelschall]
+
    *) Upgraded to GNU Autoconf 2.58 environment.
       [Ralf S. Engelschall]
 


ossp-pkg/shtool/Makefile.in 1.47 -> 1.48

--- Makefile.in  2003/02/11 13:00:49     1.47
+++ Makefile.in  2003/12/13 21:23:55     1.48
@@ -54,7 +54,7 @@
  sh.rotate \
  sh.tarball \
  sh.subst \
- sh.guessos \
+ sh.platform \
  sh.arx \
  sh.slo \
  sh.scpp \


ossp-pkg/shtool/NEWS 1.6 -> 1.7

--- NEWS 2003/11/14 17:21:37     1.6
+++ NEWS 2003/12/13 21:23:55     1.7
@@ -9,8 +9,9 @@
   This is a list of user-visible and/or major changes to GNU shtool.
   For more details please have a look at the ChangeLog file.
 
-  Changes between 1.6 and 2.0 (02-Nov-2002 to xx-Nov-2003)
+  Changes between 1.6 and 2.0 (02-Nov-2002 to xx-Dec-2003)
 
+   *) Replaced old `shtool guessos' with a new `shtool platform' command
    *) Even more POSIX 1003.1-2001 compliancy and portability.
    *) Many workarounds and fixed for permission related problems
    *) Fixed error exit in all commands by introducing an "shtool_exit"


ossp-pkg/shtool/README 1.96 -> 1.97

--- README       2003/08/13 14:23:21     1.96
+++ README       2003/12/13 21:23:55     1.97
@@ -35,7 +35,7 @@
   rotate     Rotate logfiles
   tarball    Roll distribution tarballs
   subst      Apply sed(1) substitution operations
-  guessos    Simple OS/platform guesser
+  platform   Platform identification utility
   arx        Extended archive command
   slo        Separate linker options by library class
   scpp       Sharing C Pre-Processor


ossp-pkg/shtool/sh.common 1.21 -> 1.22

--- sh.common    2003/08/13 14:20:34     1.21
+++ sh.common    2003/12/13 21:23:55     1.22
@@ -174,6 +174,16 @@
     chmod 600 $tmpfile
 fi
 
+#   utility function: map string to lower case
+util_lower () {
+    echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'
+}
+
+#   utility function: map string to upper case
+util_upper () {
+    echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+}
+
 #   cleanup procedure
 shtool_exit () {
     rc="$1"


ossp-pkg/shtool/sh.guessos 1.23 -> 1.24



ossp-pkg/shtool/sh.platform -> 1.1

*** /dev/null    Sat Apr 27 17:11:00 2024
--- -    Sat Apr 27 17:12:27 2024
***************
*** 0 ****
--- 1,585 ----
+ ##
+ ##  platform -- Platform Identification Utility
+ ##  Copyright (c) 2003 Ralf S. Engelschall <rse@engelschall.com>
+ ##  Originally written for use in OpenPKG
+ ##
+ ##  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]"
+ 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 [-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,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=`(/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 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
+ 


ossp-pkg/shtool/shtool.pod 1.63 -> 1.64

--- shtool.pod   2003/02/11 13:00:50     1.63
+++ shtool.pod   2003/12/13 21:23:55     1.64
@@ -259,10 +259,9 @@
 
 Apply sed(1) substitution operations.
 
-=item B<guessos>
+=item B<platform>
 
-Simple operating system and platform architecture guesser which
-determines a GNU I<platform-triple> style identification string.
+Determines platform identification information.
 
 =item B<arx>
 
@@ -674,17 +673,130 @@
           `find . -name Makefile -print`
       make install
 
-=item B<guessos>
+=item B<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<-t>|B<--type> I<TYPE>] [B<-V>|B<--version>] [B<-h>|B<--help>]
 
-This command is a simple operating system and platform architecture guesser
-which determines a so-called ``GNU I<platform-triple>'' style identification
-string ``I<arch>-I<hardware>-I<os>I<osversion>''. For instance a FreeBSD 3.1
-running on a Pentium II is identified as ``C<i686-pc-freebsd3.1>''.  When you
-need a more sophisticated platform guesser, use the GNU
-C<config.guess>/C<config.sub> scripts, please.
+This command privides Unix platform identifications. 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).
+
+Option B<-F> controls the output formatting of this command. 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.
+
+Option B<-S> 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. Option B<-C> 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. Option B<-L> enforces conversion of the
+output to all I<lower> case. Option B<-U> enforces conversion of the
+output to all I<upper> case. 
+
+Option B<-v> 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<]>". Option B<-c> 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>>". Option B<-n> omits the usual trailing newline
+character in the output.
+
+Option B<-t> 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
+
+Option B<-V> outputs the version information of B<OSSP platform> only.
+Option B<-h> outputs the usage information of B<OSSP platform> only.
+
+Example:
 
  #   configure.in
- OS=`shtool guessos`
+ PLATFORM=`shtool platform --type=binary`
 
 =item B<arx> [B<-t>|B<--trace>] [B<-C>|B<--command> I<cmd>] I<op> I<archive> I<file> [I<file> ...]
 


ossp-pkg/shtool/shtoolize.in 1.31 -> 1.32

--- shtoolize.in 2003/08/13 14:20:34     1.31
+++ shtoolize.in 2003/12/13 21:23:55     1.32
@@ -35,7 +35,7 @@
 #   Available modules
 my @available = qw(
     echo mdate table prop move install mkdir mkln mkshadow
-    fixperm rotate tarball subst guessos arx slo scpp version path
+    fixperm rotate tarball subst platform arx slo scpp version path
 );
 
 ##


ossp-pkg/shtool/shtoolize.pod 1.10 -> 1.11

--- shtoolize.pod        2003/02/11 13:00:50     1.10
+++ shtoolize.pod        2003/12/13 21:23:55     1.11
@@ -57,7 +57,7 @@
  rotate     Rotate a logfile
  tarball    Roll distribution tarballs
  subst      Apply sed(1) substitution operations
- guessos    Simple OS/platform guesser
+ platform   Platform identification utility
  arx        Extended archive command
  slo        Separate linker options by library class
  scpp       Sharing C Pre-Processor
@@ -66,7 +66,7 @@
 
 Additionally there is a pseudo-module ``C<all>'' which can be used as a
 short-hand for ``C<echo mdate table prop move install mkdir mkln mkshadow
-fixperm guessos arx slo scpp version path>'', i.e. to build a B<shtool> script
+fixperm platform arx slo scpp version path>'', i.e. to build a B<shtool> script
 with all modules in the standard order. An installed B<shtool> is usually
 built this way via ``C<shtoolize -o shtool all>''.
 


ossp-pkg/shtool/test.db 1.20 -> 1.21

--- test.db      2003/02/11 13:00:50     1.20
+++ test.db      2003/12/13 21:23:55     1.21
@@ -130,10 +130,10 @@
 test ".`cat baz`" = ".CbazC"
 @end{subst}
 
-@begin{guessos}
+@begin{platform}
 #   cannot be checked easily, so just start it
-shtool guessos
-@end{guessos}
+shtool platform
+@end{platform}
 
 @begin{arx}
 echo foo >foo.o

CVSTrac 2.0.1