Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qDibK-0005Y3-4z for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jun 2023 09:33:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qDibJ-0002bh-0a for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jun 2023 09:33:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qDibH-0002b5-3t for pgsql-hackers@lists.postgresql.org; Mon, 26 Jun 2023 09:33:36 +0000 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qDibD-000WM8-Qa for pgsql-hackers@postgresql.org; Mon, 26 Jun 2023 09:33:33 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id B68B85C0132 for ; Mon, 26 Jun 2023 05:33:30 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 26 Jun 2023 05:33:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:sender:subject:subject:to:to; s=fm1; t=1687772010; x=1687858410; bh=D4zGM5b0lf3l/1wJx4Wu+UlCq lUMfHRfWljNIEZWBTI=; b=pwEmWNpH2yd5WlBAPLDGeS+WIqH1jhPRf4IDaQ+c7 4/mh0i673qge30T5aagByHQF0seTbwnmn2LavhLN2PcNXogGEfzpLzfF9xPJL1n6 Qc++tqbacLCRyW4rgVAy1pPj30fjm8W0xncSQ+7G0o9aJUg0JGy2S3LN5UYoe5Q4 qr3QHA40EQDwwimHZoRCh/p6NBnxkXtXKaQmiAFneDhqGrIMDZZYQWsZymxVe2Jp dqx3oLfbT1eC/nNcIf2sqtW8jKmpOeqLYB9GPTVTykGlcxCAyA0P//6njqW6ZnzR +hcMzuJq4Q/qer3OQWgkHM/Es2nIcGLMFUEeoswP8y6fg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1687772010; x=1687858410; bh=D4zGM5b0lf3l/1wJx4Wu+UlCqlUMfHRfWlj NIEZWBTI=; b=nddri+Fj8QT/IN5OZibNWjsoicxsIe1YgI9Nl7q9bq4ZcrSSqaE cL2vNr8V3t870vutbP6gUwJjTJKLFfiEp88vmBztEsfWATn5Ha8+4RFJzsN7CmNZ OpSgCiw3/tlP7sdkHRbbdFXfqzgJpJ485sC1HdUN5bbYynOMka6bjwlGws++p4mD zYzqwYsUug+mV0zsEyBXiWSpiBbco8l62KKOzq0fdjMxvaGEhbMAfNnGkepfPyNy E9b8w4WClLFKap07TNOompV/JmtMnQ8q+34mAeiDWYYXQllvBDwadSU360+9UV5E iNDOwfruAGD6OiiOeem0xzo1oy8r5/MGoeQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrgeehfedgudegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghi shgvnhhtrhgruhhtrdhorhhgqeenucggtffrrghtthgvrhhnpedvteegffejffduffehvd eltefgledvtdeihfejveetjeetleevlefftdetkeeileenucevlhhushhtvghrufhiiigv pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrsegvihhsvghnthhrrghuth drohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 26 Jun 2023 05:33:30 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------h00v0D05RBY9okdbUGqc3drZ" Message-ID: <16d0beac-a141-e5d3-60e9-323da75f49bf@eisentraut.org> Date: Mon, 26 Jun 2023 11:33:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US From: Peter Eisentraut Subject: Clean up command argument assembly To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------h00v0D05RBY9okdbUGqc3drZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a small code cleanup patch. Several commands internally assemble command lines to call other commands. This includes initdb, pg_dumpall, and pg_regress. (Also pg_ctl, but that is different enough that I didn't consider it here.) This has all evolved a bit organically, with fixed-size buffers, and various optional command-line arguments being injected with confusing-looking code, and the spacing between options handled in inconsistent ways. This patch cleans all this up a bit to look clearer and be more easily extensible with new arguments and options. We start each command with printfPQExpBuffer(), and then append arguments as necessary with appendPQExpBuffer(). Also standardize on using initPQExpBuffer() over createPQExpBuffer() where possible. pg_regress uses StringInfo instead of PQExpBuffer, but many of the same ideas apply. --------------h00v0D05RBY9okdbUGqc3drZ Content-Type: text/plain; charset=UTF-8; name="0001-Clean-up-command-argument-assembly.patch" Content-Disposition: attachment; filename="0001-Clean-up-command-argument-assembly.patch" Content-Transfer-Encoding: base64 RnJvbSBkYmQ5ZDdiN2ZmMmMwNjlhMTMxYzllZmE4YmZmMjU5N2MwZDllMWM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyNiBKdW4gMjAyMyAxMTozMDoyNCArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIENsZWFuIHVwIGNvbW1hbmQgYXJndW1lbnQgYXNzZW1ibHkKClNldmVyYWwg Y29tbWFuZHMgaW50ZXJuYWxseSBhc3NlbWJsZSBjb21tYW5kIGxpbmVzIHRvIGNhbGwgb3Ro ZXIKY29tbWFuZHMuICBUaGlzIGluY2x1ZGVzIGluaXRkYiwgcGdfZHVtcGFsbCwgYW5kIHBn X3JlZ3Jlc3MuICAoQWxzbwpwZ19jdGwsIGJ1dCB0aGF0IGlzIGRpZmZlcmVudCBlbm91Z2gg dGhhdCBJIGRpZG4ndCBjb25zaWRlciBpdCBoZXJlLikKVGhpcyBoYXMgYWxsIGV2b2x2ZWQg YSBiaXQgb3JnYW5pY2FsbHksIHdpdGggZml4ZWQtc2l6ZSBidWZmZXJzLCBhbmQKdmFyaW91 cyBvcHRpb25hbCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGJlaW5nIGluamVjdGVkIHdpdGgK Y29uZnVzaW5nLWxvb2tpbmcgY29kZSwgYW5kIHRoZSBzcGFjaW5nIGJldHdlZW4gb3B0aW9u cyBoYW5kbGVkIGluCmluY29uc2lzdGVudCB3YXlzLiAgQ2xlYW4gYWxsIHRoaXMgdXAgYSBi aXQgdG8gbG9vayBjbGVhcmVyIGFuZCBiZQptb3JlIGVhc2lseSBleHRlbnNpYmxlIHdpdGgg bmV3IGFyZ3VtZW50cyBhbmQgb3B0aW9ucy4gIFdlIHN0YXJ0IGVhY2gKY29tbWFuZCB3aXRo IHByaW50ZlBRRXhwQnVmZmVyKCksIGFuZCB0aGVuIGFwcGVuZCBhcmd1bWVudHMgYXMKbmVj ZXNzYXJ5IHdpdGggYXBwZW5kUFFFeHBCdWZmZXIoKS4gIEFsc28gc3RhbmRhcmRpemUgb24g dXNpbmcKaW5pdFBRRXhwQnVmZmVyKCkgb3ZlciBjcmVhdGVQUUV4cEJ1ZmZlcigpIHdoZXJl IHBvc3NpYmxlLiAgcGdfcmVncmVzcwp1c2VzIFN0cmluZ0luZm8gaW5zdGVhZCBvZiBQUUV4 cEJ1ZmZlciwgYnV0IG1hbnkgb2YgdGhlIHNhbWUgaWRlYXMKYXBwbHkuCi0tLQogc3JjL2Jp bi9pbml0ZGIvaW5pdGRiLmMgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyAgfCAyNyArKysrKysr KystLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNzLmMgfCAyNiArKysrKysr KystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jp bi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggZmMxZmIzNjNlNy4uM2Y0MTY3NjgyYSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKQEAgLTMwOSwxNiArMzA5LDE2IEBAIHZvaWQJCWluaXRpYWxpemVfZGF0YV9kaXJl Y3Rvcnkodm9pZCk7CiAvKgogICogbWFjcm9zIGZvciBydW5uaW5nIHBpcGVzIHRvIHBvc3Rn cmVzCiAgKi8KLSNkZWZpbmUgUEdfQ01EX0RFQ0wJCWNoYXIgY21kW01BWFBHUEFUSF07IEZJ TEUgKmNtZGZkCisjZGVmaW5lIFBHX0NNRF9ERUNMCQlGSUxFICpjbWRmZAogCi0jZGVmaW5l IFBHX0NNRF9PUEVOIFwKKyNkZWZpbmUgUEdfQ01EX09QRU4oY21kKSBcCiBkbyB7IFwKIAlj bWRmZCA9IHBvcGVuX2NoZWNrKGNtZCwgInciKTsgXAogCWlmIChjbWRmZCA9PSBOVUxMKSBc CiAJCWV4aXQoMSk7IC8qIG1lc3NhZ2UgYWxyZWFkeSBwcmludGVkIGJ5IHBvcGVuX2NoZWNr ICovIFwKIH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgUEdfQ01EX0NMT1NFIFwKKyNkZWZpbmUg UEdfQ01EX0NMT1NFKCkgXAogZG8geyBcCiAJaWYgKHBjbG9zZV9jaGVjayhjbWRmZCkpIFwK IAkJZXhpdCgxKTsgLyogbWVzc2FnZSBhbHJlYWR5IHByaW50ZWQgYnkgcGNsb3NlX2NoZWNr ICovIFwKQEAgLTExMzgsMTMgKzExMzgsMTUgQEAgdGVzdF9jb25maWdfc2V0dGluZ3Modm9p ZCkKIHN0YXRpYyBib29sCiB0ZXN0X3NwZWNpZmljX2NvbmZpZ19zZXR0aW5ncyhpbnQgdGVz dF9jb25ucywgaW50IHRlc3RfYnVmZnMpCiB7Ci0JUFFFeHBCdWZmZXIgY21kID0gY3JlYXRl UFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlckRhdGEgY21kOwogCV9zdHJpbmdsaXN0ICpn bmFtZXMsCiAJCQkgICAqZ3ZhbHVlczsKIAlpbnQJCQlzdGF0dXM7CiAKKwlpbml0UFFFeHBC dWZmZXIoJmNtZCk7CisKIAkvKiBTZXQgdXAgdGhlIHRlc3QgcG9zdG1hc3RlciBpbnZvY2F0 aW9uICovCi0JcHJpbnRmUFFFeHBCdWZmZXIoY21kLAorCXByaW50ZlBRRXhwQnVmZmVyKCZj bWQsCiAJCQkJCSAgIlwiJXNcIiAtLWNoZWNrICVzICVzICIKIAkJCQkJICAiLWMgbWF4X2Nv bm5lY3Rpb25zPSVkICIKIAkJCQkJICAiLWMgc2hhcmVkX2J1ZmZlcnM9JWQgIgpAQCAtMTE1 OCwxOCArMTE2MCwxOCBAQCB0ZXN0X3NwZWNpZmljX2NvbmZpZ19zZXR0aW5ncyhpbnQgdGVz dF9jb25ucywgaW50IHRlc3RfYnVmZnMpCiAJCSBnbmFtZXMgIT0gTlVMTDsJCS8qIGFzc3Vt ZSBsaXN0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwogCQkgZ25hbWVzID0gZ25hbWVzLT5u ZXh0LCBndmFsdWVzID0gZ3ZhbHVlcy0+bmV4dCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy KGNtZCwgIiAtYyAlcz0iLCBnbmFtZXMtPnN0cik7Ci0JCWFwcGVuZFNoZWxsU3RyaW5nKGNt ZCwgZ3ZhbHVlcy0+c3RyKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtYyAlcz0i LCBnbmFtZXMtPnN0cik7CisJCWFwcGVuZFNoZWxsU3RyaW5nKCZjbWQsIGd2YWx1ZXMtPnN0 cik7CiAJfQogCi0JYXBwZW5kUFFFeHBCdWZmZXIoY21kLAorCWFwcGVuZFBRRXhwQnVmZmVy KCZjbWQsCiAJCQkJCSAgIiA8IFwiJXNcIiA+IFwiJXNcIiAyPiYxIiwKIAkJCQkJICBERVZO VUxMLCBERVZOVUxMKTsKIAogCWZmbHVzaChOVUxMKTsKLQlzdGF0dXMgPSBzeXN0ZW0oY21k LT5kYXRhKTsKKwlzdGF0dXMgPSBzeXN0ZW0oY21kLmRhdGEpOwogCi0JZGVzdHJveVBRRXhw QnVmZmVyKGNtZCk7CisJdGVybVBRRXhwQnVmZmVyKCZjbWQpOwogCiAJcmV0dXJuIChzdGF0 dXMgPT0gMCk7CiB9CkBAIC0xNDY5LDYgKzE0NzEsNyBAQCBzdGF0aWMgdm9pZAogYm9vdHN0 cmFwX3RlbXBsYXRlMSh2b2lkKQogewogCVBHX0NNRF9ERUNMOworCVBRRXhwQnVmZmVyRGF0 YSBjbWQ7CiAJY2hhcgkgICoqbGluZTsKIAljaGFyCSAgKipia2lfbGluZXM7CiAJY2hhcgkJ aGVhZGVybGluZVtNQVhQR1BBVEhdOwpAQCAtMTUzMCwxNiArMTUzMywxNyBAQCBib290c3Ry YXBfdGVtcGxhdGUxKHZvaWQpCiAJLyogQWxzbyBlbnN1cmUgYmFja2VuZCBpc24ndCBjb25m dXNlZCBieSB0aGlzIGVudmlyb25tZW50IHZhcjogKi8KIAl1bnNldGVudigiUEdDTElFTlRF TkNPRElORyIpOwogCi0Jc25wcmludGYoY21kLCBzaXplb2YoY21kKSwKLQkJCSAiXCIlc1wi IC0tYm9vdCAtWCAlZCAlcyAlcyAlcyAlcyIsCi0JCQkgYmFja2VuZF9leGVjLAotCQkJIHdh bF9zZWdtZW50X3NpemVfbWIgKiAoMTAyNCAqIDEwMjQpLAotCQkJIGRhdGFfY2hlY2tzdW1z ID8gIi1rIiA6ICIiLAotCQkJIGJvb3Rfb3B0aW9ucywgZXh0cmFfb3B0aW9ucywKLQkJCSBk ZWJ1ZyA/ICItZCA1IiA6ICIiKTsKKwlpbml0UFFFeHBCdWZmZXIoJmNtZCk7CisKKwlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiIC0tYm9vdCAlcyAlcyIsIGJhY2tlbmRfZXhl YywgYm9vdF9vcHRpb25zLCBleHRyYV9vcHRpb25zKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigm Y21kLCAiIC1YICVkIiwgd2FsX3NlZ21lbnRfc2l6ZV9tYiAqICgxMDI0ICogMTAyNCkpOwor CWlmIChkYXRhX2NoZWNrc3VtcykKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtayIp OworCWlmIChkZWJ1ZykKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtZCA1Iik7CiAK IAotCVBHX0NNRF9PUEVOOworCVBHX0NNRF9PUEVOKGNtZC5kYXRhKTsKIAogCWZvciAobGlu ZSA9IGJraV9saW5lczsgKmxpbmUgIT0gTlVMTDsgbGluZSsrKQogCXsKQEAgLTE1NDcsOCAr MTU1MSw5IEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEodm9pZCkKIAkJZnJlZSgqbGluZSk7CiAJ fQogCi0JUEdfQ01EX0NMT1NFOworCVBHX0NNRF9DTE9TRSgpOwogCisJdGVybVBRRXhwQnVm ZmVyKCZjbWQpOwogCWZyZWUoYmtpX2xpbmVzKTsKIAogCWNoZWNrX29rKCk7CkBAIC0yOTUx LDYgKzI5NTYsNyBAQCB2b2lkCiBpbml0aWFsaXplX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiB7 CiAJUEdfQ01EX0RFQ0w7CisJUFFFeHBCdWZmZXJEYXRhIGNtZDsKIAlpbnQJCQlpOwogCiAJ c2V0dXBfc2lnbmFscygpOwpAQCAtMzAxNCwxMiArMzAyMCwxMSBAQCBpbml0aWFsaXplX2Rh dGFfZGlyZWN0b3J5KHZvaWQpCiAJZnB1dHMoXygicGVyZm9ybWluZyBwb3N0LWJvb3RzdHJh cCBpbml0aWFsaXphdGlvbiAuLi4gIiksIHN0ZG91dCk7CiAJZmZsdXNoKHN0ZG91dCk7CiAK LQlzbnByaW50ZihjbWQsIHNpemVvZihjbWQpLAotCQkJICJcIiVzXCIgJXMgJXMgdGVtcGxh dGUxID4lcyIsCi0JCQkgYmFja2VuZF9leGVjLCBiYWNrZW5kX29wdGlvbnMsIGV4dHJhX29w dGlvbnMsCi0JCQkgREVWTlVMTCk7CisJaW5pdFBRRXhwQnVmZmVyKCZjbWQpOworCXByaW50 ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVzXCIgJXMgJXMgdGVtcGxhdGUxID4lcyIsCisJCQkJ CSAgYmFja2VuZF9leGVjLCBiYWNrZW5kX29wdGlvbnMsIGV4dHJhX29wdGlvbnMsIERFVk5V TEwpOwogCi0JUEdfQ01EX09QRU47CisJUEdfQ01EX09QRU4oY21kLmRhdGEpOwogCiAJc2V0 dXBfYXV0aChjbWRmZCk7CiAKQEAgLTMwNTQsNyArMzA1OSw4IEBAIGluaXRpYWxpemVfZGF0 YV9kaXJlY3Rvcnkodm9pZCkKIAogCW1ha2VfcG9zdGdyZXMoY21kZmQpOwogCi0JUEdfQ01E X0NMT1NFOworCVBHX0NNRF9DTE9TRSgpOworCXRlcm1QUUV4cEJ1ZmZlcigmY21kKTsKIAog CWNoZWNrX29rKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFs bC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYwppbmRleCAzNjI3YjY5ZTJhLi4z NmYxMzQxMzdmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMKQEAgLTE1NjQsMTEgKzE1NjQsMTQg QEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiBzdGF0aWMgaW50CiBydW5QZ0R1bXAo Y29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cykKIHsKLQlQUUV4 cEJ1ZmZlciBjb25uc3RyYnVmID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKLQlQUUV4cEJ1ZmZl ciBjbWQgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyRGF0YSBjb25uc3Ry YnVmOworCVBRRXhwQnVmZmVyRGF0YSBjbWQ7CiAJaW50CQkJcmV0OwogCi0JYXBwZW5kUFFF eHBCdWZmZXIoY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCisJaW5pdFBRRXhw QnVmZmVyKCZjb25uc3RyYnVmKTsKKwlpbml0UFFFeHBCdWZmZXIoJmNtZCk7CisKKwlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCiAJCQkJ CSAgcGdkdW1wb3B0cy0+ZGF0YSwgY3JlYXRlX29wdHMpOwogCiAJLyoKQEAgLTE1NzYsMjcg KzE1NzksMjcgQEAgcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAq Y3JlYXRlX29wdHMpCiAJICogZm9ybWF0LgogCSAqLwogCWlmIChmaWxlbmFtZSkKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoY21kLCAiIC1GYSAiKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmNtZCwgIiAtRmEgIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihjbWQs ICIgLUZwICIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiIC1GcCAiKTsKIAog CS8qCiAJICogQXBwZW5kIHRoZSBkYXRhYmFzZSBuYW1lIHRvIHRoZSBhbHJlYWR5LWNvbnN0 cnVjdGVkIHN0ZW0gb2YgY29ubmVjdGlvbgogCSAqIHN0cmluZy4KIAkgKi8KLQlhcHBlbmRQ UUV4cEJ1ZmZlcihjb25uc3RyYnVmLCAiJXMgZGJuYW1lPSIsIGNvbm5zdHIpOwotCWFwcGVu ZENvbm5TdHJWYWwoY29ubnN0cmJ1ZiwgZGJuYW1lKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubnN0cmJ1ZiwgIiVzIGRibmFtZT0iLCBjb25uc3RyKTsKKwlhcHBlbmRDb25uU3RyVmFs KCZjb25uc3RyYnVmLCBkYm5hbWUpOwogCi0JYXBwZW5kU2hlbGxTdHJpbmcoY21kLCBjb25u c3RyYnVmLT5kYXRhKTsKKwlhcHBlbmRTaGVsbFN0cmluZygmY21kLCBjb25uc3RyYnVmLmRh dGEpOwogCi0JcGdfbG9nX2luZm8oInJ1bm5pbmcgXCIlc1wiIiwgY21kLT5kYXRhKTsKKwlw Z19sb2dfaW5mbygicnVubmluZyBcIiVzXCIiLCBjbWQuZGF0YSk7CiAKIAlmZmx1c2goTlVM TCk7CiAKLQlyZXQgPSBzeXN0ZW0oY21kLT5kYXRhKTsKKwlyZXQgPSBzeXN0ZW0oY21kLmRh dGEpOwogCi0JZGVzdHJveVBRRXhwQnVmZmVyKGNtZCk7Ci0JZGVzdHJveVBRRXhwQnVmZmVy KGNvbm5zdHJidWYpOworCXRlcm1QUUV4cEJ1ZmZlcigmY21kKTsKKwl0ZXJtUFFFeHBCdWZm ZXIoJmNvbm5zdHJidWYpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jIGIvc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNz LmMKaW5kZXggNjBkMzRhNDBiMi4uM2U0ZmQ5MThkZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wZ19yZWdyZXNzLmMKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNz LmMKQEAgLTIyOTMsNiArMjI5Myw3IEBAIHJlZ3Jlc3Npb25fbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdLAogCiAJaWYgKHRlbXBfaW5zdGFuY2UpCiAJeworCQlTdHJpbmdJbmZvRGF0 YSBjbWQ7CiAJCUZJTEUJICAgKnBnX2NvbmY7CiAJCWNvbnN0IGNoYXIgKmVudl93YWl0Owog CQlpbnQJCQl3YWl0X3NlY29uZHM7CkBAIC0yMzE4LDIzICsyMzE5LDI4IEBAIHJlZ3Jlc3Np b25fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCQkJbWFrZV9kaXJlY3RvcnkoYnVm KTsKIAogCQkvKiBpbml0ZGIgKi8KLQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLQkJ CQkgIlwiJXMlc2luaXRkYlwiIC1EIFwiJXMvZGF0YVwiIC0tbm8tY2xlYW4gLS1uby1zeW5j JXMlcyA+IFwiJXMvbG9nL2luaXRkYi5sb2dcIiAyPiYxIiwKLQkJCQkgYmluZGlyID8gYmlu ZGlyIDogIiIsCi0JCQkJIGJpbmRpciA/ICIvIiA6ICIiLAotCQkJCSB0ZW1wX2luc3RhbmNl LAotCQkJCSBkZWJ1ZyA/ICIgLS1kZWJ1ZyIgOiAiIiwKLQkJCQkgbm9sb2NhbGUgPyAiIC0t bm8tbG9jYWxlIiA6ICIiLAotCQkJCSBvdXRwdXRkaXIpOworCQlpbml0U3RyaW5nSW5mbygm Y21kKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAorCQkJCQkJICJcIiVzJXNpbml0ZGJc IiAtRCBcIiVzL2RhdGFcIiAtLW5vLWNsZWFuIC0tbm8tc3luYyIsCisJCQkJCQkgYmluZGly ID8gYmluZGlyIDogIiIsCisJCQkJCQkgYmluZGlyID8gIi8iIDogIiIsCisJCQkJCQkgdGVt cF9pbnN0YW5jZSk7CisJCWlmIChkZWJ1ZykKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwg IiAtLWRlYnVnIik7CisJCWlmIChub2xvY2FsZSkKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgIiAtLW5vLWxvY2FsZSIpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIgPiBcIiVz L2xvZy9pbml0ZGIubG9nXCIgMj4mMSIsIG91dHB1dGRpcik7CiAJCWZmbHVzaChOVUxMKTsK LQkJaWYgKHN5c3RlbShidWYpKQorCQlpZiAoc3lzdGVtKGNtZC5kYXRhKSkKIAkJewogCQkJ YmFpbCgiaW5pdGRiIGZhaWxlZFxuIgogCQkJCSAiIyBFeGFtaW5lIFwiJXMvbG9nL2luaXRk Yi5sb2dcIiBmb3IgdGhlIHJlYXNvbi5cbiIKIAkJCQkgIiMgQ29tbWFuZCB3YXM6ICVzIiwK LQkJCQkgb3V0cHV0ZGlyLCBidWYpOworCQkJCSBvdXRwdXRkaXIsIGNtZC5kYXRhKTsKIAkJ fQogCisJCXBmcmVlKGNtZC5kYXRhKTsKKwogCQkvKgogCQkgKiBBZGp1c3QgdGhlIGRlZmF1 bHQgcG9zdGdyZXNxbC5jb25mIGZvciByZWdyZXNzaW9uIHRlc3RpbmcuIFRoZSB1c2VyCiAJ CSAqIGNhbiBzcGVjaWZ5IGEgZmlsZSB0byBiZSBhcHBlbmRlZDsgaW4gYW55IGNhc2Ugd2Ug ZXhwYW5kIGxvZ2dpbmcKLS0gCjIuNDEuMAoK --------------h00v0D05RBY9okdbUGqc3drZ--