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>