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 1rYBMW-00Ekm9-Lu for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Feb 2024 20:51:13 +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 1rYBMV-003ER5-Tb for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Feb 2024 20:51:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYBJL-0039G0-2h for pgsql-hackers@lists.postgresql.org; Thu, 08 Feb 2024 20:47:55 +0000 Received: from mail-roabra01olkn20801.outbound.protection.outlook.com ([2a01:111:f403:2c1e::801] helo=BRA01-ROA-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYBJG-005lz1-Bf for pgsql-hackers@postgresql.org; Thu, 08 Feb 2024 20:47:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BF6yfiIpZF5E4yf29eHHdPYAcDSMQVLSStukkzGXD76dbONhT16QMMz3WDJUtFmcmGVkh2MFq/t65PiHDnAIqDX08er8tle/yfdfA+9d0gjttRsypddUnndrLhhJD+1ToI6SmvhLXQLxy/hZ35okKNSDwsLeTr0zQKLyRgTmmYNG1Vq6YxJfhFq9KqiiMm64MsyyrCGGoYm2mB7dhONesxNkxF/RLANXAOu9Z8nc1CF/UQiHonP7q5MIR/IoK1THq816rB16KcqcYKuNlRNKEHD9CKH5aWWj1pEO7vJMzJSsINRu671PObLoN0HuQ3NZRrQS0WY8lWyr8LqqIXuFbQ== 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=mz+NBWhj+3jdk6EMuhBTfDjAgE4a/R6oPeP8Dg+wWFA=; b=YIw/1TNamel4tXYzzbd4GisSQlcgX4Ad0FMQMJS4LbC+sa+mQJcaeG5PF4tfc3XQFDx7Ym3epkvVqXKGIxzpn6QapKdItE725pB2MFDq0/tY0fKYDCdB8LG+zd10Ih1X9Mjlzfd4zSMIOpFwVFx8pCdcoEK5zFw8XsC9ns9Iv8N9mXwTplDbS4zvWmbqQZ1OWS65xzZfna0eTRbOF0i2mWvyq6aAwj5zQqbct2b/cKk3Lk3dYQOS9Lqr/l02D+/V7pu91KNzw9Lz0cnUfnIVdwffQ2peY/2hCb0wPj3APdgxb0CWq/EwvXECbFMSD/+KEVY+mYUIhNGyZaxc0J/zLQ== 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 CP4P284MB1925.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:d8::13) 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 20:47:44 +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 20:47:44 +0000 From: Maiquel Grassi To: Jim Jones , Pavel Luzanov , Nathan Bossart CC: Erik Wienhold , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgABCa76AAE2sAIAADcWt Date: Thu, 8 Feb 2024 20:47:44 +0000 Message-ID: References: <20240206181919.GA3853632@nathanxps13> <20240206210605.GA3903769@nathanxps13> <20240206211205.GA3903996@nathanxps13> <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: [EF8es0M58qgF4rMdy7BeQ+Huj+I/xdlH] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP4P284MB1925:EE_ x-ms-office365-filtering-correlation-id: 863cadd7-a7f5-4f23-280d-08dc28e73351 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HOdPbW5vYZd1yZX999Twn7px1kMs+aWxLQhCJzzea4wTQHrb47bL1ao6PvnmqwJyXF1DX8VpvKAKyMTHYy8dQnaH0FqM9jr+C0J3BpMQPHzxsU3iUGsRKWCmunGokXZBJUgrpC0fG9JrcfOk5ZhCxvpMbCTNBKPPu1eBkq7KQ3+PwQTAnANQ6AaRWa/r3Q3N4vT2gd/BO0p+NMNa/OZIs7SD3bBrEE2RbSQduvBge7kQM032tkR3uRovfZEgNP7TYMt9FrrkQm/Yd07kfLawxaL3Ax3K2B4diAlL+2H+QNdGaSvLgoHnTsxjCvaWQrtk219jZbjvnaw4KEBE08LAbARmOAy3SPfVsKC85JV4+RxW/5Sg+Bylo6dhCRyl5PAdlp1yFPCTrBR5E1w0iciVW5Xp1YXENQlDbI8pUA/25mTva6w0Sa2CVmGtvWQ6bNEXe9bOhwWbiFQzAO894MzW9Lus6m+emNRKODoDwVnlDg1uXeIPCNAgGUb8j2ZViMiu0pmLl7XuOquB9SG+mYAsH5B9aeouBlUIytgFLnh0ruzGoSjptJSCVcl7q+ZEkwvExNpMjfV2qL/TEpFlSSypbJIfopwXjzcfO2no+6EIr1s98wHNkCPJJZ9Se/T5HeGI x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xJCj8DyL8IJ8AKfyvXdJftt8palYG97khwd+n/Bqq5IAe+2ooYVnvFv/aP?= =?iso-8859-1?Q?Oojhq3WsNj5z6NNsVCqOpFgKTVwyaDupjLQZmhLmfCkiBl9ejsMTgEicoy?= =?iso-8859-1?Q?RjDFvP+ZqkdddQX1jaMa+fDYKMDM7MEfQ4SBeiCdwWZNnbaMhchjR7F1Fy?= =?iso-8859-1?Q?SpAT974khL5xC4T0OqTbh+p+7UHzN8whmxn0p4iQELBI+OgFGpf3ahElpr?= =?iso-8859-1?Q?10ADNWL5PxE3+KSPeYTZ1i78Lx4xD0CWMvZ8d0SdPrJK9oWsodM4o0Mx+M?= =?iso-8859-1?Q?Wdj+OcwK7kU3DjndIx3td8H5nZrxOB2YWdThpjbTIQST/RO7AWYYgIyK6R?= =?iso-8859-1?Q?Vv0Po4FJri/Q5MruJa45v0IUYpxBX75qRoQGlxCXvAOnVv+FDHd2IwcZZY?= =?iso-8859-1?Q?xFD27pIt23PWHL/xhX/c331fW8xWfChSuMCzCvB8mn9/Zq0lSx3bjYs5V7?= =?iso-8859-1?Q?7hpsJpkYfTTdcN5cCgCmFUnJxrz+yoyAkm699NO/hP6N/vYXU0wXgE0Djc?= =?iso-8859-1?Q?QAE20S4q/AQDhHXz4k4I3sNZVX1N1AFjlwrZkkSJKrciuB+vZ7YkNBrnvA?= =?iso-8859-1?Q?zhNf6020DSVRuYH+A4Or9UbyTTLpHdk+5dfGNdv1yALc9pVCz8lAQpVmUv?= =?iso-8859-1?Q?KG+WGYBn1LYCzYq6zKOkYs2jH3Il9pzmp7joKyu+OnHiiGgIjp4eUYEJ2i?= =?iso-8859-1?Q?KPBpgUN+v0bt0RqoYDG36OpxOHBeZ4nyr4q1VrRg6CRdCeY9aAlodl9IjU?= =?iso-8859-1?Q?LDVcdTlRFP/v4I9UOzfvytPTHtkEZzVnr0gsRXEEY3nxobNTHmcBgDtuyG?= =?iso-8859-1?Q?E7KzKWszINF62HCUGClB4fBZowSE6NR4GpY5rx7wv7iaewnH8Jn4yWiWS/?= =?iso-8859-1?Q?6DGaVNi+6s5v6ut85iO393qq84WVagWJHkGkzZISMYPOwkN/xGYqwSC6J2?= =?iso-8859-1?Q?IyQcZFXG0YqxzF4hWTOCV3+X8Rk8VhL2/GiA+AElYrcL79kmXxeJbD7pnu?= =?iso-8859-1?Q?lR3EQ9ukK/mjZtvviOqIPkx329RJI8H1F1/cBqzmTbB1rVwBoazLBp8ZR7?= =?iso-8859-1?Q?8yYYzCee20G3oMYfJPwWie/foPM6CmDMEJrchTSQ/EyfhevuUIjMs2UxpK?= =?iso-8859-1?Q?0uAQemO1eq01pajjsWt0OfZ1iTOxLTtGK1jyNeua8AfxVlRESiXL0cgiOC?= =?iso-8859-1?Q?9axO5UiirPg0T5BCj8TyBNO1rVP9UaY4VaZXzrM0dvrX65/BWBNLZNcuSE?= =?iso-8859-1?Q?IDUN9dlaB2BzjTk88Qjw=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_" 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: 863cadd7-a7f5-4f23-280d-08dc28e73351 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2024 20:47:44.3151 (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: CP4P284MB1925 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_" --_000_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > v8 no longer throws a permission denied error for non-superusers - it is > IMHO much nicer this way. > > $ /usr/local/postgres-dev/bin/psql postgres -p 5432 -h 127.0.0.1 -U jim > psql (17devel) > Type "help" for help. > > postgres=3D# \x > Expanded display is on. > postgres=3D# \conninfo+ > Current Connection Information > -[ RECORD 1 ]------+---------- > Database | postgres > Authenticated User | jim > System User | > Current User | jim > Session User | jim > Session PID | 1321493 > Server Version | 17devel > Server Address | 127.0.0.1 > Server Port | 5432 > Client Address | 127.0.0.1 > Client Port | 49366 > Socket Directory | > Host | 127.0.0.1 > > postgres=3D# SET ROLE foo; > SET > postgres=3D> \conninfo+ > Current Connection Information > -[ RECORD 1 ]------+---------- > Database | postgres > Authenticated User | jim > System User | > Current User | foo > Session User | jim > Session PID | 1321493 > Server Version | 17devel > Server Address | 127.0.0.1 > Server Port | 5432 > Client Address | 127.0.0.1 > Client Port | 49366 > Socket Directory | > Host | 127.0.0.1 > > The patch now applies cleanly. > > 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. > > I can do a more thorough review of the code when you add the > documentation and tests to the patch. > > Thanks! --//-- Hi Jim, It's not a psql standard to use tab-complete for commands ending with +. You can verify this in the /* psql's backslash commands. */ section of the file "/src/bin/psql/tab-complete.c". https://github.com/postgres/postgres/blob/fdfb92c0307c95eba10854196628d88e6= 708901e/src/bin/psql/tab-complete.c In v9, I started the documentation work and am open to suggestions. > "I can do a more thorough review of the code when you add the > documentation and tests to the patch." Soon I'll be developing the tests. And that will be welcome. Thanks a lot! Regards, Maiquel Grassi. --_000_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
> v8 no longer throws a permission denied erro= r for non-superusers - it is
> IMHO much nicer this way.

> $ /usr/local/postgres-dev/bin/psql postgres -p 5432 -h 127.0.0.1 = -U jim
> psql (17devel)
> Type "help" for help.
> postgres=3D# \x
> Expanded display is on.
> postgres=3D# \conninfo+
> Current Connection Information
> -[ RECORD 1 ]------+----------
> Database      =      | postgres
> Authenticated User | jim
> System User     &nb= sp;  |
> Current User     &n= bsp; | jim
> Session User     &n= bsp; | jim
> Session PID     &nb= sp;  | 1321493
> Server Version     | 17d= evel
> Server Address     | 127= .0.0.1
> Server Port     &nb= sp;  | 5432
> Client Address     | 127= .0.0.1
> Client Port     &nb= sp;  | 49366
> Socket Directory   |
> Host      &nbs= p;        | 127.0.0.1
> postgres=3D# SET ROLE foo;
> SET
> postgres=3D> \conninfo+
> Current Connection Information
> -[ RECORD 1 ]------+----------
> Database      =      | postgres
> Authenticated User | jim
> System User     &nb= sp;  |
> Current User     &n= bsp; | foo
> Session User     &n= bsp; | jim
> Session PID     &nb= sp;  | 1321493
> Server Version     | 17d= evel
> Server Address     | 127= .0.0.1
> Server Port     &nb= sp;  | 5432
> Client Address     | 127= .0.0.1
> Client Port     &nb= sp;  | 49366
> Socket Directory   |
> Host      &nbs= p;        | 127.0.0.1
> 
> The patch now applies cleanly.
> One thing I just noticed. The psql autocompl= ete feature does not suggest
> the new + option of \conninfo. For instance,= when typing "\connin[TAB]"
> it automatically autocompletes to "\con= ninfo ". I guess it should also
> be included in this patch.
> I can do a more thorough review of the code = when you add the
> documentation and tests to the patch.=
> Thanks!

=
--//--

Hi Jim,

It's not a psql standar= d to use tab-complete for commands ending with +.
You can verify this in the /* psql's backslash commands. */ sec= tion of
the file "/src/bin/psql/tab-complete.c".

https://github= .com/postgres/postgres/blob/fdfb92c0307c95eba10854196628d88e6708901e/src/bi= n/psql/tab-complete.c

In v9, I started the documentation work and am open to suggestions.

> "= I can do a more thorough review of the code when you add the

> documentati= on and tests to the patch."

Soon I'll be developing the tests. And that will be welcome.

Thanks a lot!

Regards,
Maiquel Grassi.
--_000_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_-- --_004_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v9-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v9-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v9-0001-psql-meta-command-conninfo-plus.patch"; size=9176; creation-date="Thu, 08 Feb 2024 20:38:17 GMT"; modification-date="Thu, 08 Feb 2024 20:42:32 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 bC9jb21tYW5kLmMKaW5kZXggNWM5MDZlNC4uYmY5M2NiMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w 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 b3B5cmlnaHQiKSA9PSAwKQpAQCAtNjQzLDQ3ICs2NDQsNzQgQEAgZXhlY19jb21tYW5kX2NkKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiB9CiAKIC8qCi0gKiBcY29ubmluZm8gLS0gZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY3VycmVudCBjb25uZWN0aW9uCisgKiBcY29ubmluZm8sIFxjb25uaW5mbysgLS0gZGlzcGxh eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBjb25uZWN0aW9uCiAgKi8KIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQKLWV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK2V4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog eworCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOworCiAJaWYgKGFjdGl2ZV9icmFuY2gpCiAJewogCQlj aGFyCSAgICpkYiA9IFBRZGIocHNldC5kYik7CisJCWNoYXIJICAgKnBhdHRlcm47CisJCWJvb2wJ CXNob3dfdmVyYm9zZTsKIAotCQlpZiAoZGIgPT0gTlVMTCkKLQkJCXByaW50ZihfKCJZb3UgYXJl IGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKSk7Ci0JCWVsc2UKKwkJ cGF0dGVybiA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwgT1RfTk9STUFMLCBO VUxMLCB0cnVlKTsKKworCQlzaG93X3ZlcmJvc2UgPSBzdHJjaHIoY21kLCAnKycpID8gdHJ1ZSA6 IGZhbHNlOworCisJCS8qCisJCSAqIFxjb25uaW5mbysKKwkJICovCisJCWlmIChzaG93X3ZlcmJv c2UpCiAJCXsKLQkJCWNoYXIJICAgKmhvc3QgPSBQUWhvc3QocHNldC5kYik7Ci0JCQljaGFyCSAg ICpob3N0YWRkciA9IFBRaG9zdGFkZHIocHNldC5kYik7CisJCQlzdWNjZXNzID0gbGlzdENvbm5l Y3Rpb25JbmZvcm1hdGlvbihwYXR0ZXJuKTsKKwkJCWZyZWUocGF0dGVybik7CisJCQlwcmludFNT TEluZm8oKTsKKwkJCXByaW50R1NTSW5mbygpOworCQl9CiAKLQkJCWlmIChpc191bml4c29ja19w YXRoKGhvc3QpKQotCQkJewotCQkJCS8qIGhvc3RhZGRyIG92ZXJyaWRlcyBob3N0ICovCi0JCQkJ aWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVj dGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwiJXNcIiBh dCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdGFk ZHIsIFBRcG9ydChwc2V0LmRiKSk7Ci0JCQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBj b25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIHZpYSBzb2NrZXQgaW4g XCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIp LCBob3N0LCBQUXBvcnQocHNldC5kYikpOwotCQkJfQorCQkvKgorCQkgKiBcY29ubmluZm8KKwkJ ICovCisJCWVsc2UKKwkJeworCQkJaWYgKGRiID09IE5VTEwpCisJCQkJcHJpbnRmKF8oIllvdSBh cmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpKTsKIAkJCWVsc2UK IAkJCXsKLQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyICYmIHN0cmNtcChob3N0LCBob3N0 YWRkcikgIT0gMCkKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNl IFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVzXCIpIGF0 IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBo b3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQljaGFyCSAgICpob3N0ID0gUFFob3N0KHBz ZXQuZGIpOworCQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRiKTsKKwor CQkJCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpKQorCQkJCXsKKwkJCQkJLyogaG9zdGFkZHIg b3ZlcnJpZGVzIGhvc3QgKi8KKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikKKwkJCQkJ CXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCIgb24gYWRkcmVzcyBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBk YiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQkJZWxz ZQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBh cyB1c2VyIFwiJXNcIiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAor CQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIFBRcG9ydChwc2V0LmRiKSk7CisJ CQkJfQogCQkJCWVsc2UKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFi YXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5c biIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIp KTsKKwkJCQl7CisJCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21wKGhvc3Qs IGhvc3RhZGRyKSAhPSAwKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRh dGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVz XCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwg aG9zdCwgaG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJCWVsc2UKKwkJCQkJCXByaW50 ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBcIiVzXCIg b24gaG9zdCBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwgUFF1c2Vy KHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJCX0KKwkJCQlwcmludFNTTElu Zm8oKTsKKwkJCQlwcmludEdTU0luZm8oKTsKIAkJCX0KLQkJCXByaW50U1NMSW5mbygpOwotCQkJ cHJpbnRHU1NJbmZvKCk7CiAJCX0KIAl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhz Y2FuX3N0YXRlKTsKIAotCXJldHVybiBQU1FMX0NNRF9TS0lQX0xJTkU7CisJcmV0dXJuIHN1Y2Nl c3MgPyBQU1FMX0NNRF9TS0lQX0xJTkUgOiBQU1FMX0NNRF9FUlJPUjsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK aW5kZXggYjZhNGViMS4uMTNmMGQxZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs dWRlICJmZV91dGlscy9tYnByaW50LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvcHJpbnQuaCIKICNp bmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJwcS9wcWNvbW0u aCIKICNpbmNsdWRlICJzZXR0aW5ncy5oIgogI2luY2x1ZGUgInZhcmlhYmxlcy5oIgogCkBAIC05 MDEsNiArOTAyLDcwIEBAIGVycm9yX3JldHVybjoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisg KiBsaXN0Q29ubmVjdGlvbkluZm9ybWF0aW9uCisgKgorICogZm9yIFxjb25uaW5mbysKKyAqLwor Ym9vbAorbGlzdENvbm5lY3Rpb25JbmZvcm1hdGlvbihjb25zdCBjaGFyICpwYXR0ZXJuKQorewor CVBHcmVzdWx0ICAgKnJlczsKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCXByaW50UXVlcnlPcHQg bXlvcHQgPSBwc2V0LnBvcHQ7CisKKwljaGFyCSAgICpob3N0ID0gUFFob3N0KHBzZXQuZGIpOwor CWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRiKTsKKworCWluaXRQUUV4cEJ1 ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVFxu IgorCQkJCQkgICIgIHBnX2NhdGFsb2cuY3VycmVudF9kYXRhYmFzZSgpIEFTIFwiRGF0YWJhc2Vc IixcbiIKKwkJCQkJICAiICAnJXMnIEFTIFwiQXV0aGVudGljYXRlZCBVc2VyXCIsXG4iLAorCQkJ CQkgIFBRdXNlcihwc2V0LmRiKSk7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICBwZ19jYXRhbG9nLnN5c3RlbV91c2Vy KCkgQVMgXCJTeXN0ZW0gVXNlclwiLFxuIik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJICAiICBwZ19jYXRhbG9nLmN1cnJlbnRfdXNlcigpIEFTIFwiQ3VycmVudCBVc2VyXCIsXG4i CisJCQkJCSAgIiAgcGdfY2F0YWxvZy5zZXNzaW9uX3VzZXIoKSBBUyBcIlNlc3Npb24gVXNlclwi LFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfYmFja2VuZF9waWQoKSBBUyBcIlNlc3Npb24g UElEXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92 ZXJzaW9uJykgQVMgXCJTZXJ2ZXIgVmVyc2lvblwiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cu aW5ldF9zZXJ2ZXJfYWRkcigpIEFTIFwiU2VydmVyIEFkZHJlc3NcIixcbiIKKwkJCQkJICAiICBw Z19jYXRhbG9nLmN1cnJlbnRfc2V0dGluZygncG9ydCcpIEFTIFwiU2VydmVyIFBvcnRcIixcbiIK KwkJCQkJICAiICBwZ19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKSBBUyBcIkNsaWVudCBBZGRy ZXNzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0X2NsaWVudF9wb3J0KCkgQVMgXCJD bGllbnQgUG9ydFwiLFxuIik7CisJaWYgKGlzX3VuaXhzb2NrX3BhdGgoaG9zdCkgJiYgIShob3N0 YWRkciAmJiAqaG9zdGFkZHIpKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAi ICAnJXMnIEFTIFwiU29ja2V0IERpcmVjdG9yeVwiLFxuIiwKKwkJCQkJCSAgaG9zdCk7CisJZWxz ZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICBOVUxMIEFTIFwiU29ja2V0 IERpcmVjdG9yeVwiLFxuIik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiICBD QVNFXG4iCisJCQkJCSAgIiAgICBXSEVOXG4iCisJCQkJCSAgIiAgICAgIHBnX2NhdGFsb2cuaW5l dF9zZXJ2ZXJfYWRkcigpIElTIE5VTExcbiIKKwkJCQkJICAiICAgICAgQU5EIHBnX2NhdGFsb2cu aW5ldF9jbGllbnRfYWRkcigpIElTIE5VTExcbiIKKwkJCQkJICAiICAgIFRIRU4gTlVMTFxuIgor CQkJCQkgICIgICAgRUxTRSAnJXMnXG4iCisJCQkJCSAgIiAgRU5EIEFTIFwiSG9zdFwiOyIsCisJ CQkJCSAgaG9zdCk7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVm ZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC50aXRsZSA9 IF8oIkN1cnJlbnQgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiIpOworCW15b3B0LnRyYW5zbGF0ZV9o ZWFkZXIgPSB0cnVlOworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQs IGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOwor fQogCiAvKgogICogbGlzdEFsbERicwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCAyNzNmOTc0Li43Nzk5MThiIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuaApAQCAtMTQ5LDQgKzE0OSw3IEBAIGV4dGVybiBib29sIGxpc3RPcEZhbWlseUZ1bmN0aW9u cyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCiAvKiBcZGwgb3IgXGxvX2xpc3Qg Ki8KIGV4dGVybiBib29sIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3NlKTsKIAorLyogXGNv bm5pbmZvICovCitleHRlcm4gYm9vbCBsaXN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKGNvbnN0IGNo YXIgKnBhdHRlcm4pOworCiAjZW5kaWYJCQkJCQkJLyogREVTQ1JJQkVfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNGU3OWE4 MS4uMmM1NDI2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmlu L3BzcWwvaGVscC5jCkBAIC0zMTAsNyArMzEwLDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9y dCBpbnQgcGFnZXIpCiAJZWxzZQogCQlIRUxQMCgiICBcXGNbb25uZWN0XSB7W0RCTkFNRXwtIFVT RVJ8LSBIT1NUfC0gUE9SVHwtXSB8IGNvbm5pbmZvfVxuIgogCQkJICAiICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm5lY3QgdG8gbmV3IGRhdGFiYXNlIChjdXJyZW50bHkgbm8gY29ubmVjdGlv bilcbiIpOwotCUhFTFAwKCIgIFxcY29ubmluZm8gICAgICAgICAgICAgIGRpc3BsYXkgaW5mb3Jt YXRpb24gYWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKKwlIRUxQMCgiICBcXGNvbm5pbmZv WytdICAgICAgICAgICBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgY29ubmVjdGlv blxuIik7CiAJSEVMUDAoIiAgXFxlbmNvZGluZyBbRU5DT0RJTkddICAgc2hvdyBvciBzZXQgY2xp ZW50IGVuY29kaW5nXG4iKTsKIAlIRUxQMCgiICBcXHBhc3N3b3JkIFtVU0VSTkFNRV0gICBzZWN1 cmVseSBjaGFuZ2UgdGhlIHBhc3N3b3JkIGZvciBhIHVzZXJcbiIpOwogCUhFTFAwKCJcbiIpOwo= --_004_CP8P284MB249614E7926043EEF7F063EBEC442CP8P284MB2496BRAP_--