OSSP CVS Repository

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

Check-in Number: 3558
Date: 2003-Sep-08 13:16:13 (local)
2003-Sep-08 11:16:13 (UTC)
User:rse
Branch:
Comment: initial OSSP platform (FreeBSD, Linux and Solaris support only)
Tickets:
Inspections:
Files:
ossp-pkg/platform/BRAINSTORM      added-> 1.1
ossp-pkg/platform/COPYING      added-> 1.1
ossp-pkg/platform/Makefile      added-> 1.1
ossp-pkg/platform/README      added-> 1.1
ossp-pkg/platform/platform.pod      added-> 1.1
ossp-pkg/platform/platform.sh      added-> 1.1

ossp-pkg/platform/BRAINSTORM -> 1.1

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,74 ----
+ 
+ concatenator char "/" +
+ separator    char " " /
+ lowercase    yes/no
+ 
+ verbose      yes/no (with vendor name prefixed or not)  Sun Solaris (with [] parts)
+ normal                                                  Solaris     (without [] parts)
+ concise      yes/no (reduced to single word)            Solaris     (only <> parts or if no <> without [] and without special chars)
+ 
+ RPM Filenames: --rpm ==> --sep="" --conc="+" --format="%{ap}-%{sp}" 
+ ia32-lsb2.0
+ ix86-redhat9
+ i686-gnu+linux2.2.3+2.4.22
+ 
+ RPM .spec checks: --check ==> --sep="-" --conc="/" --format="%{at}:%{st}" 
+ ia32-lsb-2.0
+ ix86-redhat-9
+ i686-gnu+linux-2.2.3+2.4.22
+ 
+ Web Identifiers: --id ==> --sep="-" --conc="+" --format="%{at}/%{st}" 
+ IA32/LSB2.0
+ ix86/RedHat-9
+ i686/GNU+Linux-2.2.3+2.4.22
+ 
+ README/INSTALL files: --human ==> --sep=" " --conc="/" --format="%{sp} (%{ap})" 
+ LSB2.0 (IA32)
+ RedHat 9 (i686)
+ GNU/Linux 2.2.3/2.4.22 (i686)
+ 
+ --all ==> --class --prod --tech
+ --class ==> Xc
+ --prod  ==> Xp
+ --tech  ==> xt
+ 
+ --verbose                ==> []
+ --normal (or nothing)    ==> {}
+ --concise                ==> <>
+ 
+ hardware architecture
+ - class       %ac       SPARC     SPARC     IA32  IA64  HPPA     Alpha    PPC         M68K
+ - product     %ap       sparc32   sparc64   ix86  ia64  hppa     alpha    PowerPC5    m6800x
+ - technology  %at       sun4c     sun4u     i686  ia64  hppa2.0  alphav5  PowerPC50x0 M68004
+ operating system
+ - class       %sc       SVR5            SVR4      4.4BSD              4.4BSD      LSB2.0                  4.2BSD
+ - product     %sp       OpenUNIX 8.0    Solaris9  FreeBSD4.8          NetBSD1.6   RedHat9                 Tru64 5.1B
+ - technology  %st       UnixWare/7.1.3  SunOS/5.9 FreeBSD/4.8-STABLE  NetBSD/1.6.1 GNU/Linux 2.2.3/2.4.22 OSF1/5.01
+ 
+ "[Sun ]<Solaris> 9"
+ "[SCO ]UnixWare 7.1[.3]"
+ "FreeBSD 4.8[-STABLE]"
+ "<Debian>[ GNU/Linux] 2.2[.5]"
+ "GNU/<Linux> [3.3.1/]2.2.4/<2.4>.22"
+ 
+ %(xx) with all parenthesis
+ %[xx]
+ %{xx} %xx
+ %<xx>
+ 
+ /:+ " ":-
+ linux-2.4
+ 
+ --------------------------
+     capacity
+         - CPU speed
+         - RAM size
+         - Disk size
+         - Network bandwidth
+ cp_cpu
+ cp_ram
+ cp_dsk
+ cp_net
+ 
+ platform
+     


ossp-pkg/platform/COPYING -> 1.1

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,280 ----
+                     GNU GENERAL PUBLIC LICENSE
+                        Version 2, June 1991
+ 
+  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                        59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  Everyone is permitted to copy and distribute verbatim copies
+  of this license document, but changing it is not allowed.
+ 
+                             Preamble
+ 
+   The licenses for most software are designed to take away your
+ freedom to share and change it.  By contrast, the GNU General Public
+ License is intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users.  This
+ General Public License applies to most of the Free Software
+ Foundation's software and to any other program whose authors commit to
+ using it.  (Some other Free Software Foundation software is covered by
+ the GNU Library General Public License instead.)  You can apply it to
+ your programs, too.
+ 
+   When we speak of free software, we are referring to freedom, not
+ price.  Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it
+ if you want it, that you can change the software or use pieces of it
+ in new free programs; and that you know you can do these things.
+ 
+   To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the software, or if you modify it.
+ 
+   For example, if you distribute copies of such a program, whether
+ gratis or for a fee, you must give the recipients all the rights that
+ you have.  You must make sure that they, too, receive or can get the
+ source code.  And you must show them these terms so they know their
+ rights.
+ 
+   We protect your rights with two steps: (1) copyright the software, and
+ (2) offer you this license which gives you legal permission to copy,
+ distribute and/or modify the software.
+ 
+   Also, for each author's protection and ours, we want to make certain
+ that everyone understands that there is no warranty for this free
+ software.  If the software is modified by someone else and passed on, we
+ want its recipients to know that what they have is not the original, so
+ that any problems introduced by others will not reflect on the original
+ authors' reputations.
+ 
+   Finally, any free program is threatened constantly by software
+ patents.  We wish to avoid the danger that redistributors of a free
+ program will individually obtain patent licenses, in effect making the
+ program proprietary.  To prevent this, we have made it clear that any
+ patent must be licensed for everyone's free use or not licensed at all.
+ 
+   The precise terms and conditions for copying, distribution and
+ modification follow.
+ 
+                     GNU GENERAL PUBLIC LICENSE
+    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ 
+   0. This License applies to any program or other work which contains
+ a notice placed by the copyright holder saying it may be distributed
+ under the terms of this General Public License.  The "Program", below,
+ refers to any such program or work, and a "work based on the Program"
+ means either the Program or any derivative work under copyright law:
+ that is to say, a work containing the Program or a portion of it,
+ either verbatim or with modifications and/or translated into another
+ language.  (Hereinafter, translation is included without limitation in
+ the term "modification".)  Each licensee is addressed as "you".
+ 
+ Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope.  The act of
+ running the Program is not restricted, and the output from the Program
+ is covered only if its contents constitute a work based on the
+ Program (independent of having been made by running the Program).
+ Whether that is true depends on what the Program does.
+ 
+   1. You may copy and distribute verbatim copies of the Program's
+ source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an appropriate
+ copyright notice and disclaimer of warranty; keep intact all the
+ notices that refer to this License and to the absence of any warranty;
+ and give any other recipients of the Program a copy of this License
+ along with the Program.
+ 
+ You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.
+ 
+   2. You may modify your copy or copies of the Program or any portion
+ of it, thus forming a work based on the Program, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:
+ 
+     a) You must cause the modified files to carry prominent notices
+     stating that you changed the files and the date of any change.
+ 
+     b) You must cause any work that you distribute or publish, that in
+     whole or in part contains or is derived from the Program or any
+     part thereof, to be licensed as a whole at no charge to all third
+     parties under the terms of this License.
+ 
+     c) If the modified program normally reads commands interactively
+     when run, you must cause it, when started running for such
+     interactive use in the most ordinary way, to print or display an
+     announcement including an appropriate copyright notice and a
+     notice that there is no warranty (or else, saying that you provide
+     a warranty) and that users may redistribute the program under
+     these conditions, and telling the user how to view a copy of this
+     License.  (Exception: if the Program itself is interactive but
+     does not normally print such an announcement, your work based on
+     the Program is not required to print an announcement.)
+ 
+ These requirements apply to the modified work as a whole.  If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works.  But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Program, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote it.
+ 
+ Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Program.
+ 
+ In addition, mere aggregation of another work not based on the Program
+ with the Program (or with a work based on the Program) on a volume of
+ a storage or distribution medium does not bring the other work under
+ the scope of this License.
+ 
+   3. You may copy and distribute the Program (or a work based on it,
+ under Section 2) in object code or executable form under the terms of
+ Sections 1 and 2 above provided that you also do one of the following:
+ 
+     a) Accompany it with the complete corresponding machine-readable
+     source code, which must be distributed under the terms of Sections
+     1 and 2 above on a medium customarily used for software interchange; or,
+ 
+     b) Accompany it with a written offer, valid for at least three
+     years, to give any third party, for a charge no more than your
+     cost of physically performing source distribution, a complete
+     machine-readable copy of the corresponding source code, to be
+     distributed under the terms of Sections 1 and 2 above on a medium
+     customarily used for software interchange; or,
+ 
+     c) Accompany it with the information you received as to the offer
+     to distribute corresponding source code.  (This alternative is
+     allowed only for noncommercial distribution and only if you
+     received the program in object code or executable form with such
+     an offer, in accord with Subsection b above.)
+ 
+ The source code for a work means the preferred form of the work for
+ making modifications to it.  For an executable work, complete source
+ code means all the source code for all modules it contains, plus any
+ associated interface definition files, plus the scripts used to
+ control compilation and installation of the executable.  However, as a
+ special exception, the source code distributed need not include
+ anything that is normally distributed (in either source or binary
+ form) with the major components (compiler, kernel, and so on) of the
+ operating system on which the executable runs, unless that component
+ itself accompanies the executable.
+ 
+ If distribution of executable or object code is made by offering
+ access to copy from a designated place, then offering equivalent
+ access to copy the source code from the same place counts as
+ distribution of the source code, even though third parties are not
+ compelled to copy the source along with the object code.
+ 
+   4. You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License.  Any attempt
+ otherwise to copy, modify, sublicense or distribute the Program is
+ void, and will automatically terminate your rights under this License.
+ However, parties who have received copies, or rights, from you under
+ this License will not have their licenses terminated so long as such
+ parties remain in full compliance.
+ 
+   5. You are not required to accept this License, since you have not
+ signed it.  However, nothing else grants you permission to modify or
+ distribute the Program or its derivative works.  These actions are
+ prohibited by law if you do not accept this License.  Therefore, by
+ modifying or distributing the Program (or any work based on the
+ Program), you indicate your acceptance of this License to do so, and
+ all its terms and conditions for copying, distributing or modifying
+ the Program or works based on it.
+ 
+   6. Each time you redistribute the Program (or any work based on the
+ Program), the recipient automatically receives a license from the
+ original licensor to copy, distribute or modify the Program subject to
+ these terms and conditions.  You may not impose any further
+ restrictions on the recipients' exercise of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties to
+ this License.
+ 
+   7. If, as a consequence of a court judgment or allegation of patent
+ infringement or for any other reason (not limited to patent issues),
+ conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License.  If you cannot
+ distribute so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you
+ may not distribute the Program at all.  For example, if a patent
+ license would not permit royalty-free redistribution of the Program by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Program.
+ 
+ If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply and the section as a whole is intended to apply in other
+ circumstances.
+ 
+ It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system, which is
+ implemented by public license practices.  Many people have made
+ generous contributions to the wide range of software distributed
+ through that system in reliance on consistent application of that
+ system; it is up to the author/donor to decide if he or she is willing
+ to distribute software through any other system and a licensee cannot
+ impose that choice.
+ 
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+ 
+   8. If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License
+ may add an explicit geographical distribution limitation excluding
+ those countries, so that distribution is permitted only in or among
+ countries not thus excluded.  In such case, this License incorporates
+ the limitation as if written in the body of this License.
+ 
+   9. The Free Software Foundation may publish revised and/or new versions
+ of the General Public License from time to time.  Such new versions will
+ be similar in spirit to the present version, but may differ in detail to
+ address new problems or concerns.
+ 
+ Each version is given a distinguishing version number.  If the Program
+ specifies a version number of this License which applies to it and "any
+ later version", you have the option of following the terms and conditions
+ either of that version or of any later version published by the Free
+ Software Foundation.  If the Program does not specify a version number of
+ this License, you may choose any version ever published by the Free Software
+ Foundation.
+ 
+   10. If you wish to incorporate parts of the Program into other free
+ programs whose distribution conditions are different, write to the author
+ to ask for permission.  For software which is copyrighted by the Free
+ Software Foundation, write to the Free Software Foundation; we sometimes
+ make exceptions for this.  Our decision will be guided by the two goals
+ of preserving the free status of all derivatives of our free software and
+ of promoting the sharing and reuse of software generally.
+ 
+                             NO WARRANTY
+ 
+   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+ REPAIR OR CORRECTION.
+ 
+   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+ 
+                      END OF TERMS AND CONDITIONS


ossp-pkg/platform/Makefile -> 1.1

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,12 ----
+ 
+ all:
+        @echo "==== verbose ===="; \
+        sh platform.sh -v; \
+        echo "==== normal ===="; \
+        sh platform.sh; \
+        echo "==== concise ===="; \
+        sh platform.sh -c; \
+        echo "==== various ===="; \
+        echo . | awk '{ printf("rpm-file:  "); }'; sh platform.sh -L -F "%ap-%sp" -S "" -C "+"; \
+        echo . | awk '{ printf("rpm-check: "); }'; sh platform.sh -L -F "%at-%st" -S "" -C "+"
+ 


ossp-pkg/platform/README -> 1.1

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,43 ----
+    _        ___  ____ ____  ____          _       _    __
+   |_|_ _   / _ \/ ___/ ___||  _ \   _ __ | | __ _| |_ / _| ___  _ __ _ __ ___
+   _|_||_| | | | \___ \___ \| |_) | | '_ \| |/ _` | __| |_ / _ \| '__| '_ ` _ \
+  |_||_|_| | |_| |___) |__) |  __/  | |_) | | (_| | |_|  _| (_) | |  | | | | | |
+   |_|_|_|  \___/|____/____/|_|     | .__/|_|\__,_|\__|_|  \___/|_|  |_| |_| |_|
+                                    |_|
+ 
+   OSSP platform - Unix Platform Identification
+   Version 0.1.0 (09-Sep-2003)
+ 
+   ABSTRACT
+ 
+   OSSP platform is ...
+ 
+   COPYRIGHT AND LICENSE
+ 
+   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 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 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>.
+ 
+   SEE ALSO
+ 
+   o Homepage ....... http://www.ossp.org/pkg/tool/platform/
+   o Sources ........ http://cvs.ossp.org/pkg/tool/platform/
+   o Distribution .... ftp://ftp.ossp.org/pkg/tool/platform/
+ 


ossp-pkg/platform/platform.pod -> 1.1

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,63 ----
+ ##
+ ##  OSSP platform - 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.pod: the manual page (language: Plain Old Document)
+ ##
+ 
+ =pod
+ 
+ =head1 NAME
+ 
+ B<OSSP platform> - Unix Platform Identification
+ 
+ =head1 SYNOPSIS
+ 
+ ...
+ 
+ =head1 DESCRIPTION
+ 
+ ...
+ 
+ =head1 SEE ALSO
+ 
+ http://www.ossp.org/pkg/tool/platform/.
+ 
+ uname(3), GNU F<config.guess>.
+ 
+ =head1 HISTORY
+ 
+ B<OSSP 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 packages are maintained for. It was inspired by B<GNU>
+ F<config.guess> and older B<GNU shtool> F<guessos> command.
+ 
+ =head1 AUTHOR
+ 
+  Ralf S. Engelschall
+  rse@engelschall.com
+  www.engelschall.com
+ 
+ =cut
+ 


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

*** /dev/null    Sat Nov 23 01:53:01 2024
--- -    Sat Nov 23 01:53:26 2024
***************
*** 0 ****
--- 1,477 ----
+ ##
+ ##  OSSP platform - 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="${prog_run}"
+ prog_cmd="platform"
+ prog_name="OSSP platform"
+ prog_vers="0.1.0"
+ prog_date="06-Sep-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|--lower]"
+ str_usage="$str_usage [-T|--type TYPE]"
+ str_usage="$str_usage [-v|--verbose]"
+ str_usage="$str_usage [-c|--concise]"
+ str_usage="$str_usage [-n|--newline]"
+ 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.T:v.c.n.d.V.h."
+ opt_alias="F:format,S:sep,C:conc,L:lower,T:type,v:verbose,c:consise,n:newline,d:debug,V:version,h:help"
+ opt_F="Class:      %sc (%ac)\\nProduct:    %sp (%ap)\\nTechnology: %st (%at)"
+ 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
+ 
+ ##  _________________________________________________________________________
+ ##
+ ##                            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
+             *"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
+         ;;
+ 
+     #   GNU/Linux
+     *:Linux:* )
+         #   determine architecture
+         AT="${UNAME_MACHINE}"
+         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>&1`
+         ST="GNU/Linux ${v_libc}/${v_kern}"
+         for tagfile in dummy `cd /etc && echo *[_-]release *[_-]version 2>/dev/null`; do
+             test ! -f /etc/${tagfile} && continue
+             n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'`
+             v=`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/^#.*$//'`
+             case "`util_lower ${n}`" in
+                 debian   ) n="Debian[ GNU/Linux]" ;;
+                 redhat   ) n="RedHat[ Linux}"     ;;
+                 suse     ) n="SuSE[ Linux]"       ;;
+                 mandrake ) n="Mandrake[ Linux}"   ;;
+                 gentoo   ) n="Gentoo[ Linux]"     ;;
+                 *        ) n="${n}[ GNU/Linux]"   ;;
+             esac
+             SP="$n $v"
+         done
+         [ ".$SP" = . ] && SP="${ST}"
+         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]\).*;2.\1;' \
+                -e 's;^5\.\([0-9][0-9]*\).*;\1;'`
+         SP="[Sun ]Solaris $v"
+         case "${UNAME_RELEASE}" in
+             4.* ) SC="4.2BSD" ;;
+             5.* ) SC="SVR4"   ;;
+         esac
+         ;;
+ 
+ 
+     #   TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO
+     # *:XXX:* )
+     #   ...
+     #   ;;
+ 
+     #   ...A STILL UNKNOWN PLATFORM...
+     * )
+         AT="${UNAME_MACHINE}"
+         AP="${AT}"
+         AC="${AP}"
+         ST="${UNAME_SYSTEM} ${UNAME_RELEASE}"
+         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;'`
+                 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;'`
+                 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;'`
+                 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
+ 
+ #   support particular separator and concatenator strings
+ output=`echo ":$output" |
+         sed -e 's/^://' \
+             -e "s; ;${opt_S};g" \
+             -e "s;/;${opt_C};g"`
+ 
+ #   display output string
+ if [ ".$opt_n" = .yes ]; then
+     echo . | awk '{ printf("%s", output); }' output="$output"
+ else
+     echo "$output"
+ fi
+ 

CVSTrac 2.0.1