> 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
