NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/60899: syntax of config(1) options is not documented



The following reply was made to PR bin/60899; it has been noted by GNATS.

From: GOVIND PANDEY <govindup63%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: bin/60899: syntax of config(1) options is not documented
Date: Sun, 18 Oct 2026 20:50:36 -0400

 --000000000000f8f4d1065e26e688
 Content-Type: multipart/alternative; boundary="000000000000f8f4d0065e26e686"
 
 --000000000000f8f4d0065e26e686
 Content-Type: text/plain; charset="UTF-8"
 
 Hi,
 
 I've attached a patch that documents the syntax of option values in
 config(5). It goes under the "options" statement in OPTIONS SELECTION,
 with a short cross reference from "defparam".
 
 I went through scan.l, gram.y and mkheaders.c to work out what actually
 happens. A value is a number, a bare word, or a double-quoted string.
 The text between the quotes is copied into the #define as is, except
 when it starts with \", in which case fprintstr() drops every
 backslash. That is why
 
 options CNMAGIC="\"\\x27\\x01\""
 
 gives #define CNMAGIC "\x27\x01" but the parenthesised form keeps its
 backslashes. The patch spells this out, and notes that undeclared
 options take the Makefile route instead, where the shell does the
 unquoting.
 
 I checked the text against nbconfig built from netbsd-11 (mkheaders.c
 is the same on HEAD) using amd64 GENERIC with these lines added:
 
 options CNMAGIC="\"\\x27\\x01\""
 options KGDB_DEVNAME="(\"com\")"
 options PR60899_UNDECLARED="\"abc\""
 
 which produced
 
 opt_cnmagic.h: #define CNMAGIC "\x27\x01"
 opt_kgdb.h: #define KGDB_DEVNAME (\"com\")
 Makefile: -DPR60899_UNDECLARED="\"abc\""
 
 mandoc -Tlint shows no new warnings. I didn't change any code, since
 existing kernel configs depend on the current behaviour.
 
 Thanks,
 Govind Pandey
 
 --000000000000f8f4d0065e26e686
 Content-Type: text/html; charset="UTF-8"
 Content-Transfer-Encoding: quoted-printable
 
 <html><body><div dir=3D"auto">Hi,<br><br>I&#39;ve attached a patch that doc=
 uments the syntax of option values in<br>config(5). It goes under the &quot=
 ;options&quot; statement in OPTIONS SELECTION,<br>with a short cross refere=
 nce from &quot;defparam&quot;.<br><br>I went through scan.l, gram.y and mkh=
 eaders.c to work out what actually<br>happens. A value is a number, a bare =
 word, or a double-quoted string.<br>The text between the quotes is copied i=
 nto the #define as is, except<br>when it starts with \&quot;, in which case=
  fprintstr() drops every<br>backslash. That is why<br><br>  options CNMAGIC=
 =3D&quot;\&quot;\\x27\\x01\&quot;&quot;<br><br>gives #define CNMAGIC &quot;=
 \x27\x01&quot; but the parenthesised form keeps its<br>backslashes. The pat=
 ch spells this out, and notes that undeclared<br>options take the Makefile =
 route instead, where the shell does the<br>unquoting.<br><br>I checked the =
 text against nbconfig built from netbsd-11 (mkheaders.c<br>is the same on H=
 EAD) using amd64 GENERIC with these lines added:<br><br>  options CNMAGIC=
 =3D&quot;\&quot;\\x27\\x01\&quot;&quot;<br>  options KGDB_DEVNAME=3D&quot;(=
 \&quot;com\&quot;)&quot;<br>  options PR60899_UNDECLARED=3D&quot;\&quot;abc=
 \&quot;&quot;<br><br>which produced<br><br>  opt_cnmagic.h:  #define CNMAGI=
 C &quot;\x27\x01&quot;<br>  opt_kgdb.h:     #define KGDB_DEVNAME (\&quot;co=
 m\&quot;)<br>  Makefile:       -DPR60899_UNDECLARED=3D&quot;\&quot;abc\&quo=
 t;&quot;<br><br>mandoc -Tlint shows no new warnings. I didn&#39;t change an=
 y code, since<br>existing kernel configs depend on the current behaviour.<b=
 r><br>Thanks,<br>Govind Pandey<br></div></body></html>
 
 --000000000000f8f4d0065e26e686--
 --000000000000f8f4d1065e26e688
 Content-Type: text/plain; charset="UTF-8"; name="config5-option-values.diff"
 Content-Disposition: attachment; filename="config5-option-values.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: d1ec87d0c2fba052_0.1
 
 ZGlmZiAtLWdpdCBhL3Vzci5iaW4vY29uZmlnL2NvbmZpZy41IGIvdXNyLmJpbi9jb25maWcvY29u
 ZmlnLjUKaW5kZXggM2M2ZGQyYjFhLi5mZWZlNTZmNmIgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vY29u
 ZmlnL2NvbmZpZy41CisrKyBiL3Vzci5iaW4vY29uZmlnL2NvbmZpZy41CkBAIC0yNCw3ICsyNCw3
 IEBACiAuXCIgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
 QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCiAuXCIgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
 QUdFLgogLlwiCi0uRGQgQXVndXN0IDEzLCAyMDI0CisuRGQgT2N0b2JlciAxOSwgMjAyNgogLkR0
 IENPTkZJRyA1CiAuT3MKIC5TaCBOQU1FCkBAIC00MTYsNiArNDE2LDEzIEBAIEJlaGF2ZXMgbGlr
 ZQogZXhjZXB0IHRoZSBkZWZpbmVkIG9wdGlvbiBtdXN0IGhhdmUgYSB2YWx1ZS4KIFN1Y2ggb3B0
 aW9ucyBhcmUgbm90IHR5cGVkOgogdGhleSBjYW4gaGF2ZSBlaXRoZXIgYSBudW1lcmljIG9yIGEg
 c3RyaW5nIHZhbHVlLgorVGhlIHN5bnRheCBvZgorLkFyIHZhbHVlCitpcyBkZXNjcmliZWQgd2l0
 aCB0aGUKKy5JYyBvcHRpb25zCitzdGF0ZW1lbnQgaW4gdGhlCisuU3ggT1BUSU9OUyBTRUxFQ1RJ
 T04KK3NlY3Rpb24uCiBJZiBhCiAuQXIgdmFsdWUKIGlzIHNwZWNpZmllZCwgaXQgaXMgdHJlYXRl
 ZCBhcyBhIGRlZmF1bHQsIGFuZCB0aGUgb3B0aW9uIGlzCkBAIC03OTAsOSArNzk3LDgwIEBAIGFu
 ZAogLkljIGRlZnBhcmFtCiBzdGF0ZW1lbnRzKS4KIC5QcAorQQorLkFyIHZhbHVlCitpcyBhIG51
 bWJlciwgYSBiYXJlIHdvcmQsIG9yIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcuCitOdW1iZXJzIGFy
 ZSBkZWNpbWFsLCBvY3RhbCB3aXRoIGEgbGVhZGluZworLkxpIDAgLAorb3IgaGV4YWRlY2ltYWwg
 d2l0aCBhIGxlYWRpbmcKKy5MaSAweCAsCithbmQgbWF5IGJlIG5lZ2F0aXZlLgorQSBiYXJlIHdv
 cmQgc3RhcnRzIHdpdGggYSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSBhbmQgY29udGludWVzIHdp
 dGgKK2xldHRlcnMsIGRpZ2l0cywgdW5kZXJzY29yZXMsIG9yIGh5cGhlbnMuCitXaXRoaW4gYSBk
 b3VibGUtcXVvdGVkIHN0cmluZywgYSBiYWNrc2xhc2ggbWFrZXMgdGhlIGZvbGxvd2luZworY2hh
 cmFjdGVyIHBhcnQgb2YgdGhlIHN0cmluZywgc28gYSBkb3VibGUgcXVvdGUgaXMgd3JpdHRlbgor
 LkxpIFxlXCYiCithbmQgYSBiYWNrc2xhc2ggaXMgd3JpdHRlbgorLkxpIFxlXGUgLgorLlBwCitU
 aGUKKy5BciB2YWx1ZQoraXMgY29waWVkIGludG8gdGhlIGdlbmVyYXRlZCBoZWFkZXIgZmlsZSBh
 cyB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGEKKy5MaSAjZGVmaW5lCit3aXRoIHRoZSBlbmNsb3Np
 bmcgZG91YmxlIHF1b3RlcyByZW1vdmVkIGFuZCB0aGUgdGV4dCBiZXR3ZWVuIHRoZW0KK290aGVy
 d2lzZSB1bmNoYW5nZWQsIHdpdGggb25lIGV4Y2VwdGlvbi4KK0lmIHRoZSB0ZXh0IHN0YXJ0cyB3
 aXRoCisuTGkgXGVcJiIgLAorZWFjaCBiYWNrc2xhc2ggaXMgZHJvcHBlZCBhbmQgdGhlIGNoYXJh
 Y3RlciBmb2xsb3dpbmcgaXQgaXMga2VwdCwgc28KKy5MaSBcZVxlCitiZWNvbWVzCisuTGkgXGUK
 K2FuZAorLkxpIFxlXCYiCitiZWNvbWVzCisuTGkgXCYiIC4KK1RoaXMgaXMgaG93IGFuIG9wdGlv
 biB3aG9zZSB2YWx1ZSBpcyBhIEMgc3RyaW5nIGxpdGVyYWwgaXMgd3JpdHRlbjoKKy5CZCAtbGl0
 ZXJhbCAtb2Zmc2V0IGluZGVudAorb3B0aW9ucyBLR0RCX0RFVk5BTUU9IlxlImNvbVxlIiIKKy5F
 ZAorLlBwCitwcm9kdWNlcworLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CisjZGVmaW5lIEtH
 REJfREVWTkFNRSAiY29tIgorLkVkCisuUHAKK2FuZAorLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5k
 ZW50CitvcHRpb25zIENOTUFHSUM9IlxlIlxlXGV4MjdcZVxleDAxXGUiIgorLkVkCisuUHAKK3By
 b2R1Y2VzCisuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKyNkZWZpbmUgQ05NQUdJQyAiXGV4
 MjdcZXgwMSIKKy5FZAorLlBwCitFdmVyeSBiYWNrc2xhc2ggaXMgZHJvcHBlZCwgc28gYSBDIGVz
 Y2FwZSBzZXF1ZW5jZSBzdWNoIGFzCisuTGkgXGVuCitoYXMgdG8gYmUgd3JpdHRlbiBhcworLkxp
 IFxlXGVuCitpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorVGhlIHVuZXNjYXBpbmcgb25seSBo
 YXBwZW5zIHdoZW4gdGhlIHRleHQgc3RhcnRzIHdpdGgKKy5MaSBcZVwmIiAsCitzbyBhIEMgc3Ry
 aW5nIGxpdGVyYWwgd3JhcHBlZCBpbiBhbnl0aGluZyBlbHNlLCBzdWNoIGFzIHBhcmVudGhlc2Vz
 LAoraXMgY29waWVkIHdpdGggaXRzIGJhY2tzbGFzaGVzIGludGFjdCBhbmQgd2lsbCBub3QgY29t
 cGlsZS4KKy5QcAogSWYgdGhlIG9wdGlvbiBoYXMgbm90IGJlZW4gZGVjbGFyZWQgaW4gdGhlIG9w
 dGlvbnMgZGVzY3JpcHRpb24gcGFydCBvZiB0aGUKIGtlcm5lbCBjb25maWd1cmF0aW9uIG1hY2hp
 bmVyeSwgaXQgd2lsbCBiZSBhZGRlZCBhcyBhIHByZS1wcm9jZXNzb3IgZGVmaW5pdGlvbgogd2hl
 biBzb3VyY2UgZmlsZXMgYXJlIGNvbXBpbGVkLgorSW4gdGhhdCBjYXNlIHRoZQorLkFyIHZhbHVl
 CitpcyBub3Qgd3JpdHRlbiB0byBhIGhlYWRlciBmaWxlIGJ1dCBwYXNzZWQgb24gdGhlIGNvbXBp
 bGVyIGNvbW1hbmQgbGluZQordGhyb3VnaCB0aGUga2VybmVsIE1ha2VmaWxlLCBhcworLkxpIC1E
 IE5zIEFyIG5hbWUgTnMgTGkgPSBOcyBMaSBcJiIgTnMgQXIgdmFsdWUgTnMgTGkgXCYiICwKK2Fu
 ZCB0aGUgc2hlbGwgcmVtb3ZlcyB0aGUgYmFja3NsYXNoZXM7Citmb3IgYSB2YWx1ZSB0aGF0IHN0
 YXJ0cyB3aXRoCisuTGkgXGVcJiIKK3RoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgYWJvdmUuCiBJ
 ZiB0aGUgb3B0aW9uIGhhcyBwcmV2aW91c2x5IGJlZW4gc2VsZWN0ZWQsIHRoZSBzdGF0ZW1lbnQg
 cHJvZHVjZXMgYQogd2FybmluZywgYW5kIHRoZSBuZXcKIC5JYyBvcHRpb25zCg==
 --000000000000f8f4d1065e26e688--
 




Home | Main Index | Thread Index | Old Index