svn commit: r292045 - head/sbin/sysctl
Marcelo Araujo
araujo at FreeBSD.org
Thu Dec 10 02:11:43 UTC 2015
Author: araujo
Date: Thu Dec 10 02:11:42 2015
New Revision: 292045
URL: https://svnweb.freebsd.org/changeset/base/292045
Log:
Add -t option to display field types.
PR: bin/203918
Submitted by: ota <ota at j.email.ne.jp>
Reviewed by: cem
Approved by: bapt (mentor)
Differential Revision: https://reviews.freebsd.org/D4451
Modified:
head/sbin/sysctl/sysctl.8
head/sbin/sysctl/sysctl.c
Modified: head/sbin/sysctl/sysctl.8
==============================================================================
--- head/sbin/sysctl/sysctl.8 Thu Dec 10 02:05:35 2015 (r292044)
+++ head/sbin/sysctl/sysctl.8 Thu Dec 10 02:11:42 2015 (r292045)
@@ -28,7 +28,7 @@
.\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd February 12, 2015
+.Dd December 10, 2015
.Dt SYSCTL 8
.Os
.Sh NAME
@@ -36,13 +36,13 @@
.Nd get or set kernel state
.Sh SYNOPSIS
.Nm
-.Op Fl bdehiNnoRTqx
+.Op Fl bdehiNnoRTtqx
.Op Fl B Ar bufsize
.Op Fl f Ar filename
.Ar name Ns Op = Ns Ar value
.Ar ...
.Nm
-.Op Fl bdehNnoRTqx
+.Op Fl bdehNnoRTtqx
.Op Fl B Ar bufsize
.Fl a
.Sh DESCRIPTION
@@ -140,6 +140,8 @@ Suppress some warnings generated by
to standard error.
.It Fl T
Display only variables that are settable via loader (CTLFLAG_TUN).
+.It Fl t
+Print the type of the variable.
.It Fl W
Display only writable variables that are not statistical.
Useful for determining the set of runtime tunable sysctls.
Modified: head/sbin/sysctl/sysctl.c
==============================================================================
--- head/sbin/sysctl/sysctl.c Thu Dec 10 02:05:35 2015 (r292044)
+++ head/sbin/sysctl/sysctl.c Thu Dec 10 02:11:42 2015 (r292045)
@@ -72,7 +72,7 @@ static const char rcsid[] =
static const char *conffile;
static int aflag, bflag, Bflag, dflag, eflag, hflag, iflag;
-static int Nflag, nflag, oflag, qflag, Tflag, Wflag, xflag;
+static int Nflag, nflag, oflag, qflag, tflag, Tflag, Wflag, xflag;
static int oidfmt(int *, int, char *, u_int *);
static int parsefile(const char *);
@@ -120,6 +120,9 @@ static const char *ctl_typename[CTLTYPE+
[CTLTYPE_S16] = "int16_t",
[CTLTYPE_S32] = "int32_t",
[CTLTYPE_S64] = "int64_t",
+ [CTLTYPE_NODE] = "node",
+ [CTLTYPE_STRING] = "string",
+ [CTLTYPE_OPAQUE] = "opaque",
};
static void
@@ -127,8 +130,8 @@ usage(void)
{
(void)fprintf(stderr, "%s\n%s\n",
- "usage: sysctl [-bdehiNnoqTWx] [ -B <bufsize> ] [-f filename] name[=value] ...",
- " sysctl [-bdehNnoqTWx] [ -B <bufsize> ] -a");
+ "usage: sysctl [-bdehiNnoqTtWx] [ -B <bufsize> ] [-f filename] name[=value] ...",
+ " sysctl [-bdehNnoqTtWx] [ -B <bufsize> ] -a");
exit(1);
}
@@ -142,7 +145,7 @@ main(int argc, char **argv)
setbuf(stdout,0);
setbuf(stderr,0);
- while ((ch = getopt(argc, argv, "AabB:def:hiNnoqTwWxX")) != -1) {
+ while ((ch = getopt(argc, argv, "AabB:def:hiNnoqtTwWxX")) != -1) {
switch (ch) {
case 'A':
/* compatibility */
@@ -184,6 +187,9 @@ main(int argc, char **argv)
case 'q':
qflag = 1;
break;
+ case 't':
+ tflag = 1;
+ break;
case 'T':
Tflag = 1;
break;
@@ -856,7 +862,7 @@ show_var(int *oid, int nlen)
{
u_char buf[BUFSIZ], *val, *oval, *p;
char name[BUFSIZ], fmt[BUFSIZ];
- const char *sep, *sep1;
+ const char *sep, *sep1, *prntype;
int qoid[CTL_MAXNAME+2];
uintmax_t umv;
intmax_t mv;
@@ -902,12 +908,23 @@ show_var(int *oid, int nlen)
else
sep = ": ";
- if (dflag) { /* just print description */
+ ctltype = (kind & CTLTYPE);
+ if (tflag || dflag) {
+ if (!nflag)
+ printf("%s%s", name, sep);
+ if (ctl_typename[ctltype] != NULL)
+ prntype = ctl_typename[ctltype];
+ else
+ prntype = "unknown";
+ if (tflag && dflag)
+ printf("%s%s", prntype, sep);
+ else if (tflag) {
+ printf("%s", prntype);
+ return (0);
+ }
qoid[1] = 5;
j = sizeof(buf);
i = sysctl(qoid, nlen + 2, buf, &j, 0, 0);
- if (!nflag)
- printf("%s%s", name, sep);
printf("%s", buf);
return (0);
}
@@ -925,7 +942,6 @@ show_var(int *oid, int nlen)
warnx("malloc failed");
return (1);
}
- ctltype = (kind & CTLTYPE);
len = j;
i = sysctl(oid, nlen, val, &len, 0, 0);
if (i != 0 || (len == 0 && ctltype != CTLTYPE_STRING)) {
More information about the svn-src-all
mailing list