Re: Proposal: Helper response: concatenated values with custom delimiter

Amos Jeffries <[email protected]> Wed, 22 Apr 2026 07:57:01 +1200
Newsgroups gmane.comp.web.squid.devel
Message-ID <[email protected]>
T24gMjIvMDQvMjAyNiAwMzoxMSwgQWxleCBSb3Vzc2tvdiB3cm90ZToKPiBPbiAyMDI2LTA0LTIx
IDA5OjA2LCBBbmRyZXkgSyB3cm90ZToKPj4gSGVsbG8sCj4+Cj4+IEkndmUgbWVudGlvbmVkIHRo
aXMgYnJpZWZseSBpbiBhbm90aGVyIHRocmVhZCwgYnV0IEnigJlkIGxpa2UgdG8gc3RhcnQgYSAK
Pj4gZGVkaWNhdGVkIGRpc2N1c3Npb24gcmVnYXJkaW5nIHRoZSBzdXBwb3J0IGZvciBhICJjb25j
YXRlbmF0ZWQiIHZhbHVlIAo+PiBmb3JtYXQgaW4gaGVscGVyIHJlc3BvbnNlcy4KPj4KPj4gSW4g
YSByZWNlbnQgUFIgZGlzY3Vzc2lvbiAoaHR0cHM6Ly9naXRodWIuY29tL3NxdWlkLWNhY2hlL3Nx
dWlkLyAKPj4gcHVsbC8yMzk1I2Rpc2N1c3Npb25fcjMwMjI4NDQ4MjYgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9zcXVpZC1jYWNoZS8gCj4+IHNxdWlkL3B1bGwvMjM5NSNkaXNjdXNzaW9uX3IzMDIyODQ0
ODI2PiksIEFsZXggcG9pbnRlZCBvdXQgaXNzdWVzIHdpdGggCj4+IHVzaW5nIGNvbmNhdGVuYXRl
ZCBmb3JtYXRzIGZvciBwYXNzaW5nIHRhZyB2YWx1ZXMuCj4+Cj4+IEkgcHJvcG9zZSBhZGRpbmcg
c3VwcG9ydCBmb3IgYSBjdXN0b20gZGVsaW1pdGVyIGZvciBjb25jYXRlbmF0ZWQgCj4+IHZhbHVl
cyB3aXRoaW4gYSBzaW5nbGUgS1YtcGFpciBpbiB0aGUgaGVscGVyIG91dHB1dC4KPj4KPj4gVGhl
IHByb3Bvc2VkIHN5bnRheCBpczoKPj4gPGtleT49PGRlbGltaXRlcj4iPHZhbHVlMT48ZGVsaW1p
dGVyPjx2YWx1ZTI+Li4uIgo+Pgo+PiBFeGFtcGxlczoKPj4gZ3JvdXA9LCJncm91cDEsZ3JvdXAy
LGdyb3VwMyIKPj4gY2x0X2Nvbl90YWc9OyJ0YWcxO3RhZzI7dGFnMyIKPj4KPj4gRXNjYXBpbmcg
bG9naWM6Cj4+IMKgwqAgwqAgSWYgdGhlIGRlbGltaXRlciBhcHBlYXJzIGluc2lkZSBhIHZhbHVl
IHdpdGhpbiB0aGUgdG9rZW4sIGl0IG11c3QgCj4+IGJlIGRvdWJsZS1lc2NhcGVkIChcXCkgYnkg
dGhlIGhlbHBlci4KPj4gRm9yIGV4YW1wbGU6Cj4+IGdyb3VwPSwiU3RhZmY6YWNjb3VudGFudHNc
XCxsYXd5ZXJzXFwsc2VjdXJpdHksTWFpbl9PZmZpY2UiCj4+IFRoaXMgc2hvdWxkIHByb2R1Y2Ug
dHdvIHNlcGFyYXRlIGFubm90YXRpb25zOgo+PiBncm91cD1TdGFmZjphY2NvdW50YW50cyxsYXd5
ZXJzLHNlY3VyaXR5Cj4+IGdyb3VwPU1haW5fT2ZmaWNlCj4+Cj4+IFRoZSBjaG9pY2Ugb2YgZG91
YmxlIGVzY2FwaW5nIGlzIGludGVudGlvbmFsIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IAo+PiB3
aXRoIHRoZSB3YXkgc3Ryd29yZHRvaygpIHByb2Nlc3NlcyBxdW90ZWQgdmFsdWVzIGluIFNxdWlk
Lgo+PiBUaGlzIGFwcHJvYWNoIGVuc3VyZXMgdGhhdCB3ZSBjYW4gcHJlc2VydmUgdGhlIHVuZGVy
bHlpbmcgbG9naWMgZm9yIAo+PiBoYW5kbGluZyB2YWx1ZXMgd2hpbGUgY29ycmVjdGx5IHNwbGl0
dGluZyB0aGUgImdsdWVkIiB0b2tlbnMuCgoKJS1lbmNvZGluZyBjYW4gcGVyZm9ybSB0aGUgc2Ft
ZSByb2xlLCBhbHNvIHN1cHBvcnRlZCwgaGFzIHRoZSBzYW1lIApiYW5kd2lkdGggY29zdCwgZG9l
cyBub3QgcmVxdWlyZSBkb3VibGUtcXVvdGVkIHN0cmluZywgYW5kIGZhciBlYXNpZXIgdG8gCmdl
dCByaWdodCB0aGFuIG5lc3RlZCBcLWVzY2FwZS4KCkkgc3VnZ2VzdCB1c2luZyB0aGF0IGFzIHRo
ZSBkb2N1bWVudGVkIHByb3RlY3Rpb24gaW5zdGVhZC4KCgpJc3N1ZXMgSSBmb3JzZWUgd2l0aCB0
aGlzIHByb3Bvc2FsOwoKICAqIFRoZSBoZWxwZXIgcGFyc2VyIHNwbGl0dGluZyB0aGUgdmFsdWUt
bGlzdCB3aWxsIGhhdmUgdW5wcmVkaWN0YWJsZSAKaW1wYWN0IG9uIGFsbCB1c2VyIGNvbmZpZ3Vy
YXRpb25zIC0gcmFuZ2luZyBmcm9tIG5vIGNoYW5nZSwgdG8gCiJzdXJwcmlzZSEgU3F1aWQgYmVo
YXZpb3VyIGp1c3QgZ290IHdlaXJkIi4KCgogICogVGhlIGN1c3RvbSBkZWxpbWl0ZXIgd2lsbCBo
YXZlIGlzc3VlcyB0aGUgbm9uLXF1b3RlZCBrZXk9dG9rZW4gCnN5bnRheC4gVGhlcmUgaXMgX25v
XyByZXF1aXJlbWVudCB0aGF0IGFubm90YXRpb24gbGlzdHMgYXJlIGluc2lkZSAKcXVvdGVkLXN0
cmluZy4KCgoKPj4KPj4gQ3VycmVudGx5LCBhIGNvbW1hLXNlcGFyYXRlZCBmb3JtYXQgaXMgb2Z0
ZW4gdXNlZCBkZSBmYWN0bywgYnV0IFNxdWlkIAo+PiBzdG9yZXMgdGhlc2UgYXMgYSBzaW5nbGUg
RW50cnksIHJlcXVpcmluZyB0aGUgLW0gb3B0aW9uIGZvciBhbm5vdGF0aW9uIAo+PiBjaGVja3Mu
Cj4+Cj4+IFByb3Bvc2VkIENoYW5nZToKPj4gQSBtaW5vciBtb2RpZmljYXRpb24gdG8gSGVscGVy
OjpSZXBseTo6cGFyc2VSZXNwb25zZUtleXMoKS4KPj4KPj4gUHJvczoKPj4gLSBNb3JlIGNvbXBh
Y3QgZGF0YSB0cmFuc2ZlciBmb3JtYXQuCgpUaGF0IGFzc3VtZXMgdGhlIGZ1bGx5IGV4cGFuZGVk
ICJrZXk9djEga2V5PXYyIiBmb3JtIGlzIHRyYW5zbWl0dGVkLgoKVGhlIG9wcG9zaXRlIGhhcyBi
ZWVuIGRlbW9uc3RyYXRlZCBhbHJlYWR5IGZvciB0aGUgcHJlZmVycmVkIGtleT12MSx2MiAKZm9y
bS4gRGF0YSB0cmFuc2ZlciBpbmNyZWFzZXMgYnkgYXQgbGVhc3QgdGhlIG9jdGV0IHNpZ25hbGxp
bmcgZGVsaW1pdGVyIAp0byB1c2UsIHBsdXMgYW55IGV4dHJhIGVuY29kaW5nIGNoYXJhY3RlcnMg
d2hlbiB0aGVyZSBpcyBhIGNvbmZsaWN0ZWQgCmNoYXJhY3Rlci4KCgoKPj4gLSBQcm9wZXIgZGF0
YSBzdG9yYWdlIG9uIHRoZSBTcXVpZCBzaWRlIChzZXBhcmF0ZSB2YWx1ZXMgaW5zdGVhZCBvZiAK
Pj4gb25lIGJsb2IpLgoKIlByb3BlciIgaXMgc3ViamVjdGl2ZS4KCkZXSVcsIEkgYWdyZWUsIGFu
ZCBpdCBzZWVtcyBBbGV4IGRvZXMgdG9vLgoKCj4+IC0gRmxleGliaWxpdHkgZm9yIHBsdWdpbiBk
ZXZlbG9wZXJzIHZpYSBjdXN0b20gZGVsaW1pdGVycy4KClN1cmUsIGJ1dCBkb2VzIGFueW9uZSBu
ZWVkIGl0IHRoYXQgZmxleGlibGU/CgpUaGUgaGVscGVyIHByb3RvY29sIGRvY3VtZW50cyAnLCcg
YXMgbGlzdCBkZWxpbWl0ZXIgYW5kIHByb3ZpZGVzIHR3byAKZW5jb2RpbmcgbWV0aG9kcyB0byBw
cm90ZWN0IGNvbmZsaWN0aW5nIGNoYXJhY3RlcnMuCgpFdmVuIGlmIHRoZSBoZWxwZXIgbG9naWMg
c3BsaXRzIHRoZSB2YWx1ZS1saXN0IGJhc2VkIG9uIHNvbWUgY3VzdG9tIApkZWxpbWl0ZXIuIFRo
ZSBhbm5vdGF0aW9uIHN0b3JhZ2Ugd2lsbCBzdGlsbCBiZSByZS1zcGxpdHRpbmcgYmFzZWQgb24g
Cml0cyBvd24gaWRlYXMgYWJvdXQgd2hhdCBhIHZhbHVlLWxpc3QgaXMuIFRoZSBzYW1lIHByb2Js
ZW1zIGp1c3QgZ2V0IAp3b3JzZSBhcyB3ZSBubyBsb25nZXIgY2FuIHJlbHkgb24gJywnIGJlaW5n
IHRoZSBkZWxpbWl0ZXIgdG8gdmFsaWRhdGUuCgoKSSByZWFsbHkgdGhpbmsgd2Ugc2hvdWxkIGZp
eCB0aGUgYW5ub3RhdGlvbiBzdG9yYWdlIGJlZm9yZSBnb2luZyBuZWFyIApjdXN0b20gZGVsaW1p
dGVycy4gT25seSBzdG9yaW5nIHRoZSBrZXk9dmFsdWUgaW5zdGVhZCBvZiBzZXJpYWxpemVkIAps
aXN0cyB3aWxsIGdvIGEgbG9uZyB3YXkgdG93YXJkcyBmaXhpbmcgcHJvYmxlbS4gQ2FsbGVycyBj
YW4gcmVxdWVzdCAKc2VyaWFsaXphdGlvbiBhcy1uZWVkZWQgYW5kIHN1cHBseSBkZWxpbWl0ZXJz
IGV2ZW4gaWYgZGVzaXJlZC4KCgoKPj4gLSBFbGltaW5hdGVzIHRoZSBuZWVkIGZvciBhZG1pbnMg
dG8gbWFudWFsbHkgbWFuYWdlIHRoZSAtbSBvcHRpb24gZm9yIAo+PiB0aGVzZSBjYXNlcy4KCkkg
YW0gbm90IGNvbnZpbmNlZCB0aGUgcHJvcG9zYWwgd2lsbCBiZSBhYmxlIHRvIG1lZXQgdGhpcyBj
bGFpbS4gU2ltcGx5IApiZWNhdXNlIHRoZSAiLW0iIGZsYWcgaXMgcGFydCBvZiBhbiBlbnRpcmVs
eSBkaWZmZXJlbnQgY29tcG9uZW50IG9mIApTcXVpZCB0aGFuIHRoZSBoZWxwZXIgYmVpbmcgbW9k
aWZpZWQuCgpPbmNlIHRoZSBBQ0wgYnVnIGlzIGZpeGVkIHRoZSBoZWxwZXIgbmVlZHMgb25seSB0
byAlLWVuY29kZSBvciBcLWVzY2FwZSAKdGhlIGNvbmZsaWN0aW5nIGNvbW1hIGNoYXJhY3RlcnMg
cHJvcGVybHkgYW5kIHRoZWlyIG5lZWQgdG8gdXNlICItbSIgCmZsYWcgZGlzYXBwZWFycy4KClVu
dGlsIHRoYXQgYnVnIGlzIGZpeGVkIChhbmQgTm90ZVBhaXJzIHN0b3BzIHN0b3Jpbmcgc2VyaWFs
aXplZCBsaXN0cykgCnVzaW5nIGN1c3RvbSBkZWxpbWl0ZXJzIGp1c3QgYWRkcyByaXNrIHRoYXQg
YSBjb21tYSBpbnNpZGUgc29tZSB2YWx1ZSAKcmVhY2hlcyB0aGUgYnVnZ3kgQUNMIChvciBzb21l
d2hlcmUgZWxzZSBhc3N1bWluZyBjb21tYSBkZWxpbWl0ZWQgbGlzdHMpLgoKCj4+Cj4+IEkgYW0g
aW50ZXJlc3RlZCBpbiBpbXBsZW1lbnRpbmcgdGhpcyBhbmQgc3VibWl0dGluZyBhIFBSLiBEbyB5
b3UgdGhpbmsgCj4+IHRoaXMgc29sdXRpb24gaXMgbmVlZGVkIGFuZCBmaXRzIHRoZSBwcm9qZWN0
J3MgZGlyZWN0aW9uPwo+IAo+IEkgZG8gbm90IGtub3cgd2hldGhlciB0aGlzIHByb2JsZW0gbmVl
ZHMgYSBzb2x1dGlvbiwgYnV0IEkgYW0gbm90IAo+IGV4Y2l0ZWQgYWJvdXQgdGhlIHByb3Bvc2Vk
IHNvbHV0aW9uLCBlc3BlY2lhbGx5IGJlY2F1c2UgKEFGQUlDVCkgU3F1aWQgCj4gYWxyZWFkeSBz
dXBwb3J0cyBoZWxwZXIgcmVzcG9uc2VzIHdpdGggbXVsdGlwbGUgc2FtZS1uYW1lIGFubm90YXRp
b25zIAo+IGFuZCB0cmVhdHMgdGhlbSBjb3JyZWN0bHkuCgpJIGFncmVlIGhhdmluZyB0aGUgaGVs
cGVyIHJlc3BvbnNlIHBhcnNlciBkb2luZyB2YWx1ZS1saXN0IHNwbGl0dGluZyBpcyAKYSBnb29k
IGlkZWEuCgoKSSBzdGlsbCBkbyBub3Qgc2VlIGEgbmVlZCBmb3IgY3VzdG9tIGRlbGltaXRlci4K
CgoKPiAKPiBbIElmIHRoZXJlIGlzIGEgcmVhbCwgc2VyaW91cyBuZWVkIHRvIG9wdGltaXplIHRo
YXQgZXhpc3Rpbmcgc3VwcG9ydCwgCj4gdGhlbiBdIGNhbiB3ZSBpbnZlbnQgYW5vdGhlciBzeW50
YXggdGhhdCB3aWxsIG5vdCByZXN1bHQgaW4gbWlzaGFuZGxpbmcgCj4gYW55IGV4aXN0aW5nIGhl
bHBlciBhbm5vdGF0aW9uICh0aGF0IGlzIG5vdCB0cmVhdGVkIGFzIGEgbGlzdCB0b2RheSk/IAo+
IEZvciBleGFtcGxlLCBwZXJoYXBzIHdlIGNhbiB1c2UgaXNLZXlOYW1lQ2hhcigpIHJlc3RyaWN0
aW9ucyB0byBwbGFjZSAKPiB0aGUgZGVsaW1pdGVyIGZpcnN0LCBiZWZvcmUgdGhlIGFubm90YXRp
b24gbmFtZT8KPiAKPiAgwqDCoMKgIChtPSwpbmFtZT12YWx1ZTEsdmFsdWUyCj4gCgpIbW0uICBX
aGVuIEkgY29tYmluZSB0aGF0IGlkZWEgd2l0aCBvbGRlciBwcm9wb3NhbHMgZmxvYXRlZCBhYm91
dCAKa3YtcGFpciBhcHBlbmQvcmVwbGFjZSBzeW50YXggdGhlcmUgYXJlIHNvbWUgbmljZSBpbXBs
aWNhdGlvbnMuCgpIb3cgYWJvdXQgdGhpczoKCjEpIGNoYW5nZSBvZiBrdi1wYWlyIGdyYW1tYXIg
dG86CgogICAga3YtcGFpciA9IFsgJ18nIF0ga2V5IFsgZmxhZyBdICc9JyAoIHZhbHVlIC8gbGlz
dCApCgoyKSBjcmVhdGUgYSBOb3RlUGFpcnM6OnVwZGF0ZShrZXksIHZhbHVlLCBmbGFnKSBtZXRo
b2QgdGhhdCB1c2VzIGZsYWcgdG8gCmRlY2lkZSB3aGljaCBvcGVyYXRpb24gdG8gcGVyZm9ybSBh
cyB0aGUgdXBkYXRlLgoKUHJvczoKICAqIGZsYWcgZG9lcyBub3QgbmVlZCB0byBiZSBsaW1pdGVk
IHRvIGEgc2luZ2xlIGNoYXJhY3Rlci4gSXQgY291bGQgYmUgCnNldmVyYWwuCgogICogTW9zdCBj
YWxsZXJzIGNvdWxkIGJlIGNvbnZlcnRlZCB0byBkZS1zZXJpYWxpemluZyB0aGUgdmFsdWUtbGlz
dCBieSAKc2ltcGx5IHNlbmRpbmcgdGhlICcsJyBmbGFnIGlmIG5vbmUgaXMgcHJvdmlkZWQgZXhw
bGljaXRseSB2aWEgb3RoZXIgbWVhbnMuCgpDb25zOgogICogbW9yZSBjb21wbGV4aXR5IHRvIHRo
ZSBrdi1wYWlyIGNvbmNlcHQgYW5kIGltcGxlbWVudGF0aW9uLgoKCkNoZWVycwpBbW9zCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpzcXVpZC1kZXYgbWFp
bGluZyBsaXN0CnNxdWlkLWRldkBsaXN0cy5zcXVpZC1jYWNoZS5vcmcKaHR0cHM6Ly9saXN0cy5z
cXVpZC1jYWNoZS5vcmcvbGlzdGluZm8vc3F1aWQtZGV2Cg==