Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1abuYQ-0007Qy-GZ for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Mar 2016 18:34:22 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1abuYP-0005tY-SS for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Mar 2016 18:34:21 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1abuYN-0005oe-Lj for pgsql-hackers@postgresql.org; Fri, 04 Mar 2016 18:34:19 +0000 Received: from jiboia.ensmp.fr ([194.214.158.137]) by makus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1abuYK-0005GU-7P for pgsql-hackers@postgresql.org; Fri, 04 Mar 2016 18:34:18 +0000 Received: from cri.ensmp.fr (152.200.219.88.rev.sfr.net [88.219.200.152]) (authenticated bits=0) by jiboia.ensmp.fr (8.15.2/8.15.1/JMMC-22/Oct/2013) with ESMTPSA id u24IYBvb028386 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 4 Mar 2016 19:34:12 +0100 Date: Fri, 4 Mar 2016 19:34:11 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@sto To: Alvaro Herrera cc: Michael Paquier , "pgsql-hackers@postgresql.org" Subject: Re: pgbench stats per script & other stuff In-Reply-To: <20160304182016.GA725213@alvherre.pgsql> Message-ID: References: <20160304182016.GA725213@alvherre.pgsql> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1905966016-1457116452=:11128" X-Miltered: at jiboia.ensmp.fr with ID 56D9D523.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Auth: USER-ID fabien.coelho X-j-chkmail-Enveloppe: 56D9D523.000 from 152.200.219.88.rev.sfr.net/152.200.219.88.rev.sfr.net/88.219.200.152/cri.ensmp.fr/ X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-1905966016-1457116452=:11128 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed >> *-21.patch does what you suggested above, some hidden awkwardness >> but much less that the previous one. > > Yeah, I think this is much nicer, don't you agree? Yep, I said "less awkwarness than previous", a pretty contrived way to say better:-) > However, this is still a bit broken -- you cannot return a stack > variable from process_file, because the stack goes away once the > function returns. You need to malloc it. That is why the "fs" variable in process_file is declared "static", and why I wrote "some hidden awkwarness". I did want to avoid a malloc because then who would free the struct? addScript cannot to it systematically because builtins are static. Or it would have to create an on purpose struct, but I then that would be more awkwarness, and malloc/free to pass arguments between functions is not efficient nor very elegant. So the "static" option looked like the simplest & most elegant version. > Also, you forgot to update the comments in process_file, > process_builtin, etc. Indeed. v22 attached with better comments. -- Fabien. --8323329-1905966016-1457116452=:11128 Content-Type: TEXT/x-diff; name=pgbench-script-stats-22.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-22.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGNjODBiM2Yu LmRkM2ZiMWQgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0yNjIsMTEgKzI2MiwxMyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJl cGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxl PmRibmFtZTwvPg0KIA0KICAgICA8dmFyaWFibGVsaXN0Pg0KICAgICAgPHZh cmxpc3RlbnRyeT4NCi0gICAgICA8dGVybT48b3B0aW9uPi1iPC8+IDxyZXBs YWNlYWJsZT5zY3JpcHRuYW1lPC8+PC90ZXJtPg0KLSAgICAgIDx0ZXJtPjxv cHRpb24+LS1idWlsdGluPC8+IDxyZXBsYWNlYWJsZT5zY3JpcHRuYW1lPC8+ PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWI8Lz4gPHJlcGxhY2Vh YmxlPnNjcmlwdG5hbWVbQHdlaWdodF08Lz48L3Rlcm0+DQorICAgICAgPHRl cm0+PG9wdGlvbj4tLWJ1aWx0aW48Lz49PHJlcGxhY2VhYmxlPnNjcmlwdG5h bWVbQHdlaWdodF08Lz48L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAg ICAgICA8cGFyYT4NCiAgICAgICAgIEFkZCB0aGUgc3BlY2lmaWVkIGJ1aWx0 aW4gc2NyaXB0IHRvIHRoZSBsaXN0IG9mIGV4ZWN1dGVkIHNjcmlwdHMuDQor ICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdodCBhZnRlciA8bGl0 ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQorICAgICAgICBwcm9i YWJpbGl0eSBvZiBkcmF3aW5nIHRoZSBzY3JpcHQuICBJZiBub3Qgc3BlY2lm aWVkLCBpdCBpcyBzZXQgdG8gMS4NCiAgICAgICAgIEF2YWlsYWJsZSBidWls dGluIHNjcmlwdHMgYXJlOiA8bGl0ZXJhbD50cGNiLWxpa2U8Lz4sDQogICAg ICAgICA8bGl0ZXJhbD5zaW1wbGUtdXBkYXRlPC8+IGFuZCA8bGl0ZXJhbD5z ZWxlY3Qtb25seTwvPi4NCiAgICAgICAgIFVuYW1iaWd1b3VzIHByZWZpeGVz IG9mIGJ1aWx0aW4gbmFtZXMgYXJlIGFjY2VwdGVkLg0KQEAgLTMyMiwxMiAr MzI0LDE0IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0 aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQog ICAgICA8L3Zhcmxpc3RlbnRyeT4NCiANCiAgICAgIDx2YXJsaXN0ZW50cnk+ DQotICAgICAgPHRlcm0+PG9wdGlvbj4tZjwvPiA8cmVwbGFjZWFibGU+Zmls ZW5hbWU8Lz48L3Rlcm0+DQotICAgICAgPHRlcm0+PG9wdGlvbj4tLWZpbGU9 PC8+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0KKyAgICAgIDx0 ZXJtPjxvcHRpb24+LWY8Lz4gPHJlcGxhY2VhYmxlPmZpbGVuYW1lW0B3ZWln aHRdPC8+PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1maWxlPTwv PjxyZXBsYWNlYWJsZT5maWxlbmFtZVtAd2VpZ2h0XTwvPjwvdGVybT4NCiAg ICAgICA8bGlzdGl0ZW0+DQogICAgICAgIDxwYXJhPg0KICAgICAgICAgQWRk IGEgdHJhbnNhY3Rpb24gc2NyaXB0IHJlYWQgZnJvbSA8cmVwbGFjZWFibGU+ ZmlsZW5hbWU8Lz4gdG8NCiAgICAgICAgIHRoZSBsaXN0IG9mIGV4ZWN1dGVk IHNjcmlwdHMuDQorICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdo dCBhZnRlciA8bGl0ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQor ICAgICAgICBwcm9iYWJpbGl0eSBvZiBkcmF3aW5nIHRoZSB0ZXN0Lg0KICAg ICAgICAgU2VlIGJlbG93IGZvciBkZXRhaWxzLg0KICAgICAgICA8L3BhcmE+ DQogICAgICAgPC9saXN0aXRlbT4NCkBAIC02ODcsOSArNjkxLDEzIEBAIHBn YmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29w dGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICA8dGl0bGU+V2hh dCBpcyB0aGUgPHF1b3RlPlRyYW5zYWN0aW9uPC8+IEFjdHVhbGx5IFBlcmZv cm1lZCBpbiA8YXBwbGljYXRpb24+cGdiZW5jaDwvYXBwbGljYXRpb24+Pzwv dGl0bGU+DQogDQogICA8cGFyYT4NCi0gICBQZ2JlbmNoIGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkgZnJvbSBhIHNwZWNpZmllZCBs aXN0Lg0KKyAgIDxhcHBsaWNhdGlvbj5wZ2JlbmNoPC8+IGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkNCisgICBmcm9tIGEgc3BlY2lm aWVkIGxpc3QuDQogICAgVGhleSBpbmNsdWRlIGJ1aWx0LWluIHNjcmlwdHMg d2l0aCA8b3B0aW9uPi1iPC8+IGFuZA0KICAgIHVzZXItcHJvdmlkZWQgY3Vz dG9tIHNjcmlwdHMgd2l0aCA8b3B0aW9uPi1mPC8+Lg0KKyAgIEVhY2ggc2Ny aXB0IG1heSBiZSBnaXZlbiBhIHJlbGF0aXZlIHdlaWdodCBzcGVjaWZpZWQg YWZ0ZXIgYQ0KKyAgIDxsaXRlcmFsPkA8Lz4gc28gYXMgdG8gY2hhbmdlIGl0 cyBkcmF3aW5nIHByb2JhYmlsaXR5Lg0KKyAgIFRoZSBkZWZhdWx0IHdlaWdo dCBpcyA8bGl0ZXJhbD4xPC8+Lg0KICA8L3BhcmE+DQogDQogICA8cGFyYT4N CkBAIC0xMTk0LDEyICsxMjAyLDExIEBAIG51bWJlciBvZiBjbGllbnRzOiAx MA0KIG51bWJlciBvZiB0aHJlYWRzOiAxDQogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50OiAxMDAwDQogbnVtYmVyIG9mIHRyYW5zYWN0aW9u cyBhY3R1YWxseSBwcm9jZXNzZWQ6IDEwMDAwLzEwMDAwDQorbGF0ZW5jeSBh dmVyYWdlID0gMTUuODQ0IG1zDQorbGF0ZW5jeSBzdGRkZXYgPSAyLjcxNSBt cw0KIHRwcyA9IDYxOC43NjQ1NTUgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpDQogdHBzID0gNjIyLjk3NzY5OCAoZXhjbHVkaW5nIGNv bm5lY3Rpb25zIGVzdGFibGlzaGluZykNCi1TUUwgc2NyaXB0IDE6ICZsdDti dWlsdGluOiBUUEMtQiAoc29ydCBvZikmZ3Q7DQotIC0gMTAwMDAgdHJhbnNh Y3Rpb25zICgxMDAuMCUgb2YgdG90YWwsIHRwcyA9IDYxOC43NjQ1NTUpDQot IC0gbGF0ZW5jeSBhdmVyYWdlID0gMTUuODQ0IG1zDQotIC0gbGF0ZW5jeSBz dGRkZXYgPSAyLjcxNSBtcw0KK3NjcmlwdCBzdGF0aXN0aWNzOg0KICAtIHN0 YXRlbWVudCBsYXRlbmNpZXMgaW4gbWlsbGlzZWNvbmRzOg0KICAgICAgICAg MC4wMDQzODYgICAgICAgIFxzZXQgbmJyYW5jaGVzIDEgKiA6c2NhbGUNCiAg ICAgICAgIDAuMDAxMzQzICAgICAgICBcc2V0IG50ZWxsZXJzIDEwICogOnNj YWxlDQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCmluZGV4IDhiMGIxN2EuLmQ3 YWY4NmUgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j DQorKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQpAQCAtMzgsNiAr MzgsNyBAQA0KICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgi DQogDQogI2luY2x1ZGUgPGN0eXBlLmg+DQorI2luY2x1ZGUgPGxpbWl0cy5o Pg0KICNpbmNsdWRlIDxtYXRoLmg+DQogI2luY2x1ZGUgPHNpZ25hbC5oPg0K ICNpbmNsdWRlIDxzeXMvdGltZS5oPg0KQEAgLTE3OSw2ICsxODAsOCBAQCBj aGFyCSAgICpsb2dpbiA9IE5VTEw7DQogY2hhcgkgICAqZGJOYW1lOw0KIGNv bnN0IGNoYXIgKnByb2duYW1lOw0KIA0KKyNkZWZpbmUgV1NFUCAnQCcJCQkJ Lyogd2VpZ2h0IHNlcGFyYXRvciAqLw0KKw0KIHZvbGF0aWxlIGJvb2wgdGlt ZXJfZXhjZWVkZWQgPSBmYWxzZTsJLyogZmxhZyBmcm9tIHNpZ25hbCBoYW5k bGVyICovDQogDQogLyogdmFyaWFibGUgZGVmaW5pdGlvbnMgKi8NCkBAIC0z MDAsMjMgKzMwMywyNyBAQCB0eXBlZGVmIHN0cnVjdA0KIHN0YXRpYyBzdHJ1 Y3QNCiB7DQogCWNvbnN0IGNoYXIgKm5hbWU7DQorCWludAkJCXdlaWdodDsN CiAJQ29tbWFuZCAgICoqY29tbWFuZHM7DQogCVN0YXRzRGF0YSBzdGF0czsN CiB9CXNxbF9zY3JpcHRbTUFYX1NDUklQVFNdOwkvKiBTUUwgc2NyaXB0IGZp bGVzICovDQogc3RhdGljIGludAludW1fc2NyaXB0czsJCS8qIG51bWJlciBv ZiBzY3JpcHRzIGluIHNxbF9zY3JpcHRbXSAqLw0KIHN0YXRpYyBpbnQJbnVt X2NvbW1hbmRzID0gMDsJLyogdG90YWwgbnVtYmVyIG9mIENvbW1hbmQgc3Ry dWN0cyAqLw0KK3N0YXRpYyBpbnQ2NCB0b3RhbF93ZWlnaHQgPSAwOw0KKw0K IHN0YXRpYyBpbnQJZGVidWcgPSAwOwkJCS8qIGRlYnVnIGZsYWcgKi8NCiAN CiAvKiBEZWZpbmUgYnVpbHRpbiB0ZXN0IHNjcmlwdHMgKi8NCi0jZGVmaW5l IE5fQlVJTFRJTiAzDQotc3RhdGljIHN0cnVjdA0KK3R5cGVkZWYgc3RydWN0 IHNjcmlwdF90DQogew0KIAljaGFyCSAgICpuYW1lOwkJCS8qIHZlcnkgc2hv cnQgbmFtZSBmb3IgLWIgLi4uICovDQogCWNoYXIJICAgKmRlc2M7CQkJLyog c2hvcnQgZGVzY3JpcHRpb24gKi8NCi0JY2hhcgkgICAqY29tbWFuZHM7CQkv KiBhY3R1YWwgcGdiZW5jaCBzY3JpcHQgKi8NCi19DQorCWNoYXIJICAgKnNj cmlwdDsJCQkvKiBhY3R1YWwgcGdiZW5jaCBzY3JpcHQgKi8NCisJQ29tbWFu ZCAgICoqY29tbWFuZHM7IAkJLyogdGVtcG9yYXJ5IGludGVybWVkaWF0ZSBo b2xkZXIgKi8NCit9IHNjcmlwdF90Ow0KIA0KLQkJCWJ1aWx0aW5fc2NyaXB0 W10gPQ0KKyNkZWZpbmUgTl9CVUlMVElOIDMNCitzdGF0aWMgc2NyaXB0X3Qg YnVpbHRpbl9zY3JpcHRbXSA9DQogew0KIAl7DQogCQkidHBjYi1saWtlIiwN CkBAIC0zMzQsNyArMzQxLDggQEAgc3RhdGljIHN0cnVjdA0KIAkJIlVQREFU RSBwZ2JlbmNoX3RlbGxlcnMgU0VUIHRiYWxhbmNlID0gdGJhbGFuY2UgKyA6 ZGVsdGEgV0hFUkUgdGlkID0gOnRpZDtcbiINCiAJCSJVUERBVEUgcGdiZW5j aF9icmFuY2hlcyBTRVQgYmJhbGFuY2UgPSBiYmFsYW5jZSArIDpkZWx0YSBX SEVSRSBiaWQgPSA6YmlkO1xuIg0KIAkJIklOU0VSVCBJTlRPIHBnYmVuY2hf aGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMg KDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVAp O1xuIg0KLQkJIkVORDtcbiINCisJCSJFTkQ7XG4iLA0KKwkJTlVMTA0KIAl9 LA0KIAl7DQogCQkic2ltcGxlLXVwZGF0ZSIsDQpAQCAtMzUwLDE0ICszNTgs MTYgQEAgc3RhdGljIHN0cnVjdA0KIAkJIlVQREFURSBwZ2JlbmNoX2FjY291 bnRzIFNFVCBhYmFsYW5jZSA9IGFiYWxhbmNlICsgOmRlbHRhIFdIRVJFIGFp ZCA9IDphaWQ7XG4iDQogCQkiU0VMRUNUIGFiYWxhbmNlIEZST00gcGdiZW5j aF9hY2NvdW50cyBXSEVSRSBhaWQgPSA6YWlkO1xuIg0KIAkJIklOU0VSVCBJ TlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10 aW1lKSBWQUxVRVMgKDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVO VF9USU1FU1RBTVApO1xuIg0KLQkJIkVORDtcbiINCisJCSJFTkQ7XG4iLA0K KwkJTlVMTA0KIAl9LA0KIAl7DQogCQkic2VsZWN0LW9ubHkiLA0KIAkJIjxi dWlsdGluOiBzZWxlY3Qgb25seT4iLA0KIAkJIlxcc2V0IG5hY2NvdW50cyAi IENwcEFzU3RyaW5nMihuYWNjb3VudHMpICIgKiA6c2NhbGVcbiINCiAJCSJc XHNldHJhbmRvbSBhaWQgMSA6bmFjY291bnRzXG4iDQotCQkiU0VMRUNUIGFi YWxhbmNlIEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSA6YWlk O1xuIg0KKwkJIlNFTEVDVCBhYmFsYW5jZSBGUk9NIHBnYmVuY2hfYWNjb3Vu dHMgV0hFUkUgYWlkID0gOmFpZDtcbiIsDQorCQlOVUxMDQogCX0NCiB9Ow0K IA0KQEAgLTM5Miw5ICs0MDIsOSBAQCB1c2FnZSh2b2lkKQ0KIAkgIiAgLS10 YWJsZXNwYWNlPVRBQkxFU1BBQ0UgIGNyZWF0ZSB0YWJsZXMgaW4gdGhlIHNw ZWNpZmllZCB0YWJsZXNwYWNlXG4iDQogCQkgICAiICAtLXVubG9nZ2VkLXRh YmxlcyAgICAgICAgY3JlYXRlIHRhYmxlcyBhcyB1bmxvZ2dlZCB0YWJsZXNc biINCiAJCSAgICJcbk9wdGlvbnMgdG8gc2VsZWN0IHdoYXQgdG8gcnVuOlxu Ig0KLQkJICAgIiAgLWIsIC0tYnVpbHRpbj1OQU1FICAgICAgIGFkZCBidWl0 aW4gc2NyaXB0ICh1c2UgXCItYiBsaXN0XCIgdG8gZGlzcGxheVxuIg0KLQkJ ICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBzY3Jp cHRzKVxuIg0KLQkJICAgIiAgLWYsIC0tZmlsZT1GSUxFTkFNRSAgICAgIGFk ZCB0cmFuc2FjdGlvbiBzY3JpcHQgZnJvbSBGSUxFTkFNRVxuIg0KKwkJICAg IiAgLWIsIC0tYnVpbHRpbj1OQU1FW0BXXSAgIGFkZCBidWlsdGluIHNjcmlw dCBOQU1FIHdlaWdodGVkIGF0IFcgKGRlZmF1bHQ6IDEpXG4iDQorCQkgICAi ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZSBcIi1iIGxpc3RcIiB0 byBsaXN0IGF2YWlsYWJsZSBzY3JpcHRzKVxuIg0KKwkJICAgIiAgLWYsIC0t ZmlsZT1GSUxFTkFNRVtAV10gIGFkZCBzY3JpcHQgRklMRU5BTUUgd2VpZ2h0 ZWQgYXQgVyAoZGVmYXVsdDogMSlcbiINCiAJCSAgICIgIC1OLCAtLXNraXAt c29tZS11cGRhdGVzICBza2lwIHVwZGF0ZXMgb2YgcGdiZW5jaF90ZWxsZXJz IGFuZCBwZ2JlbmNoX2JyYW5jaGVzXG4iDQogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNhbWUgYXMgXCItYiBzaW1wbGUtdXBkYXRlXCIp XG4iDQogCQkgICAiICAtUywgLS1zZWxlY3Qtb25seSAgICAgICAgcGVyZm9y bSBTRUxFQ1Qtb25seSB0cmFuc2FjdGlvbnNcbiINCkBAIC0xMzEyLDEzICsx MzIyLDIzIEBAIGNsaWVudERvbmUoQ1N0YXRlICpzdCwgYm9vbCBvaykNCiAJ cmV0dXJuIGZhbHNlOwkJCQkvKiBhbHdheXMgZmFsc2UgKi8NCiB9DQogDQor LyogcmV0dXJuIGEgc2NyaXB0IG51bWJlciB3aXRoIGEgd2VpZ2h0ZWQgY2hv aWNlLiAqLw0KIHN0YXRpYyBpbnQNCiBjaG9vc2VTY3JpcHQoVFN0YXRlICp0 aHJlYWQpDQogew0KKwlpbnQJCQlpID0gMDsNCisJaW50NjQJCXc7DQorDQog CWlmIChudW1fc2NyaXB0cyA9PSAxKQ0KIAkJcmV0dXJuIDA7DQogDQotCXJl dHVybiBnZXRyYW5kKHRocmVhZCwgMCwgbnVtX3NjcmlwdHMgLSAxKTsNCisJ dyA9IGdldHJhbmQodGhyZWFkLCAwLCB0b3RhbF93ZWlnaHQgLSAxKTsNCisJ ZG8NCisJew0KKwkJdyAtPSBzcWxfc2NyaXB0W2krK10ud2VpZ2h0Ow0KKwl9 IHdoaWxlICh3ID49IDApOw0KKw0KKwlyZXR1cm4gaSAtIDE7DQogfQ0KIA0K IC8qIHJldHVybiBmYWxzZSBpZmYgY2xpZW50IHNob3VsZCBiZSBkaXNjb25u ZWN0ZWQgKi8NCkBAIC0yNjIwLDE1ICsyNjQwLDE3IEBAIHJlYWRfbGluZV9m cm9tX2ZpbGUoRklMRSAqZmQpDQogfQ0KIA0KIC8qDQotICogR2l2ZW4gYSBm aWxlIG5hbWUsIHJlYWQgaXQgYW5kIHJldHVybiB0aGUgYXJyYXkgb2YgQ29t bWFuZHMgY29udGFpbmVkDQotICogdGhlcmVpbi4gICItIiBtZWFucyB0byBy ZWFkIHN0ZGluLg0KKyAqIEdpdmVuIGEgZmlsZSBuYW1lLCByZWFkIGl0IGFu ZCByZXR1cm4gYSBzY3JpcHRfdCB3aXRoIGEgZGVzY3JpcHRpb24gJg0KKyAq IGFuIGFycmF5IG9mIGNvbW1hbmRzLiAgIi0iIG1lYW5zIHRvIHJlYWQgc3Rk aW4uDQogICovDQotc3RhdGljIENvbW1hbmQgKioNCitzdGF0aWMgc2NyaXB0 X3QgKg0KIHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSkNCiB7DQogI2Rl ZmluZSBDT01NQU5EU19BTExPQ19OVU0gMTI4DQogDQotCUNvbW1hbmQgICAq Km15X2NvbW1hbmRzOw0KKwkvKiB0ZW1wb3JhcnkgaG9sZGVyIHRvIHBhc3Mg MiBpbmZvcm1hdGlvbiB0byBhZGRTY3JpcHQqLw0KKwlzdGF0aWMgc2NyaXB0 X3QgZnM7DQorDQogCUZJTEUJICAgKmZkOw0KIAlpbnQJCQlsaW5lbm8sDQog CQkJCWluZGV4Ow0KQEAgLTI2MzYsNyArMjY1OCw4IEBAIHByb2Nlc3NfZmls ZShjaGFyICpmaWxlbmFtZSkNCiAJaW50CQkJYWxsb2NfbnVtOw0KIA0KIAlh bGxvY19udW0gPSBDT01NQU5EU19BTExPQ19OVU07DQotCW15X2NvbW1hbmRz ID0gKENvbW1hbmQgKiopIHBnX21hbGxvYyhzaXplb2YoQ29tbWFuZCAqKSAq IGFsbG9jX251bSk7DQorCWZzLmNvbW1hbmRzID0gKENvbW1hbmQgKiopIHBn X21hbGxvYyhzaXplb2YoQ29tbWFuZCAqKSAqIGFsbG9jX251bSk7DQorCWZz LmRlc2MgPSBmaWxlbmFtZTsNCiANCiAJaWYgKHN0cmNtcChmaWxlbmFtZSwg Ii0iKSA9PSAwKQ0KIAkJZmQgPSBzdGRpbjsNCkBAIC0yNjQ0LDcgKzI2Njcs NyBAQCBwcm9jZXNzX2ZpbGUoY2hhciAqZmlsZW5hbWUpDQogCXsNCiAJCWZw cmludGYoc3RkZXJyLCAiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVz XG4iLA0KIAkJCQlmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsNCi0JCXBn X2ZyZWUobXlfY29tbWFuZHMpOw0KKwkJcGdfZnJlZShmcy5jb21tYW5kcyk7 DQogCQlyZXR1cm4gTlVMTDsNCiAJfQ0KIA0KQEAgLTI2NjQsMzUgKzI2ODcs MzYgQEAgcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lKQ0KIAkJaWYgKGNv bW1hbmQgPT0gTlVMTCkNCiAJCQljb250aW51ZTsNCiANCi0JCW15X2NvbW1h bmRzW2luZGV4XSA9IGNvbW1hbmQ7DQorCQlmcy5jb21tYW5kc1tpbmRleF0g PSBjb21tYW5kOw0KIAkJaW5kZXgrKzsNCiANCiAJCWlmIChpbmRleCA+PSBh bGxvY19udW0pDQogCQl7DQogCQkJYWxsb2NfbnVtICs9IENPTU1BTkRTX0FM TE9DX05VTTsNCi0JCQlteV9jb21tYW5kcyA9IHBnX3JlYWxsb2MobXlfY29t bWFuZHMsIHNpemVvZihDb21tYW5kICopICogYWxsb2NfbnVtKTsNCisJCQlm cy5jb21tYW5kcyA9IHBnX3JlYWxsb2MoZnMuY29tbWFuZHMsIHNpemVvZihD b21tYW5kICopICogYWxsb2NfbnVtKTsNCiAJCX0NCiAJfQ0KIAlmY2xvc2Uo ZmQpOw0KIA0KLQlteV9jb21tYW5kc1tpbmRleF0gPSBOVUxMOw0KKwlmcy5j b21tYW5kc1tpbmRleF0gPSBOVUxMOw0KIA0KLQlyZXR1cm4gbXlfY29tbWFu ZHM7DQorCXJldHVybiAmZnM7DQogfQ0KIA0KLXN0YXRpYyBDb21tYW5kICoq DQotcHJvY2Vzc19idWlsdGluKGNvbnN0IGNoYXIgKnRiLCBjb25zdCBjaGFy ICpzb3VyY2UpDQorLyogcHJvY2VzcyBidWlsdGluIHNjcmlwdCBiaSBieSBh ZGRpbmcgdGhlIGFycmF5IG9mIGNvbW1hbmRzIGFuZCByZXR1cm5pbmcgaXQg Ki8NCitzdGF0aWMgc2NyaXB0X3QgKg0KK3Byb2Nlc3NfYnVpbHRpbihzY3Jp cHRfdCAqIGJpKQ0KIHsNCiAjZGVmaW5lIENPTU1BTkRTX0FMTE9DX05VTSAx MjgNCiANCi0JQ29tbWFuZCAgICoqbXlfY29tbWFuZHM7DQogCWludAkJCWxp bmVubywNCiAJCQkJaW5kZXg7DQogCWNoYXIJCWJ1ZltCVUZTSVpdOw0KIAlp bnQJCQlhbGxvY19udW07DQorCWNoYXIJICAgKnRiID0gYmktPnNjcmlwdDsN CiANCiAJYWxsb2NfbnVtID0gQ09NTUFORFNfQUxMT0NfTlVNOw0KLQlteV9j b21tYW5kcyA9IChDb21tYW5kICoqKSBwZ19tYWxsb2Moc2l6ZW9mKENvbW1h bmQgKikgKiBhbGxvY19udW0pOw0KKwliaS0+Y29tbWFuZHMgPSAoQ29tbWFu ZCAqKikgcGdfbWFsbG9jKHNpemVvZihDb21tYW5kICopICogYWxsb2NfbnVt KTsNCiANCiAJbGluZW5vID0gMDsNCiAJaW5kZXggPSAwOw0KQEAgLTI3MDIs NiArMjcyNiw3IEBAIHByb2Nlc3NfYnVpbHRpbihjb25zdCBjaGFyICp0Yiwg Y29uc3QgY2hhciAqc291cmNlKQ0KIAkJY2hhcgkgICAqcDsNCiAJCUNvbW1h bmQgICAgKmNvbW1hbmQ7DQogDQorCQkvKiBidWZmZXIgb3ZlcmZsb3cgY2hl Y2s/ICovDQogCQlwID0gYnVmOw0KIAkJd2hpbGUgKCp0YiAmJiAqdGIgIT0g J1xuJykNCiAJCQkqcCsrID0gKnRiKys7DQpAQCAtMjcxNiwyNSArMjc0MSwy NyBAQCBwcm9jZXNzX2J1aWx0aW4oY29uc3QgY2hhciAqdGIsIGNvbnN0IGNo YXIgKnNvdXJjZSkNCiANCiAJCWxpbmVubyArPSAxOw0KIA0KLQkJY29tbWFu ZCA9IHByb2Nlc3NfY29tbWFuZHMoYnVmLCBzb3VyY2UsIGxpbmVubyk7DQor CQljb21tYW5kID0gcHJvY2Vzc19jb21tYW5kcyhidWYsIGJpLT5kZXNjLCBs aW5lbm8pOw0KIAkJaWYgKGNvbW1hbmQgPT0gTlVMTCkNCiAJCQljb250aW51 ZTsNCiANCi0JCW15X2NvbW1hbmRzW2luZGV4XSA9IGNvbW1hbmQ7DQorCQli aS0+Y29tbWFuZHNbaW5kZXhdID0gY29tbWFuZDsNCiAJCWluZGV4Kys7DQog DQogCQlpZiAoaW5kZXggPj0gYWxsb2NfbnVtKQ0KIAkJew0KIAkJCWFsbG9j X251bSArPSBDT01NQU5EU19BTExPQ19OVU07DQotCQkJbXlfY29tbWFuZHMg PSBwZ19yZWFsbG9jKG15X2NvbW1hbmRzLCBzaXplb2YoQ29tbWFuZCAqKSAq IGFsbG9jX251bSk7DQorCQkJYmktPmNvbW1hbmRzID0NCisJCQkJcGdfcmVh bGxvYyhiaS0+Y29tbWFuZHMsIHNpemVvZihDb21tYW5kICopICogYWxsb2Nf bnVtKTsNCiAJCX0NCiAJfQ0KIA0KLQlteV9jb21tYW5kc1tpbmRleF0gPSBO VUxMOw0KKwliaS0+Y29tbWFuZHNbaW5kZXhdID0gTlVMTDsNCiANCi0JcmV0 dXJuIG15X2NvbW1hbmRzOw0KKwlyZXR1cm4gYmk7DQogfQ0KIA0KKy8qIHNo b3cgYXZhaWxhYmxlIGJ1aWx0aW4gc2NyaXB0cyAqLw0KIHN0YXRpYyB2b2lk DQogbGlzdEF2YWlsYWJsZVNjcmlwdHModm9pZCkNCiB7DQpAQCAtMjc0Niwy OCArMjc3MywyNyBAQCBsaXN0QXZhaWxhYmxlU2NyaXB0cyh2b2lkKQ0KIAlm cHJpbnRmKHN0ZGVyciwgIlxuIik7DQogfQ0KIA0KLS8qIHJldHVybiBidWls dGluIHNjcmlwdCAibmFtZSIgaWYgdW5hbWJpZ3VvdXMgKi8NCi1zdGF0aWMg Y2hhciAqDQotZmluZEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSwgY2hhciAq KmRlc2MpDQorLyogcmV0dXJuIGJ1aWx0aW4gc2NyaXB0ICJuYW1lIiBpZiB1 bmFtYmlndW91cywgb2YgZmFpbHMgaWYgbm90IGZvdW5kICovDQorc3RhdGlj IHNjcmlwdF90ICoNCitmaW5kQnVpbHRpbihjb25zdCBjaGFyICpuYW1lKQ0K IHsNCiAJaW50CQkJaSwNCiAJCQkJZm91bmQgPSAwLA0KIAkJCQlsZW4gPSBz dHJsZW4obmFtZSk7DQotCWNoYXIJICAgKmNvbW1hbmRzID0gTlVMTDsNCisJ c2NyaXB0X3QgICAqcmVzdWx0ID0gTlVMTDsNCiANCiAJZm9yIChpID0gMDsg aSA8IE5fQlVJTFRJTjsgaSsrKQ0KIAl7DQogCQlpZiAoc3RybmNtcChidWls dGluX3NjcmlwdFtpXS5uYW1lLCBuYW1lLCBsZW4pID09IDApDQogCQl7DQot CQkJKmRlc2MgPSBidWlsdGluX3NjcmlwdFtpXS5kZXNjOw0KLQkJCWNvbW1h bmRzID0gYnVpbHRpbl9zY3JpcHRbaV0uY29tbWFuZHM7DQorCQkJcmVzdWx0 ID0gJiBidWlsdGluX3NjcmlwdFtpXTsNCiAJCQlmb3VuZCsrOw0KIAkJfQ0K IAl9DQogDQogCS8qIG9rLCB1bmFtYmlndW91cyByZXN1bHQgKi8NCiAJaWYg KGZvdW5kID09IDEpDQotCQlyZXR1cm4gY29tbWFuZHM7DQorCQlyZXR1cm4g cmVzdWx0Ow0KIA0KIAkvKiBlcnJvciBjYXNlcyAqLw0KIAlpZiAoZm91bmQg PT0gMCkNCkBAIC0yNzgwLDEzICsyODA2LDYxIEBAIGZpbmRCdWlsdGluKGNv bnN0IGNoYXIgKm5hbWUsIGNoYXIgKipkZXNjKQ0KIAlleGl0KDEpOw0KIH0N CiANCisvKg0KKyAqIERldGVybWluZSB0aGUgd2VpZ2h0IHNwZWNpZmljYXRp b24gZnJvbSBhIHNjcmlwdCBvcHRpb24gKC1iLCAtZiksIGlmIGFueSwNCisg KiBhbmQgcmV0dXJuIGl0IGFzIGFuIGludGVnZXIgKDEgaXMgcmV0dXJuZWQg aWYgdGhlcmUncyBubyB3ZWlnaHQpLiAgVGhlDQorICogc2NyaXB0IG5hbWUg aXMgcmV0dXJuZWQgaW4gKnNjcmlwdCBhcyBhIG1hbGxvYydkIHN0cmluZy4N CisgKi8NCitzdGF0aWMgaW50DQorcGFyc2VTY3JpcHRXZWlnaHQoY29uc3Qg Y2hhciAqb3B0aW9uLCBjaGFyICoqc2NyaXB0KQ0KK3sNCisJY2hhcgkgICAq c2VwOw0KKwlpbnQJCQl3ZWlnaHQ7DQorDQorCWlmICgoc2VwID0gc3RycmNo cihvcHRpb24sIFdTRVApKSkNCisJew0KKwkJaW50CQluYW1lbGVuID0gc2Vw IC0gb3B0aW9uOw0KKwkJbG9uZwl3dG1wOw0KKwkJY2hhciAgICpiYWRwOw0K Kw0KKwkJLyogZ2VuZXJhdGUgdGhlIHNjcmlwdCBuYW1lICovDQorCQkqc2Ny aXB0ID0gcGdfbWFsbG9jKG5hbWVsZW4gKyAxKTsNCisJCXN0cm5jcHkoKnNj cmlwdCwgb3B0aW9uLCBuYW1lbGVuKTsNCisJCSgqc2NyaXB0KVtuYW1lbGVu XSA9ICdcMCc7DQorDQorCQkvKiBwcm9jZXNzIGRpZ2l0cyBvZiB0aGUgd2Vp Z2h0IHNwZWMgKi8NCisJCWVycm5vID0gMDsNCisJCXd0bXAgPSBzdHJ0b2wo c2VwICsgMSwgJmJhZHAsIDEwKTsNCisJCWlmIChlcnJubyAhPSAwIHx8IGJh ZHAgPT0gc2VwICsgMSB8fCAqYmFkcCAhPSAnXDAnKQ0KKwkJew0KKwkJCWZw cmludGYoc3RkZXJyLCAiaW52YWxpZCB3ZWlnaHQgc3BlY2lmaWNhdGlvbjog JXNcbiIsIHNlcCk7DQorCQkJZXhpdCgxKTsNCisJCX0NCisJCWlmICh3dG1w ID4gSU5UX01BWCB8fCB3dG1wIDw9IDApDQorCQl7DQorCQkJZnByaW50Zihz dGRlcnIsDQorCQkJCQkid2VpZ2h0IHNwZWNpZmljYXRpb24gb3V0IG9mIHJh bmdlICgxIC4uICV1KTogIiBJTlQ2NF9GT1JNQVQgIlxuIiwNCisJCQkJCUlO VF9NQVgsIChpbnQ2NCkgd3RtcCk7DQorCQkJZXhpdCgxKTsNCisJCX0NCisJ CXdlaWdodCA9IHd0bXA7DQorCX0NCisJZWxzZQ0KKwl7DQorCQkqc2NyaXB0 ID0gcGdfc3RyZHVwKG9wdGlvbik7DQorCQl3ZWlnaHQgPSAxOw0KKwl9DQor DQorCXJldHVybiB3ZWlnaHQ7DQorfQ0KKw0KKy8qIGFwcGVuZCBhIHNjcmlw dCB0byB0aGUgbGlzdCBvZiBzY3JpcHRzIHRvIHByb2Nlc3MgKi8NCiBzdGF0 aWMgdm9pZA0KLWFkZFNjcmlwdChjb25zdCBjaGFyICpuYW1lLCBDb21tYW5k ICoqY29tbWFuZHMpDQorYWRkU2NyaXB0KHNjcmlwdF90ICpzY3JpcHQsIGlu dCB3ZWlnaHQpDQogew0KLQlpZiAoY29tbWFuZHMgPT0gTlVMTCB8fA0KLQkJ Y29tbWFuZHNbMF0gPT0gTlVMTCkNCisJaWYgKHNjcmlwdC0+Y29tbWFuZHMg PT0gTlVMTCB8fCBzY3JpcHQtPmNvbW1hbmRzWzBdID09IE5VTEwpDQogCXsN Ci0JCWZwcmludGYoc3RkZXJyLCAiZW1wdHkgY29tbWFuZCBsaXN0IGZvciBz Y3JpcHQgXCIlc1wiXG4iLCBuYW1lKTsNCisJCWZwcmludGYoc3RkZXJyLCAi ZW1wdHkgY29tbWFuZCBsaXN0IGZvciBzY3JpcHQgXCIlc1wiXG4iLCBzY3Jp cHQtPmRlc2MpOw0KIAkJZXhpdCgxKTsNCiAJfQ0KIA0KQEAgLTI3OTYsOCAr Mjg3MCw5IEBAIGFkZFNjcmlwdChjb25zdCBjaGFyICpuYW1lLCBDb21tYW5k ICoqY29tbWFuZHMpDQogCQlleGl0KDEpOw0KIAl9DQogDQotCXNxbF9zY3Jp cHRbbnVtX3NjcmlwdHNdLm5hbWUgPSBuYW1lOw0KLQlzcWxfc2NyaXB0W251 bV9zY3JpcHRzXS5jb21tYW5kcyA9IGNvbW1hbmRzOw0KKwlzcWxfc2NyaXB0 W251bV9zY3JpcHRzXS5uYW1lID0gc2NyaXB0LT5kZXNjOw0KKwlzcWxfc2Ny aXB0W251bV9zY3JpcHRzXS53ZWlnaHQgPSB3ZWlnaHQ7DQorCXNxbF9zY3Jp cHRbbnVtX3NjcmlwdHNdLmNvbW1hbmRzID0gc2NyaXB0LT5jb21tYW5kczsN CiAJaW5pdFN0YXRzKCZzcWxfc2NyaXB0W251bV9zY3JpcHRzXS5zdGF0cywg MC4wKTsNCiAJbnVtX3NjcmlwdHMrKzsNCiB9DQpAQCAtMjg4MiwxOSArMjk1 NywyNCBAQCBwcmludFJlc3VsdHMoVFN0YXRlICp0aHJlYWRzLCBTdGF0c0Rh dGEgKnRvdGFsLCBpbnN0cl90aW1lIHRvdGFsX3RpbWUsDQogCXByaW50Zigi dHBzID0gJWYgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcp XG4iLCB0cHNfaW5jbHVkZSk7DQogCXByaW50ZigidHBzID0gJWYgKGV4Y2x1 ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNfZXhjbHVk ZSk7DQogDQotCS8qIFJlcG9ydCBwZXItY29tbWFuZCBzdGF0aXN0aWNzICov DQotCWlmIChwZXJfc2NyaXB0X3N0YXRzKQ0KKwkvKiBSZXBvcnQgcGVyLXNj cmlwdC9jb21tYW5kIHN0YXRpc3RpY3MgKi8NCisJaWYgKHBlcl9zY3JpcHRf c3RhdHMgfHwgbGF0ZW5jeV9saW1pdCB8fCBpc19sYXRlbmNpZXMpDQogCXsN CiAJCWludAkJCWk7DQogDQogCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3Njcmlw dHM7IGkrKykNCiAJCXsNCi0JCQlwcmludGYoIlNRTCBzY3JpcHQgJWQ6ICVz XG4iDQotCQkJIiAtICIgSU5UNjRfRk9STUFUICIgdHJhbnNhY3Rpb25zICgl LjFmJSUgb2YgdG90YWwsIHRwcyA9ICVmKVxuIiwNCi0JCQkJICAgaSArIDEs IHNxbF9zY3JpcHRbaV0ubmFtZSwNCi0JCQkJICAgc3FsX3NjcmlwdFtpXS5z dGF0cy5jbnQsDQotCQkJCSAgIDEwMC4wICogc3FsX3NjcmlwdFtpXS5zdGF0 cy5jbnQgLyB0b3RhbC0+Y250LA0KLQkJCQkgICBzcWxfc2NyaXB0W2ldLnN0 YXRzLmNudCAvIHRpbWVfaW5jbHVkZSk7DQorCQkJaWYgKG51bV9zY3JpcHRz ID4gMSkNCisJCQkJcHJpbnRmKCJTUUwgc2NyaXB0ICVkOiAlc1xuIg0KKwkJ CQkJICAgIiAtIHdlaWdodCA9ICVkXG4iDQorCQkJCQkgICAiIC0gIiBJTlQ2 NF9GT1JNQVQgIiB0cmFuc2FjdGlvbnMgKCUuMWYlJSBvZiB0b3RhbCwgdHBz ID0gJWYpXG4iLA0KKwkJCQkJICAgaSArIDEsIHNxbF9zY3JpcHRbaV0ubmFt ZSwNCisJCQkJCSAgIHNxbF9zY3JpcHRbaV0ud2VpZ2h0LA0KKwkJCQkJICAg c3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQsDQorCQkJCQkgICAxMDAuMCAqIHNx bF9zY3JpcHRbaV0uc3RhdHMuY250IC8gdG90YWwtPmNudCwNCisJCQkJCSAg IHNxbF9zY3JpcHRbaV0uc3RhdHMuY250IC8gdGltZV9pbmNsdWRlKTsNCisJ CQllbHNlDQorCQkJCXByaW50Zigic2NyaXB0IHN0YXRpc3RpY3M6XG4iKTsN CiANCiAJCQlpZiAobGF0ZW5jeV9saW1pdCkNCiAJCQkJcHJpbnRmKCIgLSBu dW1iZXIgb2YgdHJhbnNhY3Rpb25zIHNraXBwZWQ6ICIgSU5UNjRfRk9STUFU ICIgKCUuM2YlJSlcbiIsDQpAQCAtMjkwMiw3ICsyOTgyLDggQEAgcHJpbnRS ZXN1bHRzKFRTdGF0ZSAqdGhyZWFkcywgU3RhdHNEYXRhICp0b3RhbCwgaW5z dHJfdGltZSB0b3RhbF90aW1lLA0KIAkJCQkJICAgMTAwLjAgKiBzcWxfc2Ny aXB0W2ldLnN0YXRzLnNraXBwZWQgLw0KIAkJCQkJKHNxbF9zY3JpcHRbaV0u c3RhdHMuc2tpcHBlZCArIHNxbF9zY3JpcHRbaV0uc3RhdHMuY250KSk7DQog DQotCQkJcHJpbnRTaW1wbGVTdGF0cygiIC0gbGF0ZW5jeSIsICZzcWxfc2Ny aXB0W2ldLnN0YXRzLmxhdGVuY3kpOw0KKwkJCWlmIChudW1fc2NyaXB0cyA+ IDEpDQorCQkJCXByaW50U2ltcGxlU3RhdHMoIiAtIGxhdGVuY3kiLCAmc3Fs X3NjcmlwdFtpXS5zdGF0cy5sYXRlbmN5KTsNCiANCiAJCQkvKiBSZXBvcnQg cGVyLWNvbW1hbmQgbGF0ZW5jaWVzICovDQogCQkJaWYgKGlzX2xhdGVuY2ll cykNCkBAIC0yOTg1LDcgKzMwNjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikNCiAJaW5zdHJfdGltZQljb25uX3RvdGFsX3RpbWU7DQogCWlu dDY0CQlsYXRlbmN5X2xhdGUgPSAwOw0KIAlTdGF0c0RhdGEJc3RhdHM7DQot CWNoYXIJICAgKmRlc2M7DQorCWludAkJCXdlaWdodDsNCiANCiAJaW50CQkJ aTsNCiAJaW50CQkJbmNsaWVudHNfZGVhbHQ7DQpAQCAtMzAzMyw2ICszMTE0 LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogDQogCXdoaWxl ICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJpaDpudnA6ZHFiOlNO YzpqOkNyczp0OlQ6VTpsZjpEOkY6TTpQOlI6TDoiLCBsb25nX29wdGlvbnMs ICZvcHRpbmRleCkpICE9IC0xKQ0KIAl7DQorCQljaGFyCQkqc2NyaXB0Ow0K Kw0KIAkJc3dpdGNoIChjKQ0KIAkJew0KIAkJCWNhc2UgJ2knOg0KQEAgLTMx NjQsMjcgKzMyNDcsMjUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp DQogCQkJCQlleGl0KDApOw0KIAkJCQl9DQogDQotCQkJCWFkZFNjcmlwdChk ZXNjLA0KLQkJCQkJCSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWlsdGluKG9w dGFyZywgJmRlc2MpLCBkZXNjKSk7DQorCQkJCXdlaWdodCA9IHBhcnNlU2Ny aXB0V2VpZ2h0KG9wdGFyZywgJnNjcmlwdCk7DQorCQkJCWFkZFNjcmlwdChw cm9jZXNzX2J1aWx0aW4oZmluZEJ1aWx0aW4oc2NyaXB0KSksIHdlaWdodCk7 DQogCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJCQkJ aW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0cnVlOw0KIAkJCQlicmVhazsNCisN CiAJCQljYXNlICdTJzoNCi0JCQkJYWRkU2NyaXB0KGRlc2MsDQotCQkJCQkJ ICBwcm9jZXNzX2J1aWx0aW4oZmluZEJ1aWx0aW4oInNlbGVjdC1vbmx5Iiwg JmRlc2MpLA0KLQkJCQkJCQkJCQkgIGRlc2MpKTsNCisJCQkJYWRkU2NyaXB0 KHByb2Nlc3NfYnVpbHRpbihmaW5kQnVpbHRpbigic2VsZWN0LW9ubHkiKSks IDEpOw0KIAkJCQliZW5jaG1hcmtpbmdfb3B0aW9uX3NldCA9IHRydWU7DQog CQkJCWludGVybmFsX3NjcmlwdF91c2VkID0gdHJ1ZTsNCiAJCQkJYnJlYWs7 DQogCQkJY2FzZSAnTic6DQotCQkJCWFkZFNjcmlwdChkZXNjLA0KLQkJCQkJ CSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWlsdGluKCJzaW1wbGUtdXBkYXRl IiwgJmRlc2MpLA0KLQkJCQkJCQkJCQkgIGRlc2MpKTsNCisJCQkJYWRkU2Ny aXB0KHByb2Nlc3NfYnVpbHRpbihmaW5kQnVpbHRpbigic2ltcGxlLXVwZGF0 ZSIpKSwgMSk7DQogCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0ID0gdHJ1 ZTsNCiAJCQkJaW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0cnVlOw0KIAkJCQli cmVhazsNCiAJCQljYXNlICdmJzoNCi0JCQkJYWRkU2NyaXB0KG9wdGFyZywg cHJvY2Vzc19maWxlKG9wdGFyZykpOw0KKwkJCQl3ZWlnaHQgPSBwYXJzZVNj cmlwdFdlaWdodChvcHRhcmcsICZzY3JpcHQpOw0KKwkJCQlhZGRTY3JpcHQo cHJvY2Vzc19maWxlKHNjcmlwdCksIHdlaWdodCk7DQogCQkJCWJlbmNobWFy a2luZ19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2Fz ZSAnRCc6DQpAQCAtMzMyMiwxMiArMzQwMywxNiBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikNCiAJLyogc2V0IGRlZmF1bHQgc2NyaXB0IGlmIG5v bmUgKi8NCiAJaWYgKG51bV9zY3JpcHRzID09IDAgJiYgIWlzX2luaXRfbW9k ZSkNCiAJew0KLQkJYWRkU2NyaXB0KGRlc2MsDQotCQkJCSAgcHJvY2Vzc19i dWlsdGluKGZpbmRCdWlsdGluKCJ0cGNiLWxpa2UiLCAmZGVzYyksIGRlc2Mp KTsNCisJCWFkZFNjcmlwdChwcm9jZXNzX2J1aWx0aW4oZmluZEJ1aWx0aW4o InRwY2ItbGlrZSIpKSwgMSk7DQogCQliZW5jaG1hcmtpbmdfb3B0aW9uX3Nl dCA9IHRydWU7DQogCQlpbnRlcm5hbF9zY3JpcHRfdXNlZCA9IHRydWU7DQog CX0NCiANCisJLyogY29tcHV0ZSB0b3RhbF93ZWlnaHQgKi8NCisJZm9yIChp ID0gMDsgaSA8IG51bV9zY3JpcHRzOyBpKyspDQorCQkvKiBjYW5ub3Qgb3Zl cmZsb3c6IHdlaWdodCBpcyAzMmIsIHRvdGFsX3dlaWdodCA2NGIgKi8NCisJ CXRvdGFsX3dlaWdodCArPSBzcWxfc2NyaXB0W2ldLndlaWdodDsNCisNCiAJ Lyogc2hvdyBwZXIgc2NyaXB0IHN0YXRzIGlmIHNldmVyYWwgc2NyaXB0cyBh cmUgdXNlZCAqLw0KIAlpZiAobnVtX3NjcmlwdHMgPiAxKQ0KIAkJcGVyX3Nj cmlwdF9zdGF0cyA9IHRydWU7DQo= --8323329-1905966016-1457116452=:11128 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --8323329-1905966016-1457116452=:11128--