> X-Original-To: ksh93-integration-discuss at opensolaris.org
> Delivered-To: ksh93-integration-discuss at opensolaris.org
> Date: Fri, 12 May 2006 17:50:22 -0400 (EDT)
> From: David Korn <dgk at research.att.com>
> Mime-Version: 1.0
> Content-Transfer-Encoding: 7bit
> To: ksh93-integration-discuss at opensolaris.org
> Subject: [ksh93-integration-discuss] Re: uname 
> X-BeenThere: ksh93-integration-discuss at opensolaris.org
> X-Mailman-Version: 2.1.4
> List-Id: Korn Shell 93 integration/migration project discussion 
<ksh93-integration-discuss.opensolaris.org>
> List-Unsubscribe: 
<http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss>, 
<mailto:ksh93-integration-discuss-request at 
opensolaris.org?subject=unsubscribe>
> List-Archive: 
<http://mail.opensolaris.org/pipermail/ksh93-integration-discuss>
> List-Post: <mailto:ksh93-integration-discuss at opensolaris.org>
> List-Help: 
<mailto:ksh93-integration-discuss-request at opensolaris.org?subject=help>
> List-Subscribe: 
<http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss>, 
<mailto:ksh93-integration-discuss-request at opensolaris.org?subject=subscribe>
> 
> 
> > Hi!
> > 
> > ----
> > 
> > While looking for incompatibilities between Solaris commands and ksh93's
> > builtin commands I found a difference in the output of "uname -a"
> > 
> > The difference looks like this:
> > -- snip --
> > # use native Solaris "uname"
> > $ /usr/bin/uname -a
> > SunOS s10test001 5.10 Generic_118844-26 i86pc i386 i86pc
> > $ builtin | fgrep uname
> > /bin/uname
> > # use ksh93 builtin "uname"
> > $ export PATH=/bin:$PATH
> > $ uname -a
> > SunOS s10test001 5.10 Generic_118844-26 i86pc
> > -- snip --
> > Neither /usr/xpg4/bin/ nor /usr/xpg6/bin/ contain a "uname" variant so I
> > assume there is no standard, right ?
> > 
> > The builtin "uname" results the following help:
> > -- snip --
> > uname --help  
> > Usage: uname [ options ]
> > OPTIONS
> >   -a, --all       Equivalent to -snrvm.
> >   -d, --domain    The domain name returned by getdomainname(2).
> >   -f, --list      List all sysinfo(2) names and values, one per line.
> >   -h, --host-id|id
> >                   The host id in hex.
> >   -i, --implementation|platform
> >                   The hardware implementation (platform); this is
> > --host-id on some systems.
> >   -m, --machine   The name of the hardware type the system is running
> > on.
> >   -n, --nodename  The hostname or nodename.
> >   -p, --processor The name of the processor instruction set
> > architecture.
> >   -r, --release   The release level of the operating system
> > implementation.
> >   -s, --os|system|sysname
> >                   The operating system name. This is the default.
> >   -v, --version   The operating system implementation version level.
> >   -A, --everything
> >                   Equivalent to -snrvmphCdtbiRX.
> >   -R, --extended-release
> >                   The extended release name.
> >   -S, --sethost=name
> >                   Set the hostname or nodename to name. No output is
> > written to standard output.
> > -- snip --
> > 
> > Calling the Solaris /usr/bin/uname command with the "-snrvm" option
> > listed in the builtin commands help returns the same output then:
> > -- snip --
> > % /usr/bin/uname -snrvm
> > SunOS s10test001 5.10 Generic_118844-26 i86pc
> > -- snip --
> > 
> > Based on that it simply seems that the Solaris command's "-a" option is
> > the equivalent to "uname -snrvmpi":
> > -- snip --
> > % /usr/bin/uname -snrvmpi
> > SunOS s10test001 5.10 Generic_118844-26 i86pc i386 i86pc
> > % /usr/bin/uname -a      
> > SunOS s10test001 5.10 Generic_118844-26 i86pc i386 i86pc
> > % uname -snrvmpi
> > SunOS s10test001 5.10 Generic_118844-26 i86pc i386 i86pc
> > -- snip --
> > 
> > David/Glenn:
> > I have attached a patch
> > ("ksh93_solaris_uname_all_output_fix001.diff.txt") which syncs the
> > output of the ksh93 builtin command with the Solaris version in
> > /usr/bin/ - is that change Ok for you ?
> > 
> > ----
> > 
> > Bye,
> > Roland
> > 
> > -- 
> >   __ .  . __
> >  (o.\ \/ /.o) roland.mainz at nrubsig.org
> >   \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
> >   /O /==\ O\  TEL +49 641 7950090
> >  (;O/ \/ \O;)
> > Index: libcmd/common/uname.c
> > ===================================================================
> > --- libcmd/common/uname.c   (revision 222)
> > +++ libcmd/common/uname.c   (working copy)
> > @@ -43,7 +43,7 @@
> >  "  \bgetconf\b(1), a pre-existing \astandard\a interface, provides"
> >  "  access to the same information; do vendors read standards or just"
> >  "  worry about making new ones?]"
> > -"[a:all?Equivalent to \b-snrvm\b.]"
> > +"[a:all?Equivalent to \b-snrvmpi\b.]"
> >  "[d:domain?The domain name returned by \agetdomainname\a(2).]"
> >  "[f:list?List all \bsysinfo\b(2) names and values, one per line.]"
> >  "[h:host-id|id?The host id in hex.]"
> > @@ -185,16 +185,16 @@
> >  #define OPT_release                (1<<2)
> >  #define OPT_version                (1<<3)
> >  #define OPT_machine                (1<<4)
> > +#define OPT_processor              (1<<5)
> > +#define OPT_implementation (1<<6)
> >  
> > -#define OPT_ALL                    5
> > +#define OPT_ALL                    7
> >  
> > -#define OPT_processor              (1<<5)
> > -#define OPT_hostid         (1<<6)
> > -#define OPT_vendor         (1<<7)
> > -#define OPT_domain         (1<<8)
> > -#define OPT_machine_type   (1<<9)
> > -#define OPT_base           (1<<10)
> > -#define OPT_implementation (1<<11)
> > +#define OPT_hostid         (1<<7)
> > +#define OPT_vendor         (1<<8)
> > +#define OPT_domain         (1<<9)
> > +#define OPT_machine_type   (1<<10)
> > +#define OPT_base           (1<<11)
> >  #define OPT_extended_release       (1<<12)
> >  #define OPT_extra          (1<<13)
> >  
> > @@ -256,7 +256,7 @@
> >     {
> >             switch (optget(argv, usage))
> >             {
> > -           case 'a':
> > +           case 'a': /* -snrvmpi */
> >                     flags |= OPT_all|((1L<<OPT_ALL)-1);
> >                     continue;
> >             case 'b':
> > 
> > 
> 
> The uname utility is defined by the POSIX standard which says that
> -a is equivalent to mnrsv.

POSIX also says that additional implementation-defined symbols may
be written at the end of the output but before the newline,
so although Solaris uname includes -nmrsv output followed
by Solaris uname -p and -i output, it is still POSIX conforming.
The conformance tests allow for additional text after 
the required uname -a output.

--April

> 
> Since ksh93 is POSIX conforming, it cannot chaange this behavior
> and still be conforming.
> 
> If solaris has a non-conforming uname that they must maintain,
> then there are two options.
> 
> 1.    Create a sun universe and make this the default.
>       getconf UNIVERSE -- sun
>       will set the UNIVERSE to sun but commands like cat and echo
>       need to be patched so that att and ucb universes are also
>       conforming.
> 
> 2.    Do you build uname into ksh93 and put it in a PATH that
>       will be used by people who want ast conformance.
> 
> 
> 
> David Korn
> dgk at research.att.com
> _______________________________________________
> ksh93-integration-discuss mailing list
> ksh93-integration-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss


Reply via email to