diffs for uname (posix!) system call, provided by John Brezak <brezak@osf.org>
This commit is contained in:
parent
c7796f288f
commit
c5d886aff7
@ -28,7 +28,7 @@ ASM= accept.o access.o acct.o adjtime.o async_daemon.o bind.o chdir.o \
|
|||||||
shutdown.o sigaction.o sigstack.o socket.o socketpair.o stat.o \
|
shutdown.o sigaction.o sigstack.o socket.o socketpair.o stat.o \
|
||||||
statfs.o swapon.o symlink.o sync.o truncate.o umask.o unlink.o \
|
statfs.o swapon.o symlink.o sync.o truncate.o umask.o unlink.o \
|
||||||
unmount.o utimes.o vadvise.o wait4.o write.o writev.o getdomainname.o \
|
unmount.o utimes.o vadvise.o wait4.o write.o writev.o getdomainname.o \
|
||||||
setdomainname.o
|
setdomainname.o uname.o
|
||||||
|
|
||||||
PSEUDO= _exit.o _getlogin.o
|
PSEUDO= _exit.o _getlogin.o
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ MAN2+= accept.0 access.0 acct.0 adjtime.0 async_daemon.0 bind.0 brk.0 \
|
|||||||
shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \
|
shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \
|
||||||
sigsuspend.0 socket.0 socketpair.0 stat.0 statfs.0 swapon.0 \
|
sigsuspend.0 socket.0 socketpair.0 stat.0 statfs.0 swapon.0 \
|
||||||
symlink.0 sync.0 syscall.0 truncate.0 umask.0 unlink.0 utimes.0 \
|
symlink.0 sync.0 syscall.0 truncate.0 umask.0 unlink.0 utimes.0 \
|
||||||
vfork.0 wait.0 write.0 getdomainname.0
|
vfork.0 wait.0 write.0 getdomainname.0 uname.0
|
||||||
|
|
||||||
MLINKS+=brk.2 sbrk.2
|
MLINKS+=brk.2 sbrk.2
|
||||||
MLINKS+=dup.2 dup2.2
|
MLINKS+=dup.2 dup2.2
|
||||||
|
99
lib/libc/sys/uname.2
Normal file
99
lib/libc/sys/uname.2
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
.\" Copyright (c) 1983, 1991 The Regents of the University of California.
|
||||||
|
.\" All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" Redistribution and use in source and binary forms, with or without
|
||||||
|
.\" modification, are permitted provided that the following conditions
|
||||||
|
.\" are met:
|
||||||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer.
|
||||||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||||||
|
.\" documentation and/or other materials provided with the distribution.
|
||||||
|
.\" 3. All advertising materials mentioning features or use of this software
|
||||||
|
.\" must display the following acknowledgement:
|
||||||
|
.\" This product includes software developed by the University of
|
||||||
|
.\" California, Berkeley and its contributors.
|
||||||
|
.\" 4. Neither the name of the University nor the names of its contributors
|
||||||
|
.\" may be used to endorse or promote products derived from this software
|
||||||
|
.\" without specific prior written permission.
|
||||||
|
.\"
|
||||||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
.\" SUCH DAMAGE.
|
||||||
|
.\"
|
||||||
|
.\" @(#)uname.2 6.6 (Berkeley) 3/10/91
|
||||||
|
.\"
|
||||||
|
.Dd March 29, 1993
|
||||||
|
.Dt UNAME 2
|
||||||
|
.Os Posix
|
||||||
|
.Sh NAME
|
||||||
|
.Nm uname
|
||||||
|
.Nd get host information
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Fd #include <sys/utsname.h>
|
||||||
|
.Ft int
|
||||||
|
.Fn uname "struct utsname *name"
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Fn Uname
|
||||||
|
returns the information identifying the current UNIX system
|
||||||
|
in the structure pointed to by
|
||||||
|
.Fa name.
|
||||||
|
.Pp
|
||||||
|
.Fn Uname
|
||||||
|
uses the structure defined in
|
||||||
|
.Aq Pa sys/utsname.h
|
||||||
|
whose members are:
|
||||||
|
.Bd -literal
|
||||||
|
struct utsname {
|
||||||
|
char sysname[SYS_NMLN];
|
||||||
|
char nodename[SYS_NMLN];
|
||||||
|
char release[SYS_NMLN];
|
||||||
|
char version[SYS_NMLN];
|
||||||
|
char machine[SYS_NMLN];
|
||||||
|
};
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
.Fn Uname
|
||||||
|
returns a null-terminated character string naming the
|
||||||
|
current UNIX system in the character array
|
||||||
|
.Fa sysname .
|
||||||
|
Similarly,
|
||||||
|
.Fa nodename
|
||||||
|
contains the name that the system is known by on a
|
||||||
|
communication network.
|
||||||
|
.Fa Release
|
||||||
|
and
|
||||||
|
.Fa version
|
||||||
|
further identify the operating system.
|
||||||
|
.Fa Machine
|
||||||
|
contains the standard name that identifies the hardware
|
||||||
|
that the UNIX system is running on.
|
||||||
|
.Sn ERRORS
|
||||||
|
.Bl -tag -width ENAMETOOLONGAA
|
||||||
|
.It Bq Er EFAULT
|
||||||
|
.Fn Uname
|
||||||
|
will fail if
|
||||||
|
.Fa name
|
||||||
|
points to an invalid address.
|
||||||
|
.Sh RETURN VALUE
|
||||||
|
Upon successful completion a value of 0 is returned.
|
||||||
|
Otherwise, a value of -1 is returned and
|
||||||
|
.Va errno
|
||||||
|
is set to indicate the error.
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr hostname 1 ,
|
||||||
|
.Xr machine 1 ,
|
||||||
|
.Xr gethostname 2
|
||||||
|
.Sh HISTORY
|
||||||
|
The
|
||||||
|
.Nm uname
|
||||||
|
function call appeared in
|
||||||
|
System V.2 AT&T UNIX.
|
@ -35,7 +35,7 @@
|
|||||||
*
|
*
|
||||||
* @(#)genassym.c 5.11 (Berkeley) 5/10/91
|
* @(#)genassym.c 5.11 (Berkeley) 5/10/91
|
||||||
*/
|
*/
|
||||||
static char rcsid[] = "$Header: /cvsroot/src/sys/arch/i386/i386/Attic/genassym.c,v 1.1.1.1 1993/03/21 09:45:37 cgd Exp $";
|
static char rcsid[] = "$Header: /cvsroot/src/sys/arch/i386/i386/Attic/genassym.c,v 1.2 1993/05/06 10:48:11 cgd Exp $";
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char sccsid[] = "@(#)genassym.c 5.11 (Berkeley) 5/10/91";
|
static char sccsid[] = "@(#)genassym.c 5.11 (Berkeley) 5/10/91";
|
||||||
@ -160,5 +160,7 @@ main()
|
|||||||
printf("#define\tENOENT %d\n", ENOENT);
|
printf("#define\tENOENT %d\n", ENOENT);
|
||||||
printf("#define\tEFAULT %d\n", EFAULT);
|
printf("#define\tEFAULT %d\n", EFAULT);
|
||||||
printf("#define\tENAMETOOLONG %d\n", ENAMETOOLONG);
|
printf("#define\tENAMETOOLONG %d\n", ENAMETOOLONG);
|
||||||
|
printf("#define\tCPU_386 %d\n", CPU_386);
|
||||||
|
printf("#define\tCPU_486 %d\n", CPU_486);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
@ -289,6 +289,8 @@ begin: /* now running relocated at SYSTEM where the system is linked to run */
|
|||||||
lea 7*NBPG(%esi),%esi # skip past stack.
|
lea 7*NBPG(%esi),%esi # skip past stack.
|
||||||
pushl %esi
|
pushl %esi
|
||||||
|
|
||||||
|
call _set_cpu_type # get kind of cpu
|
||||||
|
|
||||||
call _init386 # wire 386 chip for unix operation
|
call _init386 # wire 386 chip for unix operation
|
||||||
|
|
||||||
movl $0,_PTD
|
movl $0,_PTD
|
||||||
@ -1594,6 +1596,30 @@ IDTVEC(syscall)
|
|||||||
popfl
|
popfl
|
||||||
lret
|
lret
|
||||||
|
|
||||||
|
ALIGN32
|
||||||
|
ENTRY(set_cpu_type)
|
||||||
|
pushfl
|
||||||
|
popl %eax
|
||||||
|
movl %eax, %ecx
|
||||||
|
xorl $0x40000, %eax
|
||||||
|
pushl %eax
|
||||||
|
popfl
|
||||||
|
pushfl
|
||||||
|
popl %eax
|
||||||
|
xorl %ecx, %eax
|
||||||
|
shrl $18, %eax
|
||||||
|
andl $1, %eax
|
||||||
|
push %ecx
|
||||||
|
popfl
|
||||||
|
|
||||||
|
movl $_cpu, %ecx
|
||||||
|
cmpl $0, %eax
|
||||||
|
jne 1f
|
||||||
|
movl $CPU_386, (%ecx)
|
||||||
|
ret
|
||||||
|
1: movl $CPU_486, (%ecx)
|
||||||
|
ret
|
||||||
|
|
||||||
ALIGN32
|
ALIGN32
|
||||||
ENTRY(htonl)
|
ENTRY(htonl)
|
||||||
ENTRY(ntohl)
|
ENTRY(ntohl)
|
||||||
|
@ -1 +1 @@
|
|||||||
revision 1.2 intentionally removed
|
revision 1.3 intentionally removed
|
||||||
|
@ -1 +1 @@
|
|||||||
revision 1.8 intentionally removed
|
revision 1.9 intentionally removed
|
||||||
|
@ -160,6 +160,7 @@ int getfh();
|
|||||||
#endif
|
#endif
|
||||||
int getdomainname();
|
int getdomainname();
|
||||||
int setdomainname();
|
int setdomainname();
|
||||||
|
int uname();
|
||||||
#ifdef SYSVSHM
|
#ifdef SYSVSHM
|
||||||
int shmsys();
|
int shmsys();
|
||||||
#else
|
#else
|
||||||
@ -404,7 +405,7 @@ struct sysent sysent[] = {
|
|||||||
#endif
|
#endif
|
||||||
2, getdomainname, /* 162 = getdomainname */
|
2, getdomainname, /* 162 = getdomainname */
|
||||||
2, setdomainname, /* 163 = setdomainname */
|
2, setdomainname, /* 163 = setdomainname */
|
||||||
0, nosys, /* 164 = nosys */
|
1, uname, /* 164 = uname */
|
||||||
0, nosys, /* 165 = nosys */
|
0, nosys, /* 165 = nosys */
|
||||||
0, nosys, /* 166 = nosys */
|
0, nosys, /* 166 = nosys */
|
||||||
0, nosys, /* 167 = nosys */
|
0, nosys, /* 167 = nosys */
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "reboot.h"
|
#include "reboot.h"
|
||||||
|
#include "utsname.h"
|
||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
gethostid(p, uap, retval)
|
gethostid(p, uap, retval)
|
||||||
@ -137,6 +138,19 @@ setdomainname(p, uap, retval)
|
|||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ARGSUSED */
|
||||||
|
uname(p, uap, retval)
|
||||||
|
struct proc *p;
|
||||||
|
struct args {
|
||||||
|
struct utsname *name;
|
||||||
|
} *uap;
|
||||||
|
int *retval;
|
||||||
|
{
|
||||||
|
bcopy(hostname, utsname.nodename, sizeof(utsname.nodename));
|
||||||
|
utsname.nodename[sizeof(utsname.nodename)-1] = '\0';
|
||||||
|
return (copyout((caddr_t)&utsname, (caddr_t)uap->name, sizeof(struct utsname)));
|
||||||
|
}
|
||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
reboot(p, uap, retval)
|
reboot(p, uap, retval)
|
||||||
struct proc *p;
|
struct proc *p;
|
||||||
|
@ -195,7 +195,7 @@ char *syscallnames[] = {
|
|||||||
#endif
|
#endif
|
||||||
"getdomainname", /* 162 = getdomainname */
|
"getdomainname", /* 162 = getdomainname */
|
||||||
"setdomainname", /* 163 = setdomainname */
|
"setdomainname", /* 163 = setdomainname */
|
||||||
"#164", /* 164 = nosys */
|
"uname", /* 164 = uname */
|
||||||
"#165", /* 165 = nosys */
|
"#165", /* 165 = nosys */
|
||||||
"#166", /* 166 = nosys */
|
"#166", /* 166 = nosys */
|
||||||
"#167", /* 167 = nosys */
|
"#167", /* 167 = nosys */
|
||||||
|
@ -219,7 +219,7 @@
|
|||||||
#endif
|
#endif
|
||||||
162 STD 2 getdomainname
|
162 STD 2 getdomainname
|
||||||
163 STD 2 setdomainname
|
163 STD 2 setdomainname
|
||||||
164 UNIMPL 0 nosys
|
164 STD 1 uname
|
||||||
165 UNIMPL 0 nosys
|
165 UNIMPL 0 nosys
|
||||||
166 UNIMPL 0 nosys
|
166 UNIMPL 0 nosys
|
||||||
167 UNIMPL 0 nosys
|
167 UNIMPL 0 nosys
|
||||||
|
@ -5,9 +5,6 @@
|
|||||||
* created from @(#)syscalls.master 7.26 (Berkeley) 3/25/91
|
* created from @(#)syscalls.master 7.26 (Berkeley) 3/25/91
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SYS_SYSCALL_H_
|
|
||||||
#define _SYS_SYSCALL_H_
|
|
||||||
|
|
||||||
#define SYS_exit 1
|
#define SYS_exit 1
|
||||||
#define SYS_fork 2
|
#define SYS_fork 2
|
||||||
#define SYS_read 3
|
#define SYS_read 3
|
||||||
@ -165,9 +162,8 @@
|
|||||||
#define SYS_getfh 161
|
#define SYS_getfh 161
|
||||||
#define SYS_getdomainname 162
|
#define SYS_getdomainname 162
|
||||||
#define SYS_setdomainname 163
|
#define SYS_setdomainname 163
|
||||||
|
#define SYS_uname 164
|
||||||
#define SYS_shmsys 171
|
#define SYS_shmsys 171
|
||||||
#define SYS_setgid 181
|
#define SYS_setgid 181
|
||||||
#define SYS_setegid 182
|
#define SYS_setegid 182
|
||||||
#define SYS_seteuid 183
|
#define SYS_seteuid 183
|
||||||
|
|
||||||
#endif /* !_SYS_SYSCALL_H_ */
|
|
||||||
|
60
sys/sys/utsname.h
Normal file
60
sys/sys/utsname.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1982, 1986, 1991 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* @(#)utsname.h 1.0 (Berkeley) 43/29/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _UTSNAME_H_
|
||||||
|
#define _UTSNAME_H_
|
||||||
|
|
||||||
|
#define SYS_NMLN 32
|
||||||
|
|
||||||
|
struct utsname {
|
||||||
|
char sysname[SYS_NMLN];
|
||||||
|
char nodename[SYS_NMLN];
|
||||||
|
char release[SYS_NMLN];
|
||||||
|
char version[SYS_NMLN];
|
||||||
|
char machine[SYS_NMLN];
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifndef KERNEL
|
||||||
|
#ifdef __STDC__
|
||||||
|
extern int uname(struct utsname *);
|
||||||
|
#else
|
||||||
|
extern int uname();
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
extern struct utsname utsname;
|
||||||
|
#endif /* KERNEL */
|
||||||
|
|
||||||
|
#endif /* _UTSNAME_H_ */
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
# @(#)Makefile 5.8.1.1 (Berkeley) 5/8/91
|
# @(#)Makefile 5.8.1.1 (Berkeley) 5/8/91
|
||||||
#
|
#
|
||||||
# $Header: /cvsroot/src/usr.bin/Makefile,v 1.17 1993/04/30 08:04:14 glass Exp $
|
# $Header: /cvsroot/src/usr.bin/Makefile,v 1.18 1993/05/06 10:46:12 cgd Exp $
|
||||||
|
|
||||||
SUBDIR= ar biff basename cal calendar \
|
SUBDIR= ar biff basename cal calendar \
|
||||||
checknr chpass cksum cmp col colcrt colrm column comm compress \
|
checknr chpass cksum cmp col colcrt colrm column comm compress \
|
||||||
@ -14,9 +14,9 @@ SUBDIR= ar biff basename cal calendar \
|
|||||||
rdist ref renice rlogin rpcgen rpcinfo rsh ruptime rwall rwho \
|
rdist ref renice rlogin rpcgen rpcinfo rsh ruptime rwall rwho \
|
||||||
sccs script sed shar showmount size soelim split strings \
|
sccs script sed shar showmount size soelim split strings \
|
||||||
strip su symorder tail talk tcopy tee telnet tftp time \
|
strip su symorder tail talk tcopy tee telnet tftp time \
|
||||||
tip tn3270 touch tput tr true tset tsort tty ul unexpand unifdef uniq \
|
tip tn3270 touch tput tr true tset tsort tty ul uname unexpand \
|
||||||
unvis users uudecode uuencode vacation vgrind vis vmstat \
|
unifdef uniq unvis users uudecode uuencode vacation vgrind vis \
|
||||||
w wall wc what whereis which who whoami whois window \
|
vmstat w wall wc what whereis which who whoami whois window write \
|
||||||
write xargs xinstall xstr yacc yes
|
xargs xinstall xstr yacc yes
|
||||||
|
|
||||||
.include <bsd.subdir.mk>
|
.include <bsd.subdir.mk>
|
||||||
|
5
usr.bin/uname/Makefile
Normal file
5
usr.bin/uname/Makefile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# @(#)Makefile 5.3 (Berkeley) 5/11/90
|
||||||
|
|
||||||
|
PROG= uname
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
77
usr.bin/uname/uname.1
Normal file
77
usr.bin/uname/uname.1
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
.\" Copyright (c) 1990 The Regents of the University of California.
|
||||||
|
.\" All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" Redistribution and use in source and binary forms, with or without
|
||||||
|
.\" modification, are permitted provided that the following conditions
|
||||||
|
.\" are met:
|
||||||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer.
|
||||||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||||||
|
.\" documentation and/or other materials provided with the distribution.
|
||||||
|
.\" 3. All advertising materials mentioning features or use of this software
|
||||||
|
.\" must display the following acknowledgement:
|
||||||
|
.\" This product includes software developed by the University of
|
||||||
|
.\" California, Berkeley and its contributors.
|
||||||
|
.\" 4. Neither the name of the University nor the names of its contributors
|
||||||
|
.\" may be used to endorse or promote products derived from this software
|
||||||
|
.\" without specific prior written permission.
|
||||||
|
.\"
|
||||||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
.\" SUCH DAMAGE.
|
||||||
|
.\"
|
||||||
|
.\" @(#)du.1 6.13 (Berkeley) 6/20/91
|
||||||
|
.\"
|
||||||
|
.Dd March 29, 1992
|
||||||
|
.Dt UNAME 1
|
||||||
|
.Os Posix
|
||||||
|
.Sh NAME
|
||||||
|
.Nm uname
|
||||||
|
.Nd Print name of current UNIX system
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm uname
|
||||||
|
.Op Fl snrvma
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
The
|
||||||
|
.Nm uname
|
||||||
|
prints the current system name of the UNIX system on
|
||||||
|
the standard output file. It is mainly useful to determine
|
||||||
|
which system one is using.
|
||||||
|
.Pp
|
||||||
|
The following options are available:
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It Fl s
|
||||||
|
print the system name (default).
|
||||||
|
.It Fl n
|
||||||
|
print the nodename (the nodename may be a name
|
||||||
|
that the system is known by to a communications
|
||||||
|
network).
|
||||||
|
.It Fl r
|
||||||
|
print the operating system release.
|
||||||
|
.It Fl v
|
||||||
|
print the operating system version.
|
||||||
|
.It Fl m
|
||||||
|
print the machine hardware name.
|
||||||
|
.It Fl a
|
||||||
|
print all the above information.
|
||||||
|
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr hostname 1 ,
|
||||||
|
.Xr machine 1 ,
|
||||||
|
.Xr uname 2
|
||||||
|
.Sh STANDARDS
|
||||||
|
The
|
||||||
|
.Nm uname
|
||||||
|
utility is expected to be
|
||||||
|
.St -p1003.2
|
||||||
|
compatible.
|
||||||
|
|
72
usr.bin/uname/uname.c
Normal file
72
usr.bin/uname/uname.c
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* uname - print system information. Jeff Comstock - Bloomington, MN USA 1992
|
||||||
|
* Usage: uname [-asnrvm]
|
||||||
|
* -s prints system name
|
||||||
|
* -n prints nodename
|
||||||
|
* -r prints software release
|
||||||
|
* -v prints os version
|
||||||
|
* -m prints machine name
|
||||||
|
* -a prinst all the above information
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
|
#define SYSNAME 0
|
||||||
|
#define NODENAME 1
|
||||||
|
#define RELEASE 2
|
||||||
|
#define VERSION 3
|
||||||
|
#define MACHINE 4
|
||||||
|
|
||||||
|
struct utsname u;
|
||||||
|
|
||||||
|
struct utstab {
|
||||||
|
char *str;
|
||||||
|
int requested;
|
||||||
|
} uttab[] = {
|
||||||
|
{ u.sysname, 0 },
|
||||||
|
{ u.nodename, 0 },
|
||||||
|
{ u.release, 0 },
|
||||||
|
{ u.version, 0 },
|
||||||
|
{ u.machine, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
main(int argc, char **argv) {
|
||||||
|
char *opts="amnrsv";
|
||||||
|
register int c,space, all=0;
|
||||||
|
|
||||||
|
if ( ! uname(&u) ) {
|
||||||
|
if ( argc == 1 ) {
|
||||||
|
puts(u.sysname);
|
||||||
|
} else {
|
||||||
|
while ( (c = getopt(argc,argv,opts)) != -1 ) {
|
||||||
|
switch ( c ) {
|
||||||
|
case 'a' : all++;
|
||||||
|
break;
|
||||||
|
case 'm' : uttab[MACHINE].requested++;
|
||||||
|
break;
|
||||||
|
case 'n' : uttab[NODENAME].requested++;
|
||||||
|
break;
|
||||||
|
case 'r' : uttab[RELEASE].requested++;
|
||||||
|
break;
|
||||||
|
case 's' : uttab[SYSNAME].requested++;
|
||||||
|
break;
|
||||||
|
case 'v' : uttab[VERSION].requested++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
space=0;
|
||||||
|
for(c=0; c <= MACHINE; c++) {
|
||||||
|
if ( uttab[c].requested || all ) {
|
||||||
|
if ( space )
|
||||||
|
putchar(' ');
|
||||||
|
printf("%s", uttab[c].str);
|
||||||
|
space++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
puts("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
perror("uname");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user