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 1q11ml-0005aq-HW for pgsql-hackers@arkaria.postgresql.org; Mon, 22 May 2023 09:24:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q11mk-0007Mp-Ft for pgsql-hackers@arkaria.postgresql.org; Mon, 22 May 2023 09:24:58 +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 1q11mj-0007Mg-Ux for pgsql-hackers@lists.postgresql.org; Mon, 22 May 2023 09:24:58 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1q11mg-001BPT-2T for pgsql-hackers@postgresql.org; Mon, 22 May 2023 09:24:56 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 7E46160891; Mon, 22 May 2023 18:24:49 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_21b02f6fdc2e569c16a4799ed51aae39" Content-Transfer-Encoding: 7bit Date: Mon, 22 May 2023 18:24:49 +0900 From: torikoshia To: Michael Paquier Cc: Bharath Rupireddy , Kyotaro Horiguchi , pgsql-hackers@postgresql.org Subject: Re: Allow pg_archivecleanup to remove backup history files In-Reply-To: References: <20230425.172948.1630351042955772893.horikyota.ntt@gmail.com> <5adce8cd5ad2269fe687d2d56a341c88@oss.nttdata.com> <61abc656edfba4a668b367d590b1aaab@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_21b02f6fdc2e569c16a4799ed51aae39 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2023-05-15 15:22, Michael Paquier wrote: > On Mon, May 15, 2023 at 03:16:46PM +0900, torikoshia wrote: >> On 2023-05-15 09:18, Michael Paquier wrote: >>> How about plugging in some long options, and use something more >>> explicit like --clean-backup-history? >> >> Agreed. > > If you begin to implement that, it seems to me that this should be > shaped with a first separate patch that refactors the code to use > getopt_long(), and a second patch for the proposed feature that builds > on top of it. Thanks for your advice, attached patches. -- Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_21b02f6fdc2e569c16a4799ed51aae39 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0001-Introduce-pg_archivecleanup-into-getopt_long.patch Content-Disposition: attachment; filename=v3-0001-Introduce-pg_archivecleanup-into-getopt_long.patch; size=4067 RnJvbSA4MTRiNzM1MWYxNDYyNmYwMmMxM2IyMWQxYTY3Mzc0NjExMTdlNWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjIgTWF5IDIwMjMgMTc6Mzc6MjUgKzA5MDAKU3ViamVjdDog W1BBVENIIHYzIDEvMl0gSW50cm9kdWNlIHBnX2FyY2hpdmVjbGVhbnVwIGludG8gZ2V0b3B0X2xv bmcKClRoaXMgcGF0Y2ggaXMgYSBwcmVsaW1pbmFyeSBzdGVwIHRvIGFkZCBhbiBlYXN5LXRvLXVu ZGVyc3RhbmQgb3B0aW9uCnRvIGRlbGV0ZSBiYWNrdXAgaGlzdG9yeSBmaWxlcywgYnV0IGl0IGFs c28gYWRkcyBsb25nIG9wdGlvbnMgdG8KdGhlIGV4aXN0aW5nIG9wdGlvbnMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgIDUgKysrKy0KIHNyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyB8IDIwICsrKysrKysrKysr Ky0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCmluZGV4IDYzNWU3Yzc2ODUu LjA5OTkxYzJmY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51 cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCkBAIC05 NSw2ICs5NSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVtb3ZpbmcgZmlsZSAiYXJjaGl2ZS8w MDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0 ZXJtPjxvcHRpb24+LWQ8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tZGVi dWc8L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAg ICAgIFByaW50IGxvdHMgb2YgZGVidWcgbG9nZ2luZyBvdXRwdXQgb24gPGZpbGVuYW1lPnN0ZGVy cjwvZmlsZW5hbWU+LgpAQCAtMTA0LDYgKzEwNSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVt b3ZpbmcgZmlsZSAiYXJjaGl2ZS8wMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAgICAgPHZh cmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj48L3Rlcm0+CisgICAg ICA8dGVybT48b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KICAgICAgICAgUHJpbnQgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyB0 aGF0IHdvdWxkIGhhdmUgYmVlbiByZW1vdmVkIG9uIDxmaWxlbmFtZT5zdGRvdXQ8L2ZpbGVuYW1l PiAocGVyZm9ybXMgYSBkcnkgcnVuKS4KQEAgLTEyMiw3ICsxMjQsOCBAQCBwZ19hcmNoaXZlY2xl YW51cDogIHJlbW92aW5nIGZpbGUgImFyY2hpdmUvMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFIgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgPHRlcm0+ PG9wdGlvbj4teDwvb3B0aW9uPiA8cmVwbGFjZWFibGU+ZXh0ZW5zaW9uPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi14IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leHRlbnNpb248L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS1zdHJpcC1leHRlbnNpb249PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4dGVuc2lvbjwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVt PgogICAgICAgIDxwYXJhPgogICAgICAgICBQcm92aWRlIGFuIGV4dGVuc2lvbgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIGIvc3JjL2Jp bi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCmluZGV4IDc3MjZkMDUxNDku LjYyOTE0YmRmYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJj aGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVj bGVhbnVwLmMKQEAgLTE3LDcgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJwZ19nZXRvcHQu aCIKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCiBjb25zdCBjaGFyICpwcm9nbmFtZTsKIApA QCAtMjUyLDExICsyNTIsMTEgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiVXNhZ2U6XG4iKSk7 CiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi4gQVJDSElWRUxPQ0FUSU9OIE9MREVTVEtFUFRX QUxGSUxFXG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJcbk9wdGlvbnM6XG4iKSk7Ci0JcHJp bnRmKF8oIiAgLWQgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2ZXJib3NlIG1v ZGUpXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLW4gICAgICAgICAgICAgZHJ5IHJ1biwgc2hvdyB0aGUg bmFtZXMgb2YgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZFxuIikpOwotCXByaW50Zihf KCIgIC1WLCAtLXZlcnNpb24gIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRc biIpKTsKLQlwcmludGYoXygiICAteCBFWFQgICAgICAgICBjbGVhbiB1cCBmaWxlcyBpZiB0aGV5 IGhhdmUgdGhpcyBleHRlbnNpb25cbiIpKTsKLQlwcmludGYoXygiICAtPywgLS1oZWxwICAgICBz aG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcg ICAgICAgICAgICAgICBnZW5lcmF0ZSBkZWJ1ZyBvdXRwdXQgKHZlcmJvc2UgbW9kZSlcbiIpKTsK KwlwcmludGYoXygiICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgIGRyeSBydW4sIHNob3cgdGhl IG5hbWVzIG9mIHRoZSBmaWxlcyB0aGF0IHdvdWxkIGJlIHJlbW92ZWRcbiIpKTsKKwlwcmludGYo XygiICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9u LCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCAtLXN0cmlwLWV4dGVuc2lvbj1FWFQg IGNsZWFuIHVwIGZpbGVzIGlmIHRoZXkgaGF2ZSB0aGlzIGV4dGVuc2lvblxuIikpOworCXByaW50 ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhp dFxuIikpOwogCXByaW50ZihfKCJcbiIKIAkJCSAiRm9yIHVzZSBhcyBhcmNoaXZlX2NsZWFudXBf Y29tbWFuZCBpbiBwb3N0Z3Jlc3FsLmNvbmY6XG4iCiAJCQkgIiAgYXJjaGl2ZV9jbGVhbnVwX2Nv bW1hbmQgPSAncGdfYXJjaGl2ZWNsZWFudXAgW09QVElPTl0uLi4gQVJDSElWRUxPQ0FUSU9OICUl cidcbiIKQEAgLTI3NCw2ICsyNzQsMTIgQEAgdXNhZ2Uodm9pZCkKIGludAogbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiB7CisJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PSB7CisJCXsiZGVidWciLCBub19hcmd1bWVudCwgTlVMTCwgJ2QnfSwKKwkJeyJkcnktcnVuIiwg bm9fYXJndW1lbnQsIE5VTEwsICduJ30sCisJCXsic3RyaXAtZXh0ZW5zaW9uIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsICd4J30sCisJCXtOVUxMLCAwLCBOVUxMLCAwfQorCX07CiAJaW50CQkJ YzsKIAogCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKQEAgLTI5NCw3ICszMDAsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJfQogCX0KIAotCXdoaWxlICgoYyA9IGdldG9wdChh cmdjLCBhcmd2LCAiZG54OiIpKSAhPSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdj LCBhcmd2LCAiZG54OiIsIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKQogCXsKIAkJc3dpdGNo IChjKQogCQl7CgpiYXNlLWNvbW1pdDogYWMyOThkM2NiNTZiMDE1YWNkNDBkMmUwMTVlMDdhODdk OGFmZjEyNAotLSAKMi4zOS4yCgo= --=_21b02f6fdc2e569c16a4799ed51aae39 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch Content-Disposition: attachment; filename=v3-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch; size=10266 RnJvbSA2MDE3YTc3NDY5MWNmNTJmN2Y1MWI4MTdkZWUyNmRiM2JjNzg3OWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjIgTWF5IDIwMjMgMTc6NDE6NTcgKzA5MDAKU3ViamVjdDog W1BBVENIIHYzIDIvMl0gQWxsb3cgcGdfYXJjaGl2ZWNsZWFudXAgdG8gcmVtb3ZlIGJhY2t1cCBo aXN0b3J5IGZpbGVzCgpCYWNrdXAgaGlzdG9yeSBmaWxlcyBhcmUganVzdCBmZXcgYnl0ZXMsIGJ1 dCBpdCBjYW4gYmUgbm9pc3kgZm9yIHRoZQpleWUgdG8gc2VlIGEgbGFyZ2UgYWNjdW11bGF0aW9u IG9mIGhpc3RvcnkgZmlsZXMgbWl4ZWQgd2l0aCB0aGUgV0FMCnNlZ21lbnRzLgpUaGlzIHBhdGNo IGFkZHMgYSBuZXcgb3B0aW9uIHRvIHJlbW92ZSBmaWxlcyBpbmNsdWRpbmcgYmFja3VwCmhpc3Rv cnkgZmlsZXMgb2xkZXIgb2xkZXN0a2VwdHdhbGZpbGUuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9w Z2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgMTMgKysrCiBzcmMvYmluL3BnX2FyY2hpdmVj bGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMgfCA4OCArKysrKysrKysrKy0tLS0tLS0tCiAuLi4v dC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwgICAgICAgICAgICAgICAgfCAzNiArKysrKy0tLQog MyBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCmluZGV4IDA5OTkxYzJmY2QuLmUwZWZhYmQ5 ODkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCkBAIC0xMTMsNiArMTEz LDE5IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVtb3ZpbmcgZmlsZSAiYXJjaGl2ZS8wMDAwMDAw MTAwMDAwMDM3MDAwMDAwMEUiCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tYjwvb3B0aW9u PjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1jbGVhbi1iYWNrdXAtaGlzdG9yeTwvb3B0 aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgIFJl bW92ZSBmaWxlcyBpbmNsdWRpbmcgYmFja3VwIGhpc3RvcnkgZmlsZS4KKyAgICAgICAgIEZvciBk ZXRhaWxzIGFib3V0IGJhY2t1cCBoaXN0b3J5IGZpbGUsIHBsZWFzZSByZWZlciB0byB0aGUgPHhy ZWYgbGlua2VuZD0iYmFja3VwLWJhc2UtYmFja3VwIi8+LgorICAgICAgICAgTm90ZSB0aGF0IHdo ZW4gPHJlcGxhY2VhYmxlPm9sZGVzdGtlcHR3YWxmaWxlPC9yZXBsYWNlYWJsZT4gaXMgYSBiYWNr dXAgaGlzdG9yeSBmaWxlLAorICAgICAgICAgc3BlY2lmaWVkIGZpbGUgaXMga2VwdCBhbmQgb25s eSBwcmVjZWRpbmcgV0FMIGZpbGVzIGFuZCBiYWNrdXAgaGlzdG9yeSBmaWxlcyBhcmUgcmVtb3Zl ZC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRy eT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tVjwvb3B0aW9u PjwvdGVybT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LS12ZXJzaW9uPC9vcHRpb24+PC90ZXJtPgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5j IGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCmluZGV4IDYy OTE0YmRmYTcuLjNmZDRhNDQxYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFu dXAvcGdfYXJjaGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3Bn X2FyY2hpdmVjbGVhbnVwLmMKQEAgLTIzLDYgKzIzLDggQEAgY29uc3QgY2hhciAqcHJvZ25hbWU7 CiAKIC8qIE9wdGlvbnMgYW5kIGRlZmF1bHRzICovCiBib29sCQlkcnlydW4gPSBmYWxzZTsJCS8q IGFyZSB3ZSBwZXJmb3JtaW5nIGEgZHJ5LXJ1biBvcGVyYXRpb24/ICovCitib29sCQljbGVhbkJh Y2t1cEhpc3RvcnkgPSBmYWxzZTsJLyogcmVtb3ZlIGZpbGVzIGluY2x1ZGluZworKwkJCQkJCQkJ CQkJCSAqIGJhY2t1cCBoaXN0b3J5IGZpbGVzICovCiBjaGFyCSAgICphZGRpdGlvbmFsX2V4dCA9 IE5VTEw7CS8qIEV4dGVuc2lvbiB0byByZW1vdmUgZnJvbSBmaWxlbmFtZXMgKi8KIAogY2hhcgkg ICAqYXJjaGl2ZUxvY2F0aW9uOwkvKiB3aGVyZSB0byBmaW5kIHRoZSBhcmNoaXZlPyAqLwpAQCAt OTcsNiArOTksOCBAQCBDbGVhbnVwUHJpb3JXQUxGaWxlcyh2b2lkKQogCXsKIAkJd2hpbGUgKGVy cm5vID0gMCwgKHhsZGUgPSByZWFkZGlyKHhsZGlyKSkgIT0gTlVMTCkKIAkJeworCQkJY2hhcgkJ V0FMRmlsZVBhdGhbTUFYUEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGgKKwkJCQkJCQkJCQkJ CQkJICogaW5jbHVkaW5nIGFyY2hpdmUgKi8KIAkJCS8qCiAJCQkgKiBUcnVuY2F0aW9uIGlzIGVz c2VudGlhbGx5IGhhcm1sZXNzLCBiZWNhdXNlIHdlIHNraXAgbmFtZXMgb2YKIAkJCSAqIGxlbmd0 aCBvdGhlciB0aGFuIFhMT0dfRk5BTUVfTEVOLiAgKEluIHByaW5jaXBsZSwgb25lIGNvdWxkIHVz ZQpAQCAtMTA2LDYgKzExMCwxOSBAQCBDbGVhbnVwUHJpb3JXQUxGaWxlcyh2b2lkKQogCQkJVHJp bUV4dGVuc2lvbih3YWxmaWxlLCBhZGRpdGlvbmFsX2V4dCk7CiAKIAkJCS8qCisJCQkgKiBDaGVj ayBmaWxlIG5hbWUuCisJCQkgKgorCQkJICogV2Ugc2tpcCBmaWxlcyB3aGljaCBhcmUgbm90IFdB TCBmaWxlIG9yIHBhcnRpYWwgV0FMIGZpbGUuCisJCQkgKiBBbHNvIHdlIHNraXAgYmFja3VwIGhp c3RvcnkgZmlsZXMgd2hlbiAtLWNsZWFuLWJhY2t1cC1oaXN0b3J5CisJCQkgKiBpcyBub3Qgc3Bl Y2lmaWVkLgorCQkJICovCisJCQlpZiAoIUlzWExvZ0ZpbGVOYW1lKHdhbGZpbGUpICYmICFJc1Bh cnRpYWxYTG9nRmlsZU5hbWUod2FsZmlsZSkgJiYKKwkJCQkoIWNsZWFuQmFja3VwSGlzdG9yeSB8 fCAhSXNCYWNrdXBIaXN0b3J5RmlsZU5hbWUod2FsZmlsZSkpKQorCQkJCWNvbnRpbnVlOworCisJ CQkvKgorCQkJICogQ2hlY2sgY3V0b2ZmIHBvaW50LgorCQkJICoKIAkJCSAqIFdlIGlnbm9yZSB0 aGUgdGltZWxpbmUgcGFydCBvZiB0aGUgWExPRyBzZWdtZW50IGlkZW50aWZpZXJzIGluCiAJCQkg KiBkZWNpZGluZyB3aGV0aGVyIGEgc2VnbWVudCBpcyBzdGlsbCBuZWVkZWQuICBUaGlzIGVuc3Vy ZXMgdGhhdAogCQkJICogd2Ugd29uJ3QgcHJlbWF0dXJlbHkgcmVtb3ZlIGEgc2VnbWVudCBmcm9t IGEgcGFyZW50IHRpbWVsaW5lLgpAQCAtMTE4LDM5ICsxMzUsMzUgQEAgQ2xlYW51cFByaW9yV0FM RmlsZXModm9pZCkKIAkJCSAqIGZpbGUuIE5vdGUgdGhhdCB0aGlzIG1lYW5zIGZpbGVzIGFyZSBu b3QgcmVtb3ZlZCBpbiB0aGUgb3JkZXIKIAkJCSAqIHRoZXkgd2VyZSBvcmlnaW5hbGx5IHdyaXR0 ZW4sIGluIGNhc2UgdGhpcyB3b3JyaWVzIHlvdS4KIAkJCSAqLwotCQkJaWYgKChJc1hMb2dGaWxl TmFtZSh3YWxmaWxlKSB8fCBJc1BhcnRpYWxYTG9nRmlsZU5hbWUod2FsZmlsZSkpICYmCi0JCQkJ c3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVDbGVhbnVwRmlsZU5hbWUgKyA4KSA8IDApCi0J CQl7Ci0JCQkJY2hhcgkJV0FMRmlsZVBhdGhbTUFYUEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBh dGgKLQkJCQkJCQkJCQkJCQkJICogaW5jbHVkaW5nIGFyY2hpdmUgKi8KKwkJCWlmIChzdHJjbXAo d2FsZmlsZSArIDgsIGV4Y2x1c2l2ZUNsZWFudXBGaWxlTmFtZSArIDgpID49IDApCisJCQkJY29u dGludWU7CiAKKwkJCS8qCisJCQkgKiBVc2UgdGhlIG9yaWdpbmFsIGZpbGUgbmFtZSBhZ2FpbiBu b3csIGluY2x1ZGluZyBhbnkKKwkJCSAqIGV4dGVuc2lvbiB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBj aG9wcGVkIG9mZiBiZWZvcmUgdGVzdGluZworCQkJICogdGhlIHNlcXVlbmNlLgorCQkJICovCisJ CQlzbnByaW50ZihXQUxGaWxlUGF0aCwgc2l6ZW9mKFdBTEZpbGVQYXRoKSwgIiVzLyVzIiwKKwkJ CQkJIGFyY2hpdmVMb2NhdGlvbiwgeGxkZS0+ZF9uYW1lKTsKKworCQkJaWYgKGRyeXJ1bikKKwkJ CXsKIAkJCQkvKgotCQkJCSAqIFVzZSB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIGFnYWluIG5vdywg aW5jbHVkaW5nIGFueQotCQkJCSAqIGV4dGVuc2lvbiB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBjaG9w cGVkIG9mZiBiZWZvcmUgdGVzdGluZwotCQkJCSAqIHRoZSBzZXF1ZW5jZS4KKwkJCQkgKiBQcmlu dHMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZCBhbmQgc2tpcHMgdGhlCisJCQkJ ICogYWN0dWFsIHJlbW92YWwuICBUaGUgcmVndWxhciBwcmludG91dCBpcyBzbyB0aGF0IHRoZQor CQkJCSAqIHVzZXIgY2FuIHBpcGUgdGhlIG91dHB1dCBpbnRvIHNvbWUgb3RoZXIgcHJvZ3JhbS4K IAkJCQkgKi8KLQkJCQlzbnByaW50ZihXQUxGaWxlUGF0aCwgc2l6ZW9mKFdBTEZpbGVQYXRoKSwg IiVzLyVzIiwKLQkJCQkJCSBhcmNoaXZlTG9jYXRpb24sIHhsZGUtPmRfbmFtZSk7Ci0KLQkJCQlp ZiAoZHJ5cnVuKQotCQkJCXsKLQkJCQkJLyoKLQkJCQkJICogUHJpbnRzIHRoZSBuYW1lIG9mIHRo ZSBmaWxlIHRvIGJlIHJlbW92ZWQgYW5kIHNraXBzIHRoZQotCQkJCQkgKiBhY3R1YWwgcmVtb3Zh bC4gIFRoZSByZWd1bGFyIHByaW50b3V0IGlzIHNvIHRoYXQgdGhlCi0JCQkJCSAqIHVzZXIgY2Fu IHBpcGUgdGhlIG91dHB1dCBpbnRvIHNvbWUgb3RoZXIgcHJvZ3JhbS4KLQkJCQkJICovCi0JCQkJ CXByaW50ZigiJXNcbiIsIFdBTEZpbGVQYXRoKTsKLQkJCQkJcGdfbG9nX2RlYnVnKCJmaWxlIFwi JXNcIiB3b3VsZCBiZSByZW1vdmVkIiwgV0FMRmlsZVBhdGgpOwotCQkJCQljb250aW51ZTsKLQkJ CQl9Ci0KLQkJCQlwZ19sb2dfZGVidWcoInJlbW92aW5nIGZpbGUgXCIlc1wiIiwgV0FMRmlsZVBh dGgpOwotCi0JCQkJcmMgPSB1bmxpbmsoV0FMRmlsZVBhdGgpOwotCQkJCWlmIChyYyAhPSAwKQot CQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJ CSBXQUxGaWxlUGF0aCk7CisJCQkJcHJpbnRmKCIlc1xuIiwgV0FMRmlsZVBhdGgpOworCQkJCXBn X2xvZ19kZWJ1ZygiZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZpbGVQYXRoKTsK KwkJCQljb250aW51ZTsKIAkJCX0KKworCQkJcGdfbG9nX2RlYnVnKCJyZW1vdmluZyBmaWxlIFwi JXNcIiIsIFdBTEZpbGVQYXRoKTsKKworCQkJcmMgPSB1bmxpbmsoV0FMRmlsZVBhdGgpOworCQkJ aWYgKHJjICE9IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZW1vdmUgZmlsZSBcIiVzXCI6 ICVtIiwKKwkJCQkJCSBXQUxGaWxlUGF0aCk7CiAJCX0KIAogCQlpZiAoZXJybm8pCkBAIC0yNTIs MTEgKzI2NSwxMiBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCJVc2FnZTpcbiIpKTsKIAlwcmlu dGYoXygiICAlcyBbT1BUSU9OXS4uLiBBUkNISVZFTE9DQVRJT04gT0xERVNUS0VQVFdBTEZJTEVc biIpLCBwcm9nbmFtZSk7CiAJcHJpbnRmKF8oIlxuT3B0aW9uczpcbiIpKTsKLQlwcmludGYoXygi ICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgICAgIGdlbmVyYXRlIGRlYnVnIG91dHB1dCAodmVyYm9z ZSBtb2RlKVxuIikpOwotCXByaW50ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgZHJ5 IHJ1biwgc2hvdyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZFxu IikpOwotCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgb3V0cHV0IHZlcnNp b24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwotCXByaW50ZihfKCIgIC14IC0tc3RyaXAt ZXh0ZW5zaW9uPUVYVCAgY2xlYW4gdXAgZmlsZXMgaWYgdGhleSBoYXZlIHRoaXMgZXh0ZW5zaW9u XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICBzaG93IHRoaXMg aGVscCwgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcgICAgICAgICAg ICAgICAgIGdlbmVyYXRlIGRlYnVnIG91dHB1dCAodmVyYm9zZSBtb2RlKVxuIikpOworCXByaW50 ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICBkcnkgcnVuLCBzaG93IHRoZSBuYW1l cyBvZiB0aGUgZmlsZXMgdGhhdCB3b3VsZCBiZSByZW1vdmVkXG4iKSk7CisJcHJpbnRmKF8oIiAg LWIsIC0tY2xlYW4tYmFja3VwLWhpc3RvcnkgIGNsZWFuIHVwIGZpbGVzIGluY2x1ZGluZyBiYWNr dXAgaGlzdG9yeSBmaWxlc1xuIikpOworCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAg ICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0XG4iKSk7CisJcHJp bnRmKF8oIiAgLXggLS1zdHJpcC1leHRlbnNpb249RVhUICAgIGNsZWFuIHVwIGZpbGVzIGlmIHRo ZXkgaGF2ZSB0aGlzIGV4dGVuc2lvblxuIikpOworCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAg ICAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8o IlxuIgogCQkJICJGb3IgdXNlIGFzIGFyY2hpdmVfY2xlYW51cF9jb21tYW5kIGluIHBvc3RncmVz cWwuY29uZjpcbiIKIAkJCSAiICBhcmNoaXZlX2NsZWFudXBfY29tbWFuZCA9ICdwZ19hcmNoaXZl Y2xlYW51cCBbT1BUSU9OXS4uLiBBUkNISVZFTE9DQVRJT04gJSVyJ1xuIgpAQCAtMjc1LDYgKzI4 OSw3IEBAIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJc3RhdGljIHN0cnVj dCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CisJCXsiY2xlYW4tYmFja3VwLWhpc3RvcnkiLCBu b19hcmd1bWVudCwgTlVMTCwgJ2InfSwKIAkJeyJkZWJ1ZyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAn ZCd9LAogCQl7ImRyeS1ydW4iLCBub19hcmd1bWVudCwgTlVMTCwgJ24nfSwKIAkJeyJzdHJpcC1l eHRlbnNpb24iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnfSwKQEAgLTMwMCwxMCArMzE1 LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCi0Jd2hpbGUgKChj ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImRueDoiLCBsb25nX29wdGlvbnMsIE5VTEwpKSAh PSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYmRueDoiLCBsb25n X29wdGlvbnMsIE5VTEwpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykKIAkJeworCQkJY2FzZSAn Yic6IAkJCS8qIFJlbW92ZSBiYWNrdXAgaGlzdG9yeSBmaWxlcyB0b28gKi8KKwkJCQljbGVhbkJh Y2t1cEhpc3RvcnkgPSB0cnVlOworCQkJCWJyZWFrOwogCQkJY2FzZSAnZCc6CQkJLyogRGVidWcg bW9kZSAqLwogCQkJCXBnX2xvZ2dpbmdfaW5jcmVhc2VfdmVyYm9zaXR5KCk7CiAJCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3QvMDEwX3BnX2FyY2hpdmVj bGVhbnVwLnBsIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC90LzAxMF9wZ19hcmNoaXZlY2xl YW51cC5wbAppbmRleCBjYzMzODZkMTQ2Li41NDQ3NjJhZTRmIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2FyY2hpdmVjbGVhbnVwL3QvMDEwX3BnX2FyY2hpdmVjbGVhbnVwLnBsCisrKyBiL3NyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvdC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwKQEAgLTE0LDYg KzE0LDcgQEAgbXkgJHRlbXBkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsK IAogbXkgQHdhbGZpbGVzID0gKAogCScwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEMuZ3onLCAnMDAw MDAwMDEwMDAwMDAzNzAwMDAwMDBEJywKKwknMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBELjAwMDAw MDI4LmJhY2t1cCcsCiAJJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAwRScsICcwMDAwMDAwMTAwMDAw MDM3MDAwMDAwMEYucGFydGlhbCcsKTsKIAogc3ViIGNyZWF0ZV9maWxlcwpAQCAtNTksNyArNjAs NyBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJbXkgJHN0ZGVycjsKIAlteSAkcmVzdWx0ID0KIAkg IElQQzo6UnVuOjpydW4gWyAncGdfYXJjaGl2ZWNsZWFudXAnLCAnLWQnLCAnLW4nLCAkdGVtcGRp ciwKLQkJJHdhbGZpbGVzWzJdIF0sCisJCSR3YWxmaWxlc1szXSBdLAogCSAgJzI+JywgXCRzdGRl cnI7CiAJb2soJHJlc3VsdCwgInBnX2FyY2hpdmVjbGVhbnVwIGRyeSBydW46IGV4aXQgY29kZSAw Iik7CiAJbGlrZSgKQEAgLTc2LDMyICs3Nyw0NSBAQCBzdWIgcnVuX2NoZWNrCiB7CiAJbG9jYWwg JFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAotCW15 ICgkc3VmZml4LCAkdGVzdF9uYW1lKSA9IEBfOworCW15ICgkc3VmZml4LCAkdGVzdF9uYW1lLCBA b3B0aW9ucykgPSBAXzsKIAogCWNyZWF0ZV9maWxlcygpOwogCiAJY29tbWFuZF9vaygKIAkJWwot CQkJJ3BnX2FyY2hpdmVjbGVhbnVwJywgJy14JywgJy5neicsICR0ZW1wZGlyLAotCQkJJHdhbGZp bGVzWzJdIC4gJHN1ZmZpeAorCQkJJ3BnX2FyY2hpdmVjbGVhbnVwJywgQG9wdGlvbnMsICR0ZW1w ZGlyLAorCQkJJHdhbGZpbGVzWzNdIC4gJHN1ZmZpeAogCQldLAogCQkiJHRlc3RfbmFtZTogcnVu cyIpOwogCi0Jb2soIS1mICIkdGVtcGRpci8kd2FsZmlsZXNbMF0iLAotCQkiJHRlc3RfbmFtZTog Zmlyc3Qgb2xkZXIgV0FMIGZpbGUgd2FzIGNsZWFuZWQgdXAiKTsKKwlpZiAoZ3JlcCB7JF8gZXEg Jy14Lmd6J30gQG9wdGlvbnMpIHsKKwkJb2soIS1mICIkdGVtcGRpci8kd2FsZmlsZXNbMF0iLAor CQkJIiR0ZXN0X25hbWU6IGZpcnN0IG9sZGVyIFdBTCBmaWxlIHdpdGggLmd6IHdhcyBjbGVhbmVk IHVwIik7CisJfSBlbHNlIHsKKwkJb2soLWYgIiR0ZW1wZGlyLyR3YWxmaWxlc1swXSIsCisJCQki JHRlc3RfbmFtZTogZmlyc3Qgb2xkZXIgV0FMIGZpbGUgd2l0aCAuZ3ogd2FzIG5vdCBjbGVhbmVk IHVwIik7CisJfQogCW9rKCEtZiAiJHRlbXBkaXIvJHdhbGZpbGVzWzFdIiwKIAkJIiR0ZXN0X25h bWU6IHNlY29uZCBvbGRlciBXQUwgZmlsZSB3YXMgY2xlYW5lZCB1cCIpOwotCW9rKC1mICIkdGVt cGRpci8kd2FsZmlsZXNbMl0iLAotCQkiJHRlc3RfbmFtZTogcmVzdGFydGZpbGUgd2FzIG5vdCBj bGVhbmVkIHVwIik7CisJaWYgKGdyZXAgeyRfIGVxICctYid9IEBvcHRpb25zKSB7CisJCW9rKCEt ZiAiJHRlbXBkaXIvJHdhbGZpbGVzWzJdIiwKKwkJCSIkdGVzdF9uYW1lOiBCYWNrdXAgaGlzdG9y eSBmaWxlIHdhcyBjbGVhbmVkIHVwIik7CisJfSBlbHNlIHsKKwkJb2soLWYgIiR0ZW1wZGlyLyR3 YWxmaWxlc1syXSIsCisJCQkiJHRlc3RfbmFtZTogQmFja3VwIGhpc3RvcnkgZmlsZSB3YXMgbm90 IGNsZWFuZWQgdXAiKTsKKwl9CiAJb2soLWYgIiR0ZW1wZGlyLyR3YWxmaWxlc1szXSIsCisJCSIk dGVzdF9uYW1lOiByZXN0YXJ0ZmlsZSB3YXMgbm90IGNsZWFuZWQgdXAiKTsKKwlvaygtZiAiJHRl bXBkaXIvJHdhbGZpbGVzWzRdIiwKIAkJIiR0ZXN0X25hbWU6IG5ld2VyIFdBTCBmaWxlIHdhcyBu b3QgY2xlYW5lZCB1cCIpOwogCW9rKC1mICIkdGVtcGRpci91bnJlbGF0ZWRfZmlsZSIsCiAJCSIk dGVzdF9uYW1lOiB1bnJlbGF0ZWQgZmlsZSB3YXMgbm90IGNsZWFuZWQgdXAiKTsKIAlyZXR1cm47 CiB9CiAKLXJ1bl9jaGVjaygnJywgJ3BnX2FyY2hpdmVjbGVhbnVwJyk7Ci1ydW5fY2hlY2soJy5w YXJ0aWFsJywgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLnBhcnRpYWwgZmlsZScpOwotcnVuX2No ZWNrKCcuMDAwMDAwMjAuYmFja3VwJywgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLmJhY2t1cCBm aWxlJyk7CitydW5fY2hlY2soJycsICAgICAgICAgICAgICAgICAncGdfYXJjaGl2ZWNsZWFudXAn LCAnLXguZ3onKTsKK3J1bl9jaGVjaygnLnBhcnRpYWwnLCAgICAgICAgICdwZ19hcmNoaXZlY2xl YW51cCB3aXRoIC5wYXJ0aWFsIGZpbGUnLCAnLXguZ3onKTsKK3J1bl9jaGVjaygnLjAwMDAwMDIw LmJhY2t1cCcsICdwZ19hcmNoaXZlY2xlYW51cCB3aXRoIC5iYWNrdXAgZmlsZScsICcteC5neicp OworcnVuX2NoZWNrKCcnLCAgICAgICAgICAgICAgICAgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGgg LS1jbGVhbi1iYWNrdXAtaGlzdG9yeScsICctYicpOwogCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIu MzkuMgoK --=_21b02f6fdc2e569c16a4799ed51aae39--