Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYCsw-00ErFg-2g for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Feb 2024 22:28:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rYCst-003zI1-B7 for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Feb 2024 22:28:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYCss-003zHr-Us for pgsql-hackers@lists.postgresql.org; Thu, 08 Feb 2024 22:28:43 +0000 Received: from mail-cpzbra01olkn2100.outbound.protection.outlook.com ([40.92.97.100] helo=BRA01-CPZ-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYCsl-006CKj-GW for pgsql-hackers@postgresql.org; Thu, 08 Feb 2024 22:28:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hOkBkGe4zmvbdMhT89+b0Fm3zr38afGru5ws3h/yBSeVaJxeSpKfZVoy6HZEU7Vl7QYp2k25hjQOHgB8TbligGup3EXYb9hREpvO4HBrSwGP1m4sxQnjUljx9rErgWbkCA2zfoMzpyV5EpIa/od9EU1dFbhYFN8j2kPJoNeOXZc9AzfiSBq3IVZu4Gqp5J9G/7WJgdJaZQg1aJOat9jzkZd7znu8o2Xcz8dthx1jhkCXNqFrN0I9lF9OYb2lVvvEil7bzuA/Oqg1Nrsz04SVinSYfI3YHapbAKxuaNhbjbWEUbWHoWPNFE3Va3ptU3YlDlBcbGfwNCZL+mOtjBkTlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B9GSb65mmkkCJGY94ofvT8yiEsy5O0wOU/x3qHHML7w=; b=CBYsGCu1HtxSzfFVZmlRpzb+EuE2g5jM1YqjPMJNShPJyuS4pTQ6sRx9wqL0T+3lP2/Gn4zC2uuTXaGI1+5/xu3aBG1Mn8TA7J1645UEmqrBtSqHmGUSylHPrwCwmcHja4EXF4DJGfqj/Ef/e4YyEnDFGUwEynS7+kP1gcfO8N4ooyBvSrOr5B4YZj4FKgkt5pgQ1IQ5aP5WRGXaE1/434A5Cg6Dkh0XnmbvObZawkj2ASUWbcLjkyiiiHLNK1OfAhu9EIbI5y8uhImTFEHeAbaCiIEGk951o45CT25tYgoUaVkSPudMCtebOwFKbfSf7WtVlTFg2E3Lox6DxoJGFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2dc::11) by CP5P284MB2357.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:1f0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.24; Thu, 8 Feb 2024 22:28:29 +0000 Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf]) by CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf%6]) with mapi id 15.20.7249.038; Thu, 8 Feb 2024 22:28:29 +0000 From: Maiquel Grassi To: Erik Wienhold , Jim Jones CC: Pavel Luzanov , Nathan Bossart , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgABCa76AAE2sAIAAENYAgAAZLj4= Date: Thu, 8 Feb 2024 22:28:29 +0000 Message-ID: References: <20240206215022.GA3452@nathanxps13> <852cabef-f596-4826-9a54-d3f75d9a6cc8@postgrespro.ru> <47dcfd6f-d1d8-4a13-9bc5-b43ee9bd534f@uni-muenster.de> In-Reply-To: Accept-Language: pt-BR, en-US Content-Language: pt-BR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Pw3lOmybHxM4+NAfF3rIY4K+E7ed0f2c] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP5P284MB2357:EE_ x-ms-office365-filtering-correlation-id: 874c6aa9-66f1-458f-ce6a-08dc28f5465b x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8QHVtdwEW1q511thevE1OCy8fG4x0k8xkxZQzzOxRH4z2Utx848b2+lWqIewMnqrFAmS3UC4b4d06DL2pYK8F/GnbxX1oyKPPwSK5exQJD6uAiTsqeVJd7nEnISZlb0HEC2vRi3iGLurpL7qGhOSihmr6E0mBr2LUkVzECDUzxsRK4HzixMpHpr+Vdlhf3EGvCWQc5f8iwCBemgTRxLHPIB6PwjCqumCGWgWsxNNkgY4ldtyTrBRcnEOBN4zKyRWWEIToJ1JqllmT3yCVrKQqF6308SFeviXDPH/Dq0u0s4x5+O2bbuJddYqn8QhzXMiO4hxLEXn9PMEIflHacARXT5JlajpPtda/KuLHwX9uP/bFuWjj0j/y1y/zBFSHWAYXl6EZNlM3zabZT74/plNVSzkUvPSiNBqVprD7RFEmWZ0PUpLYImXOmjda466+YA06GxNEld0sv5reNkPCmoNkZY9uwVstReg9ogrRltAvwmhzQhLBF3Myge89878neB//8XPc3jav0sS6UUhWcL3Apu4idtIPmFJQHDHU5SpTXOXv7rXcoPbaq5FntGEpStGhnw3um6y8iaskN2c/3BzmigADn4mMwrq0y8uwZPgi/j/6tqnXDSF1Mdhoe2NYlNb x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?6L0UP0EH//1J5nBm6hjfIxYkqkUgC/ZuYQi8Kytiz7ZlP5SxZWsUJrStBG?= =?iso-8859-1?Q?1iutjp2GFVqwETvUAzsy7bmz/5wUPoKs5G/nk62tlSLLqcgLcgzhJZsAc5?= =?iso-8859-1?Q?htFbquTFdWm+L7TcWDaha0YOjtwRo0PKGM5TQTAQQ/509XlU8l9snCsW3G?= =?iso-8859-1?Q?UhK/LU3bmlQIc63JHQdTOytb3N1wXhIsC89dnleZO4yZXz2LuP+oqc0Eev?= =?iso-8859-1?Q?KwGlYpIFjKxMZ4Lkii9Ev4F0z5AGngBd8B2qWadHEjc74GJ1SwpYXB5mF9?= =?iso-8859-1?Q?eUGfUb5tuTzemXuG9wvUr6SPTxDQViI0l4lz0PvbepH+rzh2rV1ZEkDYif?= =?iso-8859-1?Q?f6VjIlhIloMOuxGF05WqyIYBIbOMP6iMA7tNLmDcgWn3Vt+/a4BwEZgS89?= =?iso-8859-1?Q?qxYbPs4dIULdoG6JS/vTj8WMXr+a3TQ80clVNEb96kJTPMwnDv3ATXCo+j?= =?iso-8859-1?Q?Ld5YEP38+THwkkdrDD79Ek+/RBORL99e+e8XIqtifPbuxo/3kzlx7NwrJH?= =?iso-8859-1?Q?PYUsvuWzOydlj4iVH5C/2dh5y+v831oi0mrPdXqbF9leVcH1j05FcwtvuZ?= =?iso-8859-1?Q?APaV9BxotnG3AIZ6qrJnbglIgD3D2SK7M1BGEmHHucRgTwkMQ2dLoDxeWO?= =?iso-8859-1?Q?rohxwsHPAYsYHJbWAqK6dU8HvpwDW2u5gz/4sfuyD5qOrfPPDUTd/Ody2j?= =?iso-8859-1?Q?IAZ2X34dji+Pe/nco/WfYz2HAO7r8nULnC+BjTtNgN5uj1d0b+p4pbmLek?= =?iso-8859-1?Q?/KfwlEgTqrPnVWcF9XJzh/kB8XsaS3ZvjPlSbPoNykUlB3IHtpja2PZ7SP?= =?iso-8859-1?Q?8vUnsksUMrOyO6FDZM4bNCpwZwMIESeZZEojh9K/cX5sqdEOgnOEt3x6AE?= =?iso-8859-1?Q?waqdGo18gUs/Zbxd8a/zsZUoMGnOZs9h0ki35kHTm4+uixnBDW2Y3JiABN?= =?iso-8859-1?Q?NjeUGs07kO3tkfDjH34oUosLp2JoPQnbeqqYFI+160Ko/flOzt0toM+dvt?= =?iso-8859-1?Q?vOOy89nGnoHwEMJpiwSTGH/dxGhkDt7w15jB9R4T3YUaFilN+l2/lbnExh?= =?iso-8859-1?Q?cnQnjw2SBnT4p6bQvun4jpRPWF8D6fTQD7pUqJVd3fKDULj6Q5Xh9o/Phg?= =?iso-8859-1?Q?RMbw2gRlf4RlF2FHaKjLA0AmoKYB/9TGHIiU1wT4cuFZ9T6GIkUJc1xgXO?= =?iso-8859-1?Q?naST3cS0pudZFE+zpq8yUrjgr/kaQDZfGjfm1LaFL093uSm5mqn4XOON8L?= =?iso-8859-1?Q?6dTZ2Ty6jkN51b04g4+w=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-7dc52.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 874c6aa9-66f1-458f-ce6a-08dc28f5465b X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2024 22:28:29.1837 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CP5P284MB2357 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_" --_000_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable >On 2024-02-08 20:37 +0100, Jim Jones wrote: >> One thing I just noticed. The psql autocomplete feature does not suggest >> the new + option of \conninfo. For instance, when typing "\connin[TAB]" >> it automatically autocompletes to "\conninfo ". I guess it should also >> be included in this patch. > >Modifiers such as + or S in \dS are not covered by autocompletion. >src/bin/psql/tab-complete.c only specifies backslash commands in their >basic form (without modifiers). > >(\dS actually autocompletes to \ds to my surprise) > >> I can do a more thorough review of the code when you add the >> documentation and tests to the patch. > >I noticed that the pattern parameter in listConnectionInformation is >unused. exec_command_conninfo scans the pattern but \conninfo should >not accept any argument. So the pattern can be removed entirely. --//-- Hi Erik, Exactly, in "\conninfo+" the "pattern" argument was not introduced and therefore "listConnectionInformation()" can be declared (signed) without any arguments. In the future, if necessary, and if there is a need to add any "pattern", then that can be done. However, that's not the current scenario. I removed everything related to the "pattern" from the patch. Regarding "(\dS actually autocompletes to \ds to my surprise)", I was also surprised. I haven't studied the code yet to understand why this happens. It seems curious to me. I'll try to understand this implementation better. I'm continuing the development of "\conninfo+" and now moving on to tests. Tks a lot! Regards, Maiquel Grassi. --_000_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

>On 2024-02-08 20:37 +0100, Jim Jones wrote= :
>> One thing I just noticed. The psql autocomplete feature does not s= uggest
>> the new + option of \conninfo. For instance, when typing "\co= nnin[TAB]"
>> it automatically autocompletes to "\conninfo ". I guess = it should also
>> be included in this patch.
>
>Modifiers such as + or S in \dS are not covered by autocompletion.
>src/bin/psql/tab-complete.c only specifies backslash commands in their<= br> >basic form (without modifiers).
>
>(\dS<TAB> actually autocompletes to \ds to my surprise)
>
>> I can do a more thorough review of the code when you add the
>> documentation and tests to the patch.
>
>I noticed that the pattern parameter in listConnectionInformation is >unused.  exec_command_conninfo scans the pattern but \conninfo sho= uld
>not accept any argument.  So the pattern can be removed entirely.<= br>
--//--

Hi Erik,

E= xactly, in "\conninfo+" the "pattern" argument was not = introduced and
therefore "listConnectionInformation()" can be declared (signed) = without
any arguments. In the future, if necessary, and if there is a need to add any "pattern", then that can be done. However, that's not the cur= rent
scenario. I removed everything related to the "pattern" from the = patch.


Regarding "(\dS<TAB> actually autocompletes to \ds to my surpris= e)",
I was also surprised. I haven't studied the code yet to understand why
this happens. It seems curious to me. I'll try to understand this
implementation better.


I'm continuing the development of "\conninfo+" and now moving on = to tests.


Tks a lot!

Regards,
Maiquel Grassi.

--_000_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_-- --_004_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v10-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v10-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v10-0001-psql-meta-command-conninfo-plus.patch"; size=9017; creation-date="Thu, 08 Feb 2024 22:10:20 GMT"; modification-date="Thu, 08 Feb 2024 22:11:01 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBjYzdkNzk3Li40ZTg2YWQ5IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMDI5LDEwICsxMDI5LDE0IEBAIElOU0VSVCBJTlRPIHRibDEgVkFMVUVT ICgkMSwgJDIpIFxiaW5kICdmaXJzdCB2YWx1ZScgJ3NlY29uZCB2YWx1ZScgXGcKICAgICAgIDwv dmFybGlzdGVudHJ5PgogCiAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1tZXRhLWNv bW1hbmQtY29ubmluZm8iPgotICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm88L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm9bK108L2xpdGVyYWw+ PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgIDxwYXJhPgogICAgICAgICBPdXRw dXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGRhdGFiYXNlIGNvbm5lY3Rpb24uCisg ICAgICAgIFdoZW4gbm8gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCBpdCBzaW1w bHkgcHJpbnRzCisgICAgICAgIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGZldyBjb25uZWN0 aW9uIG9wdGlvbnMuCisgICAgICAgIFdoZW4gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgZ2l2ZW4s IG1vcmUgY29tcGxldGUgaW5mb3JtYXRpb24KKyAgICAgICAgaXMgZGlzcGxheWVkIGFzIGEgdGFi bGUuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNx bC9jb21tYW5kLmMKaW5kZXggNWM5MDZlNC4uMmM0ZWE3NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC02OCw3ICs2OCw4 IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX0MoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuCiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNf Y29tbWFuZF9jb25uZWN0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NkKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqY21kKTsKLXN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNr c2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY21kKTsKIHN0 YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NvcHkoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVj X2NvbW1hbmRfY29weXJpZ2h0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVf YnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nyb3NzdGFidmll dyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zMTcs OCArMzE4LDggQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVzID0gZXhl Y19jb21tYW5kX2Nvbm5lY3Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAo c3RyY21wKGNtZCwgImNkIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2NkKHNjYW5f c3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7Ci0JZWxzZSBpZiAoc3RyY21wKGNtZCwgImNvbm5p bmZvIikgPT0gMCkKLQkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Nvbm5pbmZvKHNjYW5fc3RhdGUs IGFjdGl2ZV9icmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJjb25uaW5mbyIpID09IDAg fHwgc3RyY21wKGNtZCwgImNvbm5pbmZvKyIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFu ZF9jb25uaW5mbyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQpOwogCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAoY21kLCAiY29weSIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9j b3B5KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJj b3B5cmlnaHQiKSA9PSAwKQpAQCAtNjQzLDQ3ICs2NDQsNzAgQEAgZXhlY19jb21tYW5kX2NkKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiB9CiAKIC8qCi0gKiBcY29ubmluZm8gLS0gZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY3VycmVudCBjb25uZWN0aW9uCisgKiBcY29ubmluZm8sIFxjb25uaW5mbysgLS0gZGlzcGxh eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBjb25uZWN0aW9uCiAgKi8KIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQKLWV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK2V4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog eworCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOworCiAJaWYgKGFjdGl2ZV9icmFuY2gpCiAJewogCQlj aGFyCSAgICpkYiA9IFBRZGIocHNldC5kYik7CisJCWJvb2wJCXNob3dfdmVyYm9zZTsKIAotCQlp ZiAoZGIgPT0gTlVMTCkKLQkJCXByaW50ZihfKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVj dGVkIHRvIGEgZGF0YWJhc2UuXG4iKSk7Ci0JCWVsc2UKKwkJc2hvd192ZXJib3NlID0gc3RyY2hy KGNtZCwgJysnKSA/IHRydWUgOiBmYWxzZTsKKworCQkvKgorCQkgKiBcY29ubmluZm8rCisJCSAq LworCQlpZiAoc2hvd192ZXJib3NlKQogCQl7Ci0JCQljaGFyCSAgICpob3N0ID0gUFFob3N0KHBz ZXQuZGIpOwotCQkJY2hhcgkgICAqaG9zdGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCQkJ c3VjY2VzcyA9IGxpc3RDb25uZWN0aW9uSW5mb3JtYXRpb24oKTsKKwkJCXByaW50U1NMSW5mbygp OworCQkJcHJpbnRHU1NJbmZvKCk7CisJCX0KIAotCQkJaWYgKGlzX3VuaXhzb2NrX3BhdGgoaG9z dCkpCi0JCQl7Ci0JCQkJLyogaG9zdGFkZHIgb3ZlcnJpZGVzIGhvc3QgKi8KLQkJCQlpZiAoaG9z dGFkZHIgJiYgKmhvc3RhZGRyKQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8g ZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGFkZHJlc3MgXCIlc1wiIGF0IHBvcnQg XCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFw b3J0KHBzZXQuZGIpKTsKLQkJCQllbHNlCi0JCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3Rl ZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBcIiVzXCIgdmlhIHNvY2tldCBpbiBcIiVzXCIg YXQgcG9ydCBcIiVzXCIuXG4iKSwKLQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3Qs IFBRcG9ydChwc2V0LmRiKSk7Ci0JCQl9CisJCS8qCisJCSAqIFxjb25uaW5mbworCQkgKi8KKwkJ ZWxzZQorCQl7CisJCQlpZiAoZGIgPT0gTlVMTCkKKwkJCQlwcmludGYoXygiWW91IGFyZSBjdXJy ZW50bHkgbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOwogCQkJZWxzZQogCQkJewot CQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21wKGhvc3QsIGhvc3RhZGRyKSAh PSAwKQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wi IGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIChhZGRyZXNzIFwiJXNcIikgYXQgcG9ydCBc IiVzXCIuXG4iKSwKLQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIGhvc3RhZGRy LCBQUXBvcnQocHNldC5kYikpOworCQkJCWNoYXIJICAgKmhvc3QgPSBQUWhvc3QocHNldC5kYik7 CisJCQkJY2hhcgkgICAqaG9zdGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCisJCQkJaWYg KGlzX3VuaXhzb2NrX3BhdGgoaG9zdCkpCisJCQkJeworCQkJCQkvKiBob3N0YWRkciBvdmVycmlk ZXMgaG9zdCAqLworCQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyKQorCQkJCQkJcHJpbnRm KF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBv biBhZGRyZXNzIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRiLCBQUXVz ZXIocHNldC5kYiksIGhvc3RhZGRyLCBQUXBvcnQocHNldC5kYikpOworCQkJCQllbHNlCisJCQkJ CQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIg XCIlc1wiIHZpYSBzb2NrZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJ ICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQl9CiAJ CQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIl c1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0J CQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJ CXsKKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkciAmJiBzdHJjbXAoaG9zdCwgaG9zdGFk ZHIpICE9IDApCisJCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2Ug XCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIChhZGRyZXNzIFwiJXNcIikgYXQg cG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBo b3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQkJZWxzZQorCQkJCQkJcHJpbnRmKF8oIllv dSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0 IFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5k YiksIGhvc3QsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJfQorCQkJCXByaW50U1NMSW5mbygpOwor CQkJCXByaW50R1NTSW5mbygpOwogCQkJfQotCQkJcHJpbnRTU0xJbmZvKCk7Ci0JCQlwcmludEdT U0luZm8oKTsKIAkJfQogCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3Rh dGUpOwogCi0JcmV0dXJuIFBTUUxfQ01EX1NLSVBfTElORTsKKwlyZXR1cm4gc3VjY2VzcyA/IFBT UUxfQ01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VSUk9SOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBi NmE0ZWIxLi4wZDM1N2E5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImZl X3V0aWxzL21icHJpbnQuaCIKICNpbmNsdWRlICJmZV91dGlscy9wcmludC5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImxpYnBxL3BxY29tbS5oIgogI2lu Y2x1ZGUgInNldHRpbmdzLmgiCiAjaW5jbHVkZSAidmFyaWFibGVzLmgiCiAKQEAgLTkwMSw2ICs5 MDIsNzAgQEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGxpc3RD b25uZWN0aW9uSW5mb3JtYXRpb24KKyAqCisgKiBmb3IgXGNvbm5pbmZvKworICovCitib29sCits aXN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKCkKK3sKKwlQR3Jlc3VsdCAgICpyZXM7CisJUFFFeHBC dWZmZXJEYXRhIGJ1ZjsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCisJY2hh cgkgICAqaG9zdCA9IFBRaG9zdChwc2V0LmRiKTsKKwljaGFyCSAgICpob3N0YWRkciA9IFBRaG9z dGFkZHIocHNldC5kYik7CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1RcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmN1 cnJlbnRfZGF0YWJhc2UoKSBBUyBcIkRhdGFiYXNlXCIsXG4iCisJCQkJCSAgIiAgJyVzJyBBUyBc IkF1dGhlbnRpY2F0ZWQgVXNlclwiLFxuIiwKKwkJCQkJICBQUXVzZXIocHNldC5kYikpOworCWlm IChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCSAgIiAgcGdfY2F0YWxvZy5zeXN0ZW1fdXNlcigpIEFTIFwiU3lzdGVtIFVzZXJcIixcbiIp OworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50 X3VzZXIoKSBBUyBcIkN1cnJlbnQgVXNlclwiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuc2Vz c2lvbl91c2VyKCkgQVMgXCJTZXNzaW9uIFVzZXJcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LnBnX2JhY2tlbmRfcGlkKCkgQVMgXCJTZXNzaW9uIFBJRFwiLFxuIgorCQkJCQkgICIgIHBnX2Nh dGFsb2cuY3VycmVudF9zZXR0aW5nKCdzZXJ2ZXJfdmVyc2lvbicpIEFTIFwiU2VydmVyIFZlcnNp b25cIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmluZXRfc2VydmVyX2FkZHIoKSBBUyBcIlNl cnZlciBBZGRyZXNzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmco J3BvcnQnKSBBUyBcIlNlcnZlciBQb3J0XCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0 X2NsaWVudF9hZGRyKCkgQVMgXCJDbGllbnQgQWRkcmVzc1wiLFxuIgorCQkJCQkgICIgIHBnX2Nh dGFsb2cuaW5ldF9jbGllbnRfcG9ydCgpIEFTIFwiQ2xpZW50IFBvcnRcIixcbiIpOworCWlmIChp c191bml4c29ja19wYXRoKGhvc3QpICYmICEoaG9zdGFkZHIgJiYgKmhvc3RhZGRyKSkKKwkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgJyVzJyBBUyBcIlNvY2tldCBEaXJlY3Rv cnlcIixcbiIsCisJCQkJCQkgIGhvc3QpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIlNvY2tldCBEaXJlY3RvcnlcIixcbiIpOworCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgQ0FTRVxuIgorCQkJCQkgICIgICAgV0hFTlxu IgorCQkJCQkgICIgICAgICBwZ19jYXRhbG9nLmluZXRfc2VydmVyX2FkZHIoKSBJUyBOVUxMXG4i CisJCQkJCSAgIiAgICAgIEFORCBwZ19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKSBJUyBOVUxM XG4iCisJCQkJCSAgIiAgICBUSEVOIE5VTExcbiIKKwkJCQkJICAiICAgIEVMU0UgJyVzJ1xuIgor CQkJCQkgICIgIEVORCBBUyBcIkhvc3RcIjsiLAorCQkJCQkgIGhvc3QpOworCisJcmVzID0gUFNR TGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJ cmV0dXJuIGZhbHNlOworCisJbXlvcHQudGl0bGUgPSBfKCJDdXJyZW50IENvbm5lY3Rpb24gSW5m b3JtYXRpb24iKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKworCXByaW50UXVl cnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKKwor CVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqIGxpc3RBbGxEYnMKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmgKaW5kZXggMjczZjk3NC4uZmEwMzRjNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTE0OSw0ICsxNDksNyBAQCBl eHRlcm4gYm9vbCBsaXN0T3BGYW1pbHlGdW5jdGlvbnMoY29uc3QgY2hhciAqYWNjZXNzX21ldGhv ZF9wYXR0ZXJuLAogLyogXGRsIG9yIFxsb19saXN0ICovCiBleHRlcm4gYm9vbCBsaXN0TGFyZ2VP YmplY3RzKGJvb2wgdmVyYm9zZSk7CiAKKy8qIFxjb25uaW5mbyAqLworZXh0ZXJuIGJvb2wgbGlz dENvbm5lY3Rpb25JbmZvcm1hdGlvbigpOworCiAjZW5kaWYJCQkJCQkJLyogREVTQ1JJQkVfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMK aW5kZXggNGU3OWE4MS4uMmM1NDI2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYwor KysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0zMTAsNyArMzEwLDcgQEAgc2xhc2hVc2FnZSh1 bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJZWxzZQogCQlIRUxQMCgiICBcXGNbb25uZWN0XSB7 W0RCTkFNRXwtIFVTRVJ8LSBIT1NUfC0gUE9SVHwtXSB8IGNvbm5pbmZvfVxuIgogCQkJICAiICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3QgdG8gbmV3IGRhdGFiYXNlIChjdXJyZW50bHkg bm8gY29ubmVjdGlvbilcbiIpOwotCUhFTFAwKCIgIFxcY29ubmluZm8gICAgICAgICAgICAgIGRp c3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKKwlIRUxQMCgi ICBcXGNvbm5pbmZvWytdICAgICAgICAgICBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGN1cnJl bnQgY29ubmVjdGlvblxuIik7CiAJSEVMUDAoIiAgXFxlbmNvZGluZyBbRU5DT0RJTkddICAgc2hv dyBvciBzZXQgY2xpZW50IGVuY29kaW5nXG4iKTsKIAlIRUxQMCgiICBcXHBhc3N3b3JkIFtVU0VS TkFNRV0gICBzZWN1cmVseSBjaGFuZ2UgdGhlIHBhc3N3b3JkIGZvciBhIHVzZXJcbiIpOwogCUhF TFAwKCJcbiIpOwo= --_004_CP8P284MB249681AA87D9EAF9412439D9EC442CP8P284MB2496BRAP_--