Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Apr 2003 16:03:07 +0100
From:      "Andy Gilligan" <andy@evo6.org>
To:        "Simon L. Nielsen" <simon@nitro.dk>
Cc:        stable@freebsd.org
Subject:   Re: MFC for sysctl descriptions
Message-ID:  <004401c30684$c92f35f0$0a00000a@vx>
References:  <000801c3067d$b6379340$0a00000a@vx> <002101c30681$0d9c97e0$0a00000a@vx> <20030419145427.GC15529@nitro.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_0041_01C3068D.2ACEFEF0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Sorry, my bad :)

Patch updated to include SYNOPSIS changes.

- Andy

----- Original Message ----- 
From: "Simon L. Nielsen" <simon@nitro.dk>
To: "Andy Gilligan" <andy@evo6.org>
Cc: <stable@freebsd.org>
Sent: Saturday, April 19, 2003 3:54 PM
Subject: Re: MFC for sysctl descriptions

On 2003.04.19 15:36:24 +0100, Andy Gilligan wrote:
> The patch attached to the previous email did not include
> the updated sysctl.8 manpage (although the link was correct).

The patch for the manpage seems to be missing the update to the SYNOPSIS
section.

I'm waiting for my build world/kernel to finish building to test the
patch...

-- 
Simon L. Nielsen

------=_NextPart_000_0041_01C3068D.2ACEFEF0
Content-Type: application/octet-stream;
	name="sysctl-mfc.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="sysctl-mfc.patch"

Index: sbin/sysctl/sysctl.8=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /data/ncvs/src/sbin/sysctl/sysctl.8,v=0A=
retrieving revision 1.23.2.15=0A=
diff -u -r1.23.2.15 sysctl.8=0A=
--- sbin/sysctl/sysctl.8	23 Feb 2003 22:20:40 -0000	1.23.2.15=0A=
+++ sbin/sysctl/sysctl.8	19 Apr 2003 14:59:15 -0000=0A=
@@ -40,11 +40,11 @@=0A=
 .Nd get or set kernel state=0A=
 .Sh SYNOPSIS=0A=
 .Nm=0A=
-.Op Fl beNnox=0A=
+.Op Fl bdeNnox=0A=
 .Ar name Ns Op =3D Ns Ar value=0A=
 .Ar ...=0A=
 .Nm=0A=
-.Op Fl beNnox=0A=
+.Op Fl bdeNnox=0A=
 .Fl a=0A=
 .Sh DESCRIPTION=0A=
 The=0A=
@@ -71,6 +71,8 @@=0A=
 Force the value of the variable(s) to be output in raw, binary format.=0A=
 No names are printed and no terminating newlines are output.=0A=
 This is mostly useful with a single variable.=0A=
+.It Fl d=0A=
+Print the description of the variable instead of its value.=0A=
 .It Fl e=0A=
 Separate the name and the value of the variable(s) with=0A=
 .Ql =3D .=0A=
Index: sbin/sysctl/sysctl.c=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /data/ncvs/src/sbin/sysctl/sysctl.c,v=0A=
retrieving revision 1.25.2.10=0A=
diff -u -r1.25.2.10 sysctl.c=0A=
--- sbin/sysctl/sysctl.c	22 Jan 2003 00:36:23 -0000	1.25.2.10=0A=
+++ sbin/sysctl/sysctl.c	19 Apr 2003 13:29:15 -0000=0A=
@@ -63,7 +63,7 @@=0A=
 #include <string.h>=0A=
 #include <unistd.h>=0A=
 =0A=
-static int	aflag, bflag, eflag, Nflag, nflag, oflag, xflag;=0A=
+static int	aflag, bflag, dflag, eflag, Nflag, nflag, oflag, xflag;=0A=
 =0A=
 static int	oidfmt(int *, int, char *, u_int *);=0A=
 static void	parse(char *);=0A=
@@ -78,8 +78,8 @@=0A=
 {=0A=
 =0A=
 	(void)fprintf(stderr, "%s\n%s\n",=0A=
-	    "usage: sysctl [-beNnox] variable[=3Dvalue] ...",=0A=
-	    "       sysctl [-beNnox] -a");=0A=
+	    "usage: sysctl [-bdeNnox] variable[=3Dvalue] ...",=0A=
+	    "       sysctl [-bdeNnox] -a");=0A=
 	exit(1);=0A=
 }=0A=
 =0A=
@@ -90,7 +90,7 @@=0A=
 	setbuf(stdout,0);=0A=
 	setbuf(stderr,0);=0A=
 =0A=
-	while ((ch =3D getopt(argc, argv, "AabeNnowxX")) !=3D -1) {=0A=
+	while ((ch =3D getopt(argc, argv, "AabdeNnowxX")) !=3D -1) {=0A=
 		switch (ch) {=0A=
 		case 'A':=0A=
 			/* compatibility */=0A=
@@ -102,6 +102,9 @@=0A=
 		case 'b':=0A=
 			bflag =3D 1;=0A=
 			break;=0A=
+		case 'd':=0A=
+			dflag =3D 1;=0A=
+			break;=0A=
 		case 'e':=0A=
 			eflag =3D 1;=0A=
 			break;=0A=
@@ -491,6 +494,15 @@=0A=
 	else=0A=
 		sep =3D ": ";=0A=
 =0A=
+	if (dflag) {	/* just print description */=0A=
+		qoid[1] =3D 5;=0A=
+		j =3D sizeof(buf);=0A=
+		i =3D sysctl(qoid, nlen + 2, buf, &j, 0, 0);=0A=
+		if (!nflag)=0A=
+			printf("%s%s", name, sep);=0A=
+		printf("%s", buf);=0A=
+		return(0);=0A=
+	}=0A=
 	/* find an estimate of how much we need for this var */=0A=
 	j =3D 0;=0A=
 	i =3D sysctl(oid, nlen, 0, &j, 0, 0);=0A=
Index: sys/kern/kern_sysctl.c=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /data/ncvs/src/sys/kern/kern_sysctl.c,v=0A=
retrieving revision 1.92.2.8=0A=
diff -u -r1.92.2.8 kern_sysctl.c=0A=
--- sys/kern/kern_sysctl.c	9 Sep 2002 19:27:58 -0000	1.92.2.8=0A=
+++ sys/kern/kern_sysctl.c	19 Apr 2003 13:52:00 -0000=0A=
@@ -303,6 +303,8 @@=0A=
 		}=0A=
 		sysctl_unregister_oid(oidp);=0A=
 		if (del) {=0A=
+			if (oidp->descr)=0A=
+				free((void *)(uintptr_t)(const void *)oidp->descr, M_SYSCTLOID);=0A=
 			free((void *)(uintptr_t)(const void *)oidp->oid_name,=0A=
 			     M_SYSCTLOID);=0A=
 			free(oidp, M_SYSCTLOID);=0A=
@@ -364,6 +366,12 @@=0A=
 		oidp->oid_arg2 =3D arg2;=0A=
 	}=0A=
 	oidp->oid_fmt =3D fmt;=0A=
+	if (descr) {=0A=
+		int len =3D strlen(descr) + 1;=0A=
+		oidp->descr =3D malloc(len, M_SYSCTLOID, M_WAITOK);=0A=
+		if (oidp->descr)=0A=
+			strcpy((char *)(uintptr_t)(const void *)oidp->descr, descr);=0A=
+	};=0A=
 	/* Update the context, if used */=0A=
 	if (clist !=3D NULL)=0A=
 		sysctl_ctx_entry_add(clist, oidp);=0A=
@@ -718,6 +726,24 @@=0A=
 =0A=
 =0A=
 SYSCTL_NODE(_sysctl, 4, oidfmt, CTLFLAG_RD, sysctl_sysctl_oidfmt, "");=0A=
+=0A=
+static int=0A=
+sysctl_sysctl_oiddescr(SYSCTL_HANDLER_ARGS)=0A=
+{=0A=
+	struct sysctl_oid *oid;=0A=
+	int error;=0A=
+=0A=
+	error =3D sysctl_find_oid(arg1, arg2, &oid, NULL, req);=0A=
+	if (error)=0A=
+		return (error);=0A=
+	=0A=
+	if (!oid->descr)=0A=
+		return (ENOENT);=0A=
+	error =3D SYSCTL_OUT(req, oid->descr, strlen(oid->descr) + 1);=0A=
+	return (error);=0A=
+}=0A=
+=0A=
+SYSCTL_NODE(_sysctl, 5, oiddescr, CTLFLAG_RD, sysctl_sysctl_oiddescr, =
"");=0A=
 =0A=
 /*=0A=
  * Default "handler" functions.=0A=
Index: sys/sys/sysctl.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /data/ncvs/src/sys/sys/sysctl.h,v=0A=
retrieving revision 1.81.2.9=0A=
diff -u -r1.81.2.9 sysctl.h=0A=
--- sys/sys/sysctl.h	9 Sep 2002 19:27:54 -0000	1.81.2.9=0A=
+++ sys/sys/sysctl.h	19 Apr 2003 13:24:38 -0000=0A=
@@ -133,6 +133,7 @@=0A=
 	int 		(*oid_handler)(SYSCTL_HANDLER_ARGS);=0A=
 	const char	*oid_fmt;=0A=
 	int		oid_refcnt;=0A=
+	const char	*descr;=0A=
 };=0A=
 =0A=
 #define SYSCTL_IN(r, p, l) (r->newfunc)(r, p, l)=0A=
@@ -174,7 +175,7 @@=0A=
 #define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, =
descr) \=0A=
 	static struct sysctl_oid sysctl__##parent##_##name =3D {		 \=0A=
 		&sysctl_##parent##_children, { 0 },			 \=0A=
-		nbr, kind, a1, a2, #name, handler, fmt, 0 };		 \=0A=
+		nbr, kind, a1, a2, #name, handler, fmt, 0, descr };		 \=0A=
 	DATA_SET(sysctl_set, sysctl__##parent##_##name);=0A=
 =0A=
 #define SYSCTL_ADD_OID(ctx, parent, nbr, name, kind, a1, a2, handler, =
fmt, descr) \=0A=

------=_NextPart_000_0041_01C3068D.2ACEFEF0--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?004401c30684$c92f35f0$0a00000a>