mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-30 10:52:50 +00:00
Add -K (__FreeBSD_version of kernel) and -U (__FreeBSD_version of userland).
Things like Makefile.inc1 resort to parsing /usr/include/osreldate.h with awk because this isn't easily available by other means. The separation of user and kernel versions is important for jail/chroot environments.
This commit is contained in:
parent
77dabf96d9
commit
876a7cf40c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=256557
@ -36,7 +36,7 @@
|
||||
.Nd display information about the system
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl aimnoprsv
|
||||
.Op Fl aiKmnoprsUv
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
@ -55,6 +55,10 @@ and
|
||||
were specified.
|
||||
.It Fl i
|
||||
Write the kernel ident to standard output.
|
||||
.It Fl K
|
||||
Write the
|
||||
.Fx
|
||||
version of the kernel.
|
||||
.It Fl m
|
||||
Write the type of the current hardware platform to standard output.
|
||||
.It Fl n
|
||||
@ -70,6 +74,10 @@ Write the current release level of the operating system
|
||||
to standard output.
|
||||
.It Fl s
|
||||
Write the name of the operating system implementation to standard output.
|
||||
.It Fl U
|
||||
Write the
|
||||
.Fx
|
||||
version of the user environment.
|
||||
.It Fl v
|
||||
Write the version level of this release of the operating system
|
||||
to standard output.
|
||||
@ -79,6 +87,14 @@ If the
|
||||
.Fl a
|
||||
flag is specified, or multiple flags are specified, all
|
||||
output is written on a single line, separated by spaces.
|
||||
.Pp
|
||||
The
|
||||
.Fl K
|
||||
and
|
||||
.Fl U
|
||||
flags are intended to be used for fine grain differentiation of incremental
|
||||
.Fx
|
||||
development and user visible changes.
|
||||
.Sh ENVIRONMENT
|
||||
An environment variable composed of the string
|
||||
.Ev UNAME_
|
||||
@ -91,6 +107,8 @@ of the environment variable.
|
||||
.Sh EXIT STATUS
|
||||
.Ex -std
|
||||
.Sh SEE ALSO
|
||||
.Xr feature_present 3 ,
|
||||
.Xr getosreldate 3 ,
|
||||
.Xr sysctl 3 ,
|
||||
.Xr uname 3 ,
|
||||
.Xr sysctl 8
|
||||
@ -104,3 +122,10 @@ specification.
|
||||
The
|
||||
.Nm
|
||||
command appeared in PWB UNIX.
|
||||
.Pp
|
||||
The
|
||||
.Fl K
|
||||
and
|
||||
.Fl U
|
||||
extension flags appeared in
|
||||
.Fx 11.0 .
|
||||
|
@ -54,6 +54,8 @@ static const char sccsid[] = "@(#)uname.c 8.2 (Berkeley) 5/4/95";
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <osreldate.h>
|
||||
|
||||
#define MFLAG 0x01
|
||||
#define NFLAG 0x02
|
||||
#define PFLAG 0x04
|
||||
@ -61,10 +63,12 @@ static const char sccsid[] = "@(#)uname.c 8.2 (Berkeley) 5/4/95";
|
||||
#define SFLAG 0x10
|
||||
#define VFLAG 0x20
|
||||
#define IFLAG 0x40
|
||||
#define UFLAG 0x80
|
||||
#define KFLAG 0x100
|
||||
|
||||
typedef void (*get_t)(void);
|
||||
static get_t get_ident, get_platform, get_hostname, get_arch,
|
||||
get_release, get_sysname, get_version;
|
||||
get_release, get_sysname, get_kernvers, get_uservers, get_version;
|
||||
|
||||
static void native_ident(void);
|
||||
static void native_platform(void);
|
||||
@ -73,11 +77,13 @@ static void native_arch(void);
|
||||
static void native_release(void);
|
||||
static void native_sysname(void);
|
||||
static void native_version(void);
|
||||
static void native_kernvers(void);
|
||||
static void native_uservers(void);
|
||||
static void print_uname(u_int);
|
||||
static void setup_get(void);
|
||||
static void usage(void);
|
||||
|
||||
static char *ident, *platform, *hostname, *arch, *release, *sysname, *version;
|
||||
static char *ident, *platform, *hostname, *arch, *release, *sysname, *version, *kernvers, *uservers;
|
||||
static int space;
|
||||
|
||||
int
|
||||
@ -89,7 +95,7 @@ main(int argc, char *argv[])
|
||||
setup_get();
|
||||
flags = 0;
|
||||
|
||||
while ((ch = getopt(argc, argv, "aimnoprsv")) != -1)
|
||||
while ((ch = getopt(argc, argv, "aiKmnoprsUv")) != -1)
|
||||
switch(ch) {
|
||||
case 'a':
|
||||
flags |= (MFLAG | NFLAG | RFLAG | SFLAG | VFLAG);
|
||||
@ -97,6 +103,9 @@ main(int argc, char *argv[])
|
||||
case 'i':
|
||||
flags |= IFLAG;
|
||||
break;
|
||||
case 'K':
|
||||
flags |= KFLAG;
|
||||
break;
|
||||
case 'm':
|
||||
flags |= MFLAG;
|
||||
break;
|
||||
@ -113,6 +122,9 @@ main(int argc, char *argv[])
|
||||
case 'o':
|
||||
flags |= SFLAG;
|
||||
break;
|
||||
case 'U':
|
||||
flags |= UFLAG;
|
||||
break;
|
||||
case 'v':
|
||||
flags |= VFLAG;
|
||||
break;
|
||||
@ -153,6 +165,8 @@ setup_get(void)
|
||||
CHECK_ENV("m", platform);
|
||||
CHECK_ENV("p", arch);
|
||||
CHECK_ENV("i", ident);
|
||||
CHECK_ENV("K", kernvers);
|
||||
CHECK_ENV("U", uservers);
|
||||
}
|
||||
|
||||
#define PRINT_FLAG(flags,flag,var) \
|
||||
@ -176,6 +190,8 @@ print_uname(u_int flags)
|
||||
PRINT_FLAG(flags, MFLAG, platform);
|
||||
PRINT_FLAG(flags, PFLAG, arch);
|
||||
PRINT_FLAG(flags, IFLAG, ident);
|
||||
PRINT_FLAG(flags, KFLAG, kernvers);
|
||||
PRINT_FLAG(flags, UFLAG, uservers);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@ -243,9 +259,27 @@ NATIVE_SYSCTL2_GET(arch, CTL_HW, HW_MACHINE_ARCH) {
|
||||
NATIVE_SYSCTLNAME_GET(ident, "kern.ident") {
|
||||
} NATIVE_SET;
|
||||
|
||||
static void
|
||||
native_uservers(void)
|
||||
{
|
||||
static char buf[128];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", __FreeBSD_version);
|
||||
uservers = buf;
|
||||
}
|
||||
|
||||
static void
|
||||
native_kernvers(void)
|
||||
{
|
||||
static char buf[128];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", getosreldate());
|
||||
kernvers = buf;
|
||||
}
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
fprintf(stderr, "usage: uname [-aimnoprsv]\n");
|
||||
fprintf(stderr, "usage: uname [-aiKmnoprsUv]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user