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've attached a patch that doc=
uments the syntax of option values in<br>config(5). It goes under the "=
;options" statement in OPTIONS SELECTION,<br>with a short cross refere=
nce from "defparam".<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 \", in which case=
fprintstr() drops every<br>backslash. That is why<br><br> options CNMAGIC=
=3D"\"\\x27\\x01\""<br><br>gives #define CNMAGIC "=
\x27\x01" 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"\"\\x27\\x01\""<br> options KGDB_DEVNAME=3D"(=
\"com\")"<br> options PR60899_UNDECLARED=3D"\"abc=
\""<br><br>which produced<br><br> opt_cnmagic.h: #define CNMAGI=
C "\x27\x01"<br> opt_kgdb.h: #define KGDB_DEVNAME (\"co=
m\")<br> Makefile: -DPR60899_UNDECLARED=3D"\"abc\&quo=
t;"<br><br>mandoc -Tlint shows no new warnings. I didn'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