da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1992-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * David Korn
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Glenn Fowler
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * AT&T Research
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin"[-?\n@(#)$Id: uname (AT&T Research) 2007-04-19 $\n]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[+NAME?uname - identify the current system ]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[+DESCRIPTION?By default \buname\b writes the operating system name to"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" standard output. When options are specified, one or more"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" system characteristics are written to standard output, space"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner" separated, on a single line. When more than one option is specified"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" the output is in the order specfied by the \b-A\b option below."
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" Unsupported option values are listed as \a[option]]\a. If any unknown"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" options are specified then the local \b/usr/bin/uname\b is called.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[+?If any \aname\a operands are specified then the \bsysinfo\b(2) values"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" for each \aname\a are listed, separated by space, on one line."
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" \bgetconf\b(1), a pre-existing \astandard\a interface, provides"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" access to the same information; vendors should spend more time"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" using standards than inventing them.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[+?Selected information is printed in the same order as the options below.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[a:all?Equivalent to \b-snrvmpio\b.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[s:system|sysname|kernel-name?The detailed kernel name. This is the default.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[n:nodename?The hostname or nodename.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[r:release|kernel-release?The kernel release level.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[v:version|kernel-version?The kernel version level.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[m:machine?The name of the hardware type the system is running on.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[p:processor?The name of the processor instruction set architecture.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[i:implementation|platform|hardware-platform?The hardware implementation;"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" this is \b--host-id\b on some systems.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[o:operating-system?The generic operating system name.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[h:host-id|id?The host id in hex.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[d:domain?The domain name returned by \agetdomainname\a(2).]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[R:extended-release?The extended release name.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[A:everything?Equivalent to \b-snrvmpiohdR\b.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[f:list?List all \bsysinfo\b(2) names and values, one per line.]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[S:sethost?Set the hostname or nodename to \aname\a. No output is"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" written to standard output.]:[name]"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin"\n[ name ... ]\n"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin"[+SEE ALSO?\bhostname\b(1), \bgetconf\b(1), \buname\b(2),"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin" \bsysconf\b(2), \bsysinfo\b(2)]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:hide getdomainname gethostid gethostname sethostname
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:nohide getdomainname gethostid gethostname sethostname
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzextern long gethostid(void);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (gethostname(ut->nodename, sizeof(ut->nodename) - 1))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return -1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin strncpy(ut->nodename, "local", sizeof(ut->nodename) - 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin } while(0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if ((flags&(f))&&(*(v)||(flags&(OPT_all|OPT_total))==OPT_all&&((f)&OPT_standard)||!(flags&(OPT_all|OPT_total)))) \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (*(v)) \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin } while (0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin register int n;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin register char* s;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (!streq(argv[0], s) && (!eaccess(s, X_OK) || !eaccess(s+=4, X_OK)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (error_info.errors || *argv && (flags || sethost) || sethost && flags)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin error(ERROR_system(1), "%s: cannot set host name", sethost);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin astconflist(sfstdout, NiL, ASTCONF_base|ASTCONF_defined|ASTCONF_lower|ASTCONF_quote|ASTCONF_matchcall, "CS|SI");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else if (*argv)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin while (s = *argv++)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *t++ = 'C';
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *t++ = 'S';
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *t++ = '_';
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin while (t < e && (n = *s++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin sfprintf(sfstdout, "%s%c", *(t = astconf(buf, NiL, NiL)) ? t : *(t = astconf(buf+3, NiL, NiL)) ? t : "unknown", *argv ? ' ' : '\n');
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (sizeof(ut.nodename) > 9 || gethostname(s, sizeof(buf)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (!*(s = astconf("PLATFORM", NiL, NiL)) && !*(s = astconf("HW_NAME", NiL, NiL)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin t = (char*)hosttype;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (!(n = *s++))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if ((s - t) > 1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else if (!isprint(n))