[PATCH 1/5] builtin: Reduce use of trivial strlen

Eric Blake via M4-patches <[email protected]> Wed, 2 Apr 2025 17:28:36 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <[email protected]>
V2hlbiB0aGUgbGVuZ3RoIGlzIGFscmVhZHkga25vd24gYW5kIGxpa2VseSB0byBiZSBzaG9ydCwg
YXZvaWRpbmcgdGhlCmZ1bmN0aW9uIGNhbGwgdG8gc3RybGVuIGNhbiBiZSBhIHNsaWdodCBvcHRp
bWl6YXRpb24uICBUd28gb2J2aW91cwpwbGFjZXM6IHdoZW4gbnRvYSgpIGJ1aWxkcyBhIG51bWJl
ciBhbmQgYWxyZWFkeSBrbm93cyB3aGVyZSB0aGUgXDAgaXMsCmFuZCB3aGVuIGR1bXBpbmcgYXJn
dW1lbnRzIHdoZW4gdGhlIHNlcGFyYXRvciBpcyBhbHdheXMgYSBzaW5nbGUgYnl0ZS4KCiogc3Jj
L2J1aWx0aW46YyAoZHVtcF9hcmdzKTogQ2hhbmdlIHR5cGUgb2Ygc2VwLgoobTRfc2hpZnQsIG00
X2VycnByaW50LCBtNF9tNHdyYXAsIGV4cGFuZF91c2VyX21hY3JvKTogQWRqdXN0IGFsbApjYWxs
ZXJzLgoobnRvYSk6IEFkZCBvcHRpb25hbCBlbmQgcGFyYW1ldGVyLgooc2hpcG91dF9pbnQsIG00
X2V2YWwsIG00X21ha2V0ZW1wKTogQWRqdXN0IGFsbCBjYWxsZXJzLgoqIHNyYy9kZWJ1Zy5jICh0
cmFjZV9mb3JtYXQpOiBMaWtld2lzZS4KKiBzcmMvb3V0cHV0LmMgKHNoaXBvdXRfdGV4dCk6IExp
a2V3aXNlLgoqIHNyYy9tNC5oIChudG9hKTogQWRqdXN0IHByb3RvdHlwZS4KLS0tCiBzcmMvYnVp
bHRpbi5jIHwgMzQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2RlYnVn
LmMgICB8ICAyICstCiBzcmMvbTQuaCAgICAgIHwgIDIgKy0KIHNyYy9vdXRwdXQuYyAgfCAgMiAr
LQogNCBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9zcmMvYnVpbHRpbi5jIGIvc3JjL2J1aWx0aW4uYwppbmRleCBlZmQ1MWQ5ZS4u
MzQ0N2RjMzMgMTAwNjQ0Ci0tLSBhL3NyYy9idWlsdGluLmMKKysrIGIvc3JjL2J1aWx0aW4uYwpA
QCAtNDQ3LDcgKzQ0Nyw3IEBAIG51bWVyaWNfYXJnICh0b2tlbl9kYXRhICptYWNybywgY29uc3Qg
Y2hhciAqYXJnLCBpbnQgKnZhbHVlcCkKIHN0YXRpYyBjaGFyIGNvbnN0IGRpZ2l0c1tdID0gIjAx
MjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CgogY29uc3QgY2hhciAqCi1udG9h
IChpbnQzMl90IHZhbHVlLCBpbnQgcmFkaXgpCitudG9hIChpbnQzMl90IHZhbHVlLCBpbnQgcmFk
aXgsIGNvbnN0IGNoYXIgKiplbmQpCiB7CiAgIGJvb2wgbmVnYXRpdmU7CiAgIHVpbnQzMl90IHV2
YWx1ZTsKQEAgLTQ1NSw2ICs0NTUsOCBAQCBudG9hIChpbnQzMl90IHZhbHVlLCBpbnQgcmFkaXgp
CiAgIGNoYXIgKnMgPSAmc3RyW3NpemVvZiBzdHJdOwoKICAgKi0tcyA9ICdcMCc7CisgIGlmIChl
bmQpCisgICAgKmVuZCA9IHM7CgogICBpZiAodmFsdWUgPCAwKQogICAgIHsKQEAgLTQ4OCw5ICs0
OTAsMTAgQEAgc3RhdGljIHZvaWQKIHNoaXBvdXRfaW50IChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBp
bnQgdmFsKQogewogICBjb25zdCBjaGFyICpzOworICBjb25zdCBjaGFyICplOwoKLSAgcyA9IG50
b2EgKChpbnQzMl90KSB2YWwsIDEwKTsKLSAgb2JzdGFja19ncm93IChvYnMsIHMsIHN0cmxlbiAo
cykpOworICBzID0gbnRvYSAoKGludDMyX3QpIHZhbCwgMTAsICZlKTsKKyAgb2JzdGFja19ncm93
IChvYnMsIHMsIGUgLSBzKTsKIH0KCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC01MDAsMTUgKzUwMywxNCBA
QCBzaGlwb3V0X2ludCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IHZhbCkKCiBzdGF0aWMgdm9p
ZAogZHVtcF9hcmdzIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5fZGF0YSAq
KmFyZ3YsCi0gICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcCwgYm9vbCBxdW90ZWQpCisgICAgICAg
ICAgIGNoYXIgc2VwLCBib29sIHF1b3RlZCkKIHsKICAgaW50IGk7Ci0gIHNpemVfdCBsZW4gPSBz
dHJsZW4gKHNlcCk7CgogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKICAgICAg
IGlmIChpID4gMSkKLSAgICAgICAgb2JzdGFja19ncm93IChvYnMsIHNlcCwgbGVuKTsKKyAgICAg
ICAgb2JzdGFja18xZ3JvdyAob2JzLCBzZXApOwogICAgICAgaWYgKHF1b3RlZCkKICAgICAgICAg
b2JzdGFja19ncm93IChvYnMsIGxxdW90ZS5zdHJpbmcsIGxxdW90ZS5sZW5ndGgpOwogICAgICAg
b2JzdGFja19ncm93IChvYnMsIFRPS0VOX0RBVEFfVEVYVCAoYXJndltpXSksCkBAIC0xMDg5LDYg
KzEwOTEsNyBAQCBtNF9ldmFsIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5f
ZGF0YSAqKmFyZ3YpCiAgIGludCByYWRpeCA9IDEwOwogICBpbnQgbWluID0gMTsKICAgY29uc3Qg
Y2hhciAqczsKKyAgY29uc3QgY2hhciAqZTsKCiAgIGlmIChiYWRfYXJnYyAoYXJndlswXSwgYXJn
YywgMiwgNCkpCiAgICAgcmV0dXJuOwpAQCAtMTEzNSwxNyArMTEzOCwxNyBAQCBtNF9ldmFsIChz
dHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5fZGF0YSAqKmFyZ3YpCiAgICAgICBy
ZXR1cm47CiAgICAgfQoKLSAgcyA9IG50b2EgKHZhbHVlLCByYWRpeCk7CisgIHMgPSBudG9hICh2
YWx1ZSwgcmFkaXgsICZlKTsKCiAgIGlmICgqcyA9PSAnLScpCiAgICAgewogICAgICAgb2JzdGFj
a18xZ3JvdyAob2JzLCAnLScpOwogICAgICAgcysrOwogICAgIH0KLSAgZm9yIChtaW4gLT0gc3Ry
bGVuIChzKTsgLS1taW4gPj0gMDspCisgIGZvciAobWluIC09IGUgLSBzOyAtLW1pbiA+PSAwOykK
ICAgICBvYnN0YWNrXzFncm93IChvYnMsICcwJyk7CgotICBvYnN0YWNrX2dyb3cgKG9icywgcywg
c3RybGVuIChzKSk7CisgIG9ic3RhY2tfZ3JvdyAob2JzLCBzLCBlIC0gcyk7CiB9Cgogc3RhdGlj
IHZvaWQKQEAgLTEyOTAsNyArMTI5Myw3IEBAIG00X3NoaWZ0IChzdHJ1Y3Qgb2JzdGFjayAqb2Jz
LCBpbnQgYXJnYywgdG9rZW5fZGF0YSAqKmFyZ3YpCiB7CiAgIGlmIChiYWRfYXJnYyAoYXJndlsw
XSwgYXJnYywgMiwgLTEpKQogICAgIHJldHVybjsKLSAgZHVtcF9hcmdzIChvYnMsIGFyZ2MgLSAx
LCBhcmd2ICsgMSwgIiwiLCB0cnVlKTsKKyAgZHVtcF9hcmdzIChvYnMsIGFyZ2MgLSAxLCBhcmd2
ICsgMSwgJywnLCB0cnVlKTsKIH0KCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgpAQCAtMTQ2NCwxNCAr
MTQ2NywxNSBAQCBtNF9tYWtldGVtcCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRv
a2VuX2RhdGEgKiphcmd2KQogICAgICAgaW50IGxlbiA9IHN0cmxlbiAoc3RyKTsKICAgICAgIGlu
dCBpOwogICAgICAgaW50IGxlbjI7CisgICAgICBjb25zdCBjaGFyICplOwoKICAgICAgIE00RVJS
T1IgKCh3YXJuaW5nX3N0YXR1cywgMCwgXygicmVjb21tZW5kIHVzaW5nIG1rc3RlbXAgaW5zdGVh
ZCIpKSk7CiAgICAgICBmb3IgKGkgPSBsZW47IGkgPiAxOyBpLS0pCiAgICAgICAgIGlmIChzdHJb
aSAtIDFdICE9ICdYJykKICAgICAgICAgICBicmVhazsKICAgICAgIG9ic3RhY2tfZ3JvdyAob2Jz
LCBzdHIsIGkpOwotICAgICAgc3RyID0gbnRvYSAoKGludDMyX3QpIGdldHBpZCAoKSwgMTApOwot
ICAgICAgbGVuMiA9IHN0cmxlbiAoc3RyKTsKKyAgICAgIHN0ciA9IG50b2EgKChpbnQzMl90KSBn
ZXRwaWQgKCksIDEwLCAmZSk7CisgICAgICBsZW4yID0gZSAtIHN0cjsKICAgICAgIGlmIChsZW4y
ID4gbGVuIC0gaSkKICAgICAgICAgb2JzdGFja19ncm93MCAob2JzLCBzdHIgKyBsZW4yIC0gKGxl
biAtIGkpLCBsZW4gLSBpKTsKICAgICAgIGVsc2UKQEAgLTE1MDIsNyArMTUwNiw3IEBAIG00X2Vy
cnByaW50IChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5fZGF0YSAqKmFyZ3Yp
CiB7CiAgIGlmIChiYWRfYXJnYyAoYXJndlswXSwgYXJnYywgMiwgLTEpKQogICAgIHJldHVybjsK
LSAgZHVtcF9hcmdzIChvYnMsIGFyZ2MsIGFyZ3YsICIgIiwgZmFsc2UpOworICBkdW1wX2FyZ3Mg
KG9icywgYXJnYywgYXJndiwgJyAnLCBmYWxzZSk7CiAgIG9ic3RhY2tfMWdyb3cgKG9icywgJ1ww
Jyk7CiAgIGRlYnVnX2ZsdXNoX2ZpbGVzICgpOwogICB4ZnByaW50ZiAoc3RkZXJyLCAiJXMiLCAo
Y2hhciAqKSBvYnN0YWNrX2ZpbmlzaCAob2JzKSk7CkBAIC0xNTg3LDcgKzE1OTEsNyBAQCBtNF9t
NHdyYXAgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCB0b2tlbl9kYXRhICoqYXJndikK
ICAgaWYgKG5vX2dudV9leHRlbnNpb25zKQogICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBBUkcgKDEp
LCBzdHJsZW4gKEFSRyAoMSkpKTsKICAgZWxzZQotICAgIGR1bXBfYXJncyAob2JzLCBhcmdjLCBh
cmd2LCAiICIsIGZhbHNlKTsKKyAgICBkdW1wX2FyZ3MgKG9icywgYXJnYywgYXJndiwgJyAnLCBm
YWxzZSk7CiAgIG9ic3RhY2tfMWdyb3cgKG9icywgJ1wwJyk7CiAgIHB1c2hfd3JhcHVwICgoY2hh
ciAqKSBvYnN0YWNrX2ZpbmlzaCAob2JzKSk7CiB9CkBAIC0yMjYyLDcgKzIyNjYsNyBAQCBleHBh
bmRfdXNlcl9tYWNybyAoc3RydWN0IG9ic3RhY2sgKm9icywgc3ltYm9sICpzeW0sCgogICAgICAg
ICBjYXNlICcqJzogLyogYWxsIGFyZ3VtZW50cyAqLwogICAgICAgICBjYXNlICdAJzogLyogLi4u
IHNhbWUsIGJ1dCBxdW90ZWQgKi8KLSAgICAgICAgICBkdW1wX2FyZ3MgKG9icywgYXJnYywgYXJn
diwgIiwiLCAqdGV4dCA9PSAnQCcpOworICAgICAgICAgIGR1bXBfYXJncyAob2JzLCBhcmdjLCBh
cmd2LCAnLCcsICp0ZXh0ID09ICdAJyk7CiAgICAgICAgICAgdGV4dCsrOwogICAgICAgICAgIGJy
ZWFrOwoKZGlmZiAtLWdpdCBhL3NyYy9kZWJ1Zy5jIGIvc3JjL2RlYnVnLmMKaW5kZXggYTQwMTc2
NjAuLjg3NmIxMWY1IDEwMDY0NAotLS0gYS9zcmMvZGVidWcuYworKysgYi9zcmMvZGVidWcuYwpA
QCAtMjkwLDcgKzI5MCw3IEBAIHRyYWNlX2Zvcm1hdCAoY29uc3QgY2hhciAqZm10LCAuLi4pCgog
ICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICBkID0gdmFfYXJnIChhcmdzLCBpbnQpOwotICAg
ICAgICAgIHMgPSBudG9hIChkLCAxMCk7CisgICAgICAgICAgcyA9IG50b2EgKGQsIDEwLCBOVUxM
KTsKICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMv
bTQuaCBiL3NyYy9tNC5oCmluZGV4IGMxZmI4MDZiLi44NThjYjBkZSAxMDA2NDQKLS0tIGEvc3Jj
L200LmgKKysrIGIvc3JjL200LmgKQEAgLTQ0MCw3ICs0NDAsNyBAQCBleHRlcm4gdm9pZCBtNF9w
bGFjZWhvbGRlciAoc3RydWN0IG9ic3RhY2sgKiwgaW50LCB0b2tlbl9kYXRhICoqKQogICBBVFRS
SUJVVEVfQ09MRDsKIGV4dGVybiB2b2lkIGluaXRfcGF0dGVybl9idWZmZXIgKHN0cnVjdCByZV9w
YXR0ZXJuX2J1ZmZlciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHJlX3JlZ2lzdGVycyAqKTsKLWV4dGVybiBjb25zdCBjaGFyICpudG9hIChpbnQzMl90LCBpbnQp
OworZXh0ZXJuIGNvbnN0IGNoYXIgKm50b2EgKGludDMyX3QsIGludCwgY29uc3QgY2hhciAqKik7
CgogZXh0ZXJuIGNvbnN0IGJ1aWx0aW4gKmZpbmRfYnVpbHRpbl9ieV9hZGRyIChidWlsdGluX2Z1
bmMgKik7CiBleHRlcm4gY29uc3QgYnVpbHRpbiAqZmluZF9idWlsdGluX2J5X25hbWUgKGNvbnN0
IGNoYXIgKik7CmRpZmYgLS1naXQgYS9zcmMvb3V0cHV0LmMgYi9zcmMvb3V0cHV0LmMKaW5kZXgg
ODRmMTUxM2UuLmY0MDI1M2MxIDEwMDY0NAotLS0gYS9zcmMvb3V0cHV0LmMKKysrIGIvc3JjL291
dHB1dC5jCkBAIC02NzAsNyArNjcwLDcgQEAgc2hpcG91dF90ZXh0IChzdHJ1Y3Qgb2JzdGFjayAq
b2JzLCBjb25zdCBjaGFyICp0ZXh0LCBpbnQgbGVuZ3RoLCBpbnQgbGluZSkKICAgICAgICAgICAg
ICAgT1VUUFVUX0NIQVJBQ1RFUiAoJ24nKTsKICAgICAgICAgICAgICAgT1VUUFVUX0NIQVJBQ1RF
UiAoJ2UnKTsKICAgICAgICAgICAgICAgT1VUUFVUX0NIQVJBQ1RFUiAoJyAnKTsKLSAgICAgICAg
ICAgICAgZm9yIChjdXJzb3IgPSBudG9hIChsaW5lLCAxMCk7ICpjdXJzb3I7IGN1cnNvcisrKQor
ICAgICAgICAgICAgICBmb3IgKGN1cnNvciA9IG50b2EgKGxpbmUsIDEwLCBOVUxMKTsgKmN1cnNv
cjsgY3Vyc29yKyspCiAgICAgICAgICAgICAgICAgT1VUUFVUX0NIQVJBQ1RFUiAoKmN1cnNvcik7
CiAgICAgICAgICAgICAgIGlmIChvdXRwdXRfY3VycmVudF9saW5lIDwgMSAmJiBjdXJyZW50X2Zp
bGVbMF0gIT0gJ1wwJykKICAgICAgICAgICAgICAgICB7Ci0tIAoyLjQ4LjEKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNNC1wYXRjaGVzIG1haWxpbmcg
bGlzdApNNC1wYXRjaGVzQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlz
dGluZm8vbTQtcGF0Y2hlcwo=