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 1qCcIA-0002Ul-5m for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jun 2023 08:37:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qCcI9-00081F-3Z for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jun 2023 08:37:17 +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 1qCcI8-00080l-IC for pgsql-hackers@lists.postgresql.org; Fri, 23 Jun 2023 08:37:16 +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 1qCcI4-003m53-M8 for pgsql-hackers@postgresql.org; Fri, 23 Jun 2023 08:37:15 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 50EF4609D1; Fri, 23 Jun 2023 17:37:09 +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="=_c41bc7328effd13807abe21e6e383709" Content-Transfer-Encoding: 7bit Date: Fri, 23 Jun 2023 17:37:09 +0900 From: torikoshia To: Kyotaro Horiguchi Cc: michael@paquier.xyz, masao.fujii@oss.nttdata.com, bharath.rupireddyforpostgres@gmail.com, pgsql-hackers@postgresql.org Subject: Re: Allow pg_archivecleanup to remove backup history files In-Reply-To: <20230622.164710.2096056945333906873.horikyota.ntt@gmail.com> References: <20230621.115941.1395557545366586431.horikyota.ntt@gmail.com> <20230622.164710.2096056945333906873.horikyota.ntt@gmail.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <0fd031265a324696c2ac58c5d4b394ef@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_c41bc7328effd13807abe21e6e383709 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2023-06-22 16:47, Kyotaro Horiguchi wrote: Thanks for your review! > > 0002: > > + * Check file name. > + * > + * We skip files which are not WAL file or partial WAL file. > > There's no need to spend this many lines describing this, and it's > suggested to avoid restating what the code does. I think a comment > might not be necessary. But if we decide to have one, it could look > like this: > >> /* we're only removing specific types of files */ As you mentioned, this comment is restatement of the codes. Removed the comment. > > Other than that, it looks good to me. > > > 0003: > + > + Remove backup history files. > > I might be overthinking it, but I'd phrase it as, "Remove backup > history files *as well*.". (The --help message describes the same > thing using "including".) Agreed. > + For details about backup history file, please refer to the > . > > We usually write this as simple as "See for details (of the > backup history files)" or "Refer to for more information > (about the backup history files)." or such like... (I think) Agreed. I used the former one. > +bool cleanBackupHistory = false; /* remove files including > + * backup history files */ > > The indentation appears to be inconsistent. Modified. > > > - * Truncation is essentially harmless, because we skip names of > - * length other than XLOG_FNAME_LEN. (In principle, one could use > - * a 1000-character additional_ext and get trouble.) > + * Truncation is essentially harmless, because we check the file > + * format including the length immediately after this. > + * (In principle, one could use a 1000-character additional_ext > + * and get trouble.) > */ > strlcpy(walfile, xlde->d_name, MAXPGPATH); > TrimExtension(walfile, additional_ext); > > The revised comment seems to drift from the original point. Except for > a potential exception by a too-long addition_ext, the original comment > asserted that the name truncation was safe since it wouldn't affect > the files we're removing. In other words, it asserted that the > filenames to be removed won't be truncated and any actual truncation > wouldn't lead to accidental deletions. > > Hence, I think we should adjust the comment to maintain its original > point, and extend it to include backup history files. A possible > revision could be (very simple): > >> * Truncation is essentially harmless, because we skip names of >> length >> * longer than the length of backup history file. (In principle, one >> * could use a 1000-character additional_ext and get trouble.) This is true, but we do stricter check for preventing accidental deletion at the below code than just skipping "names of length longer than the length of backup history file". | if (!IsXLogFileName(walfile) && !IsPartialXLogFileName(walfile) && | !(cleanBackupHistory && IsBackupHistoryFileName(walfile))) | continue; How about something like this? | Truncation is essentially harmless, because we skip files whose format is different from WAL files and backup history files. > Regarding the TAP test, it checks that the --clean-backup-history does > indeed remove backup history files. However, it doesn't check that > this doesn't occur if the option isn't specified. Shouldn't we test > for the latter scenario as well? Agreed. Added a backup history file to @walfiles_with_gz. > +sub get_walfiles > +{ > > + > +create_files(get_walfiles(@walfiles_with_gz)); > > The new function get_walfiels() just increases the line count without > cutting any lines. The following changes are sufficient and easier to > read (at least for me). > >> open my $file, '>', "$tempdir/$fn->{name}"; > >> foreach my $fn (map {$_->{name}} @walfiles_with_gz) Agreed. Remove get_walfiles() and added some changes as above. -- Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_c41bc7328effd13807abe21e6e383709 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0001-Introduce-pg_archivecleanup-into-getopt_long.patch Content-Disposition: attachment; filename=v12-0001-Introduce-pg_archivecleanup-into-getopt_long.patch; size=4179 RnJvbSBmOTQ4N2Y4MzE0MzZmZjA5NzU5NWY4OTFlNWY0ZTc5NmZiOTk0M2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMjEgSnVuIDIwMjMgMjE6NDI6MDggKzA5MDAKU3ViamVjdDog W1BBVENIIHYxMiAxLzNdIEludHJvZHVjZSBwZ19hcmNoaXZlY2xlYW51cCBpbnRvIGdldG9wdF9s b25nCgpUaGlzIHBhdGNoIGlzIGEgcHJlbGltaW5hcnkgc3RlcCB0byBhZGQgYW4gZWFzeS10by11 bmRlcnN0YW5kIG9wdGlvbgp0byBkZWxldGUgYmFja3VwIGhpc3RvcnkgZmlsZXMsIGJ1dCBpdCBh bHNvIGFkZHMgbG9uZyBvcHRpb25zIHRvCnRoZSBleGlzdGluZyBvcHRpb25zLgoKUmV2aWV3ZWQt Ynk6IE1pY2hhZWwgUGFxdWllciwgS3lvdGFybyBIb3JpZ3VjaGksIEZ1amlpIE1hc2FvCi0tLQog ZG9jL3NyYy9zZ21sL3JlZi9wZ2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgIDUgKysrKy0K IHNyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyB8IDIyICsrKysr KysrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCmluZGV4IDYzNWU3 Yzc2ODUuLjA5OTkxYzJmY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZl Y2xlYW51cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21s CkBAIC05NSw2ICs5NSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVtb3ZpbmcgZmlsZSAiYXJj aGl2ZS8wMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAgICAgPHZhcmxpc3RlbnRyeT4KICAg ICAgIDx0ZXJtPjxvcHRpb24+LWQ8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9u Pi0tZGVidWc8L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIFByaW50IGxvdHMgb2YgZGVidWcgbG9nZ2luZyBvdXRwdXQgb24gPGZpbGVuYW1l PnN0ZGVycjwvZmlsZW5hbWU+LgpAQCAtMTA0LDYgKzEwNSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVw OiAgcmVtb3ZpbmcgZmlsZSAiYXJjaGl2ZS8wMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAg ICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj48L3Rlcm0+ CisgICAgICA8dGVybT48b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxs aXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgUHJpbnQgdGhlIG5hbWVzIG9mIHRoZSBm aWxlcyB0aGF0IHdvdWxkIGhhdmUgYmVlbiByZW1vdmVkIG9uIDxmaWxlbmFtZT5zdGRvdXQ8L2Zp bGVuYW1lPiAocGVyZm9ybXMgYSBkcnkgcnVuKS4KQEAgLTEyMiw3ICsxMjQsOCBAQCBwZ19hcmNo aXZlY2xlYW51cDogIHJlbW92aW5nIGZpbGUgImFyY2hpdmUvMDAwMDAwMDEwMDAwMDAzNzAwMDAw MDBFIgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICA8dmFybGlzdGVudHJ5PgotICAgICAg PHRlcm0+PG9wdGlvbj4teDwvb3B0aW9uPiA8cmVwbGFjZWFibGU+ZXh0ZW5zaW9uPC9yZXBsYWNl YWJsZT48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi14IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leHRlbnNpb248L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAg IDx0ZXJtPjxvcHRpb24+LS1zdHJpcC1leHRlbnNpb249PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4dGVuc2lvbjwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxp c3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBQcm92aWRlIGFuIGV4dGVuc2lvbgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIGIv c3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCmluZGV4IDc3MjZk MDUxNDkuLmZjMGRjYTk4NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAv cGdfYXJjaGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2Fy Y2hpdmVjbGVhbnVwLmMKQEAgLTE3LDcgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9n X2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJwZ19n ZXRvcHQuaCIKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCiBjb25zdCBjaGFyICpwcm9nbmFt ZTsKIApAQCAtMjUyLDExICsyNTIsMTMgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiVXNhZ2U6 XG4iKSk7CiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi4gQVJDSElWRUxPQ0FUSU9OIE9MREVT VEtFUFRXQUxGSUxFXG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJcbk9wdGlvbnM6XG4iKSk7 Ci0JcHJpbnRmKF8oIiAgLWQgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2ZXJi b3NlIG1vZGUpXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLW4gICAgICAgICAgICAgZHJ5IHJ1biwgc2hv dyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZFxuIikpOwotCXBy aW50ZihfKCIgIC1WLCAtLXZlcnNpb24gIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVu IGV4aXRcbiIpKTsKLQlwcmludGYoXygiICAteCBFWFQgICAgICAgICBjbGVhbiB1cCBmaWxlcyBp ZiB0aGV5IGhhdmUgdGhpcyBleHRlbnNpb25cbiIpKTsKLQlwcmludGYoXygiICAtPywgLS1oZWxw ICAgICBzaG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0t ZGVidWcgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGRlYnVnIG91dHB1dCAodmVyYm9zZSBtb2Rl KVxuIikpOworCXByaW50ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICBkcnkgcnVu LCBzaG93IHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgdGhhdCB3b3VsZCBiZVxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkXG4iKSk7CisJcHJpbnRmKF8oIiAgLVYs IC0tdmVyc2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVu IGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS1zdHJpcC1leHRlbnNpb249RVhUICAgc3Ry aXAgdGhpcyBleHRlbnRpb24gYmVmb3JlIGlkZW50aWZ5aW5nIGZpbGVzIGZvclxuIgorCQkJICIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbiB1cFxuIikpOworCXByaW50ZihfKCIg IC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4i KSk7CiAJcHJpbnRmKF8oIlxuIgogCQkJICJGb3IgdXNlIGFzIGFyY2hpdmVfY2xlYW51cF9jb21t YW5kIGluIHBvc3RncmVzcWwuY29uZjpcbiIKIAkJCSAiICBhcmNoaXZlX2NsZWFudXBfY29tbWFu ZCA9ICdwZ19hcmNoaXZlY2xlYW51cCBbT1BUSU9OXS4uLiBBUkNISVZFTE9DQVRJT04gJSVyJ1xu IgpAQCAtMjc0LDYgKzI3NiwxMiBAQCB1c2FnZSh2b2lkKQogaW50CiBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIHsKKwlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsK KwkJeyJkZWJ1ZyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnZCd9LAorCQl7ImRyeS1ydW4iLCBub19h cmd1bWVudCwgTlVMTCwgJ24nfSwKKwkJeyJzdHJpcC1leHRlbnNpb24iLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgJ3gnfSwKKwkJe05VTEwsIDAsIE5VTEwsIDB9CisJfTsKIAlpbnQJCQljOwog CiAJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwpAQCAtMjk0LDcgKzMwMiw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCi0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2Ms IGFyZ3YsICJkbng6IikpICE9IC0xKQorCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFy Z3YsICJkbng6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGMp CiAJCXsKLS0gCjIuMzkuMgoK --=_c41bc7328effd13807abe21e6e383709 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0002-Preliminary-refactoring-for-a-subsequent-patch.patch Content-Disposition: attachment; filename=v12-0002-Preliminary-refactoring-for-a-subsequent-patch.patch; size=5756 RnJvbSBjYWYxODg5ZDRmYzk1NWY0NTRiOThkMGI2NGQxN2M4OWU2NzMyNDkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IEZyaSwgMjMgSnVuIDIwMjMgMTU6MTE6MjUgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxMiAyLzNdIFByZWxpbWluYXJ5IHJlZmFjdG9yaW5nIGZvciBhIHN1YnNlcXVlbnQg cGF0Y2gKClRoaXMgaXMgYSBwcmVwYXJhdG9yeSBwYXRjaCB0aGF0IGRvZXNuJ3QgaW50cm9kdWNl IGFueSBmdW5jdGlvbmFsCmNoYW5nZS4gSW5zdGVhZCwgdGhpcyBjYXJyaWVzIG91dCBwcmVsaW1p bmFyeSByZWZhY3RvcmluZyB3aXRoIHRoZQpnb2FsIG9mIHJlZHVjaW5nIHRoZSBvdmVyYWxsIG5l c3RpbmcgbGV2ZWwuIFRoaXMgaGVscHMgdG8gcHJldmVudCB0aGUKZm9ydGhjb21pbmcgcGF0Y2gg ZnJvbSBmdXJ0aGVyIGRlZXBlbmluZyB0aGUgbmVzdGluZyBsZXZlbC4KClJldmlld2VkLWJ5OiBN aWNoYWVsIFBhcXVpZXIsIEt5b3Rhcm8gSG9yaWd1Y2hpLCBGdWppaSBNYXNhbwotLS0KIHNyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyB8IDEzNSArKysrKysrKyst LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVjbGVh bnVwLmMgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMKaW5k ZXggZmMwZGNhOTg1Ni4uOGQxODU2NjVhYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hcmNoaXZl Y2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCisrKyBiL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFu dXAvcGdfYXJjaGl2ZWNsZWFudXAuYwpAQCAtOTMsNzYgKzkzLDc1IEBAIENsZWFudXBQcmlvcldB TEZpbGVzKHZvaWQpCiAJc3RydWN0IGRpcmVudCAqeGxkZTsKIAljaGFyCQl3YWxmaWxlW01BWFBH UEFUSF07CiAKLQlpZiAoKHhsZGlyID0gb3BlbmRpcihhcmNoaXZlTG9jYXRpb24pKSAhPSBOVUxM KQotCXsKLQkJd2hpbGUgKGVycm5vID0gMCwgKHhsZGUgPSByZWFkZGlyKHhsZGlyKSkgIT0gTlVM TCkKLQkJewotCQkJLyoKLQkJCSAqIFRydW5jYXRpb24gaXMgZXNzZW50aWFsbHkgaGFybWxlc3Ms IGJlY2F1c2Ugd2Ugc2tpcCBuYW1lcyBvZgotCQkJICogbGVuZ3RoIG90aGVyIHRoYW4gWExPR19G TkFNRV9MRU4uICAoSW4gcHJpbmNpcGxlLCBvbmUgY291bGQgdXNlCi0JCQkgKiBhIDEwMDAtY2hh cmFjdGVyIGFkZGl0aW9uYWxfZXh0IGFuZCBnZXQgdHJvdWJsZS4pCi0JCQkgKi8KLQkJCXN0cmxj cHkod2FsZmlsZSwgeGxkZS0+ZF9uYW1lLCBNQVhQR1BBVEgpOwotCQkJVHJpbUV4dGVuc2lvbih3 YWxmaWxlLCBhZGRpdGlvbmFsX2V4dCk7Ci0KLQkJCS8qCi0JCQkgKiBXZSBpZ25vcmUgdGhlIHRp bWVsaW5lIHBhcnQgb2YgdGhlIFhMT0cgc2VnbWVudCBpZGVudGlmaWVycyBpbgotCQkJICogZGVj aWRpbmcgd2hldGhlciBhIHNlZ21lbnQgaXMgc3RpbGwgbmVlZGVkLiAgVGhpcyBlbnN1cmVzIHRo YXQKLQkJCSAqIHdlIHdvbid0IHByZW1hdHVyZWx5IHJlbW92ZSBhIHNlZ21lbnQgZnJvbSBhIHBh cmVudCB0aW1lbGluZS4KLQkJCSAqIFdlIGNvdWxkIHByb2JhYmx5IGJlIGEgbGl0dGxlIG1vcmUg cHJvYWN0aXZlIGFib3V0IHJlbW92aW5nCi0JCQkgKiBzZWdtZW50cyBvZiBub24tcGFyZW50IHRp bWVsaW5lcywgYnV0IHRoYXQgd291bGQgYmUgYSB3aG9sZSBsb3QKLQkJCSAqIG1vcmUgY29tcGxp Y2F0ZWQuCi0JCQkgKgotCQkJICogV2UgdXNlIHRoZSBhbHBoYW51bWVyaWMgc29ydGluZyBwcm9w ZXJ0eSBvZiB0aGUgZmlsZW5hbWVzIHRvCi0JCQkgKiBkZWNpZGUgd2hpY2ggb25lcyBhcmUgZWFy bGllciB0aGFuIHRoZSBleGNsdXNpdmVDbGVhbnVwRmlsZU5hbWUKLQkJCSAqIGZpbGUuIE5vdGUg dGhhdCB0aGlzIG1lYW5zIGZpbGVzIGFyZSBub3QgcmVtb3ZlZCBpbiB0aGUgb3JkZXIKLQkJCSAq IHRoZXkgd2VyZSBvcmlnaW5hbGx5IHdyaXR0ZW4sIGluIGNhc2UgdGhpcyB3b3JyaWVzIHlvdS4K LQkJCSAqLwotCQkJaWYgKChJc1hMb2dGaWxlTmFtZSh3YWxmaWxlKSB8fCBJc1BhcnRpYWxYTG9n RmlsZU5hbWUod2FsZmlsZSkpICYmCi0JCQkJc3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVD bGVhbnVwRmlsZU5hbWUgKyA4KSA8IDApCi0JCQl7Ci0JCQkJY2hhcgkJV0FMRmlsZVBhdGhbTUFY UEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGgKLQkJCQkJCQkJCQkJCQkJICogaW5jbHVkaW5n IGFyY2hpdmUgKi8KLQotCQkJCS8qCi0JCQkJICogVXNlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUg YWdhaW4gbm93LCBpbmNsdWRpbmcgYW55Ci0JCQkJICogZXh0ZW5zaW9uIHRoYXQgbWlnaHQgaGF2 ZSBiZWVuIGNob3BwZWQgb2ZmIGJlZm9yZSB0ZXN0aW5nCi0JCQkJICogdGhlIHNlcXVlbmNlLgot CQkJCSAqLwotCQkJCXNucHJpbnRmKFdBTEZpbGVQYXRoLCBzaXplb2YoV0FMRmlsZVBhdGgpLCAi JXMvJXMiLAotCQkJCQkJIGFyY2hpdmVMb2NhdGlvbiwgeGxkZS0+ZF9uYW1lKTsKLQotCQkJCWlm IChkcnlydW4pCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBQcmludHMgdGhlIG5hbWUgb2YgdGhl IGZpbGUgdG8gYmUgcmVtb3ZlZCBhbmQgc2tpcHMgdGhlCi0JCQkJCSAqIGFjdHVhbCByZW1vdmFs LiAgVGhlIHJlZ3VsYXIgcHJpbnRvdXQgaXMgc28gdGhhdCB0aGUKLQkJCQkJICogdXNlciBjYW4g cGlwZSB0aGUgb3V0cHV0IGludG8gc29tZSBvdGhlciBwcm9ncmFtLgotCQkJCQkgKi8KLQkJCQkJ cHJpbnRmKCIlc1xuIiwgV0FMRmlsZVBhdGgpOwotCQkJCQlwZ19sb2dfZGVidWcoImZpbGUgXCIl c1wiIHdvdWxkIGJlIHJlbW92ZWQiLCBXQUxGaWxlUGF0aCk7Ci0JCQkJCWNvbnRpbnVlOwotCQkJ CX0KLQotCQkJCXBnX2xvZ19kZWJ1ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBXQUxGaWxlUGF0 aCk7Ci0KLQkJCQlyYyA9IHVubGluayhXQUxGaWxlUGF0aCk7Ci0JCQkJaWYgKHJjICE9IDApCi0J CQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQkJ IFdBTEZpbGVQYXRoKTsKLQkJCX0KLQkJfQotCi0JCWlmIChlcnJubykKLQkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIjogJW0iLAotCQkJCQkgYXJjaGl2 ZUxvY2F0aW9uKTsKLQkJaWYgKGNsb3NlZGlyKHhsZGlyKSkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgY2xvc2UgYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVtIiwKLQkJCQkJIGFyY2hpdmVMb2Nh dGlvbik7Ci0JfQotCWVsc2UKKwlpZiAoKHhsZGlyID0gb3BlbmRpcihhcmNoaXZlTG9jYXRpb24p KSA9PSBOVUxMKQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gYXJjaGl2ZSBsb2NhdGlvbiBc IiVzXCI6ICVtIiwKIAkJCQkgYXJjaGl2ZUxvY2F0aW9uKTsKKworCXdoaWxlIChlcnJubyA9IDAs ICh4bGRlID0gcmVhZGRpcih4bGRpcikpICE9IE5VTEwpCisJeworCQljaGFyCQlXQUxGaWxlUGF0 aFtNQVhQR1BBVEggKiAyXTsgLyogdGhlIGZpbGUgcGF0aAorCQkJCQkJCQkJCQkJICogaW5jbHVk aW5nIGFyY2hpdmUgKi8KKwkJLyoKKwkJICogVHJ1bmNhdGlvbiBpcyBlc3NlbnRpYWxseSBoYXJt bGVzcywgYmVjYXVzZSB3ZSBza2lwIG5hbWVzIG9mCisJCSAqIGxlbmd0aCBvdGhlciB0aGFuIFhM T0dfRk5BTUVfTEVOLiAgKEluIHByaW5jaXBsZSwgb25lIGNvdWxkIHVzZQorCQkgKiBhIDEwMDAt Y2hhcmFjdGVyIGFkZGl0aW9uYWxfZXh0IGFuZCBnZXQgdHJvdWJsZS4pCisJCSAqLworCQlzdHJs Y3B5KHdhbGZpbGUsIHhsZGUtPmRfbmFtZSwgTUFYUEdQQVRIKTsKKwkJVHJpbUV4dGVuc2lvbih3 YWxmaWxlLCBhZGRpdGlvbmFsX2V4dCk7CisKKwkJaWYgKCFJc1hMb2dGaWxlTmFtZSh3YWxmaWxl KSAmJiAhSXNQYXJ0aWFsWExvZ0ZpbGVOYW1lKHdhbGZpbGUpKQorCQkJY29udGludWU7CisKKwkJ LyoKKwkJICogV2UgaWdub3JlIHRoZSB0aW1lbGluZSBwYXJ0IG9mIHRoZSBYTE9HIHNlZ21lbnQg aWRlbnRpZmllcnMgaW4KKwkJICogZGVjaWRpbmcgd2hldGhlciBhIHNlZ21lbnQgaXMgc3RpbGwg bmVlZGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQKKwkJICogd2Ugd29uJ3QgcHJlbWF0dXJlbHkgcmVt b3ZlIGEgc2VnbWVudCBmcm9tIGEgcGFyZW50IHRpbWVsaW5lLgorCQkgKiBXZSBjb3VsZCBwcm9i YWJseSBiZSBhIGxpdHRsZSBtb3JlIHByb2FjdGl2ZSBhYm91dCByZW1vdmluZworCQkgKiBzZWdt ZW50cyBvZiBub24tcGFyZW50IHRpbWVsaW5lcywgYnV0IHRoYXQgd291bGQgYmUgYSB3aG9sZSBs b3QKKwkJICogbW9yZSBjb21wbGljYXRlZC4KKwkJICoKKwkJICogV2UgdXNlIHRoZSBhbHBoYW51 bWVyaWMgc29ydGluZyBwcm9wZXJ0eSBvZiB0aGUgZmlsZW5hbWVzIHRvCisJCSAqIGRlY2lkZSB3 aGljaCBvbmVzIGFyZSBlYXJsaWVyIHRoYW4gdGhlIGV4Y2x1c2l2ZUNsZWFudXBGaWxlTmFtZQor CQkgKiBmaWxlLiBOb3RlIHRoYXQgdGhpcyBtZWFucyBmaWxlcyBhcmUgbm90IHJlbW92ZWQgaW4g dGhlIG9yZGVyCisJCSAqIHRoZXkgd2VyZSBvcmlnaW5hbGx5IHdyaXR0ZW4sIGluIGNhc2UgdGhp cyB3b3JyaWVzIHlvdS4KKwkJICovCisJCWlmIChzdHJjbXAod2FsZmlsZSArIDgsIGV4Y2x1c2l2 ZUNsZWFudXBGaWxlTmFtZSArIDgpID49IDApCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBV c2UgdGhlIG9yaWdpbmFsIGZpbGUgbmFtZSBhZ2FpbiBub3csIGluY2x1ZGluZyBhbnkKKwkJICog ZXh0ZW5zaW9uIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGNob3BwZWQgb2ZmIGJlZm9yZSB0ZXN0aW5n CisJCSAqIHRoZSBzZXF1ZW5jZS4KKwkJICovCisJCXNucHJpbnRmKFdBTEZpbGVQYXRoLCBzaXpl b2YoV0FMRmlsZVBhdGgpLCAiJXMvJXMiLAorCQkJCSBhcmNoaXZlTG9jYXRpb24sIHhsZGUtPmRf bmFtZSk7CisKKwkJaWYgKGRyeXJ1bikKKwkJeworCQkJLyoKKwkJCSAqIFByaW50cyB0aGUgbmFt ZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkIGFuZCBza2lwcyB0aGUKKwkJCSAqIGFjdHVhbCBy ZW1vdmFsLiAgVGhlIHJlZ3VsYXIgcHJpbnRvdXQgaXMgc28gdGhhdCB0aGUKKwkJCSAqIHVzZXIg Y2FuIHBpcGUgdGhlIG91dHB1dCBpbnRvIHNvbWUgb3RoZXIgcHJvZ3JhbS4KKwkJCSAqLworCQkJ cHJpbnRmKCIlc1xuIiwgV0FMRmlsZVBhdGgpOworCQkJcGdfbG9nX2RlYnVnKCJmaWxlIFwiJXNc IiB3b3VsZCBiZSByZW1vdmVkIiwgV0FMRmlsZVBhdGgpOworCQkJY29udGludWU7CisJCX0KKwor CQlwZ19sb2dfZGVidWcoInJlbW92aW5nIGZpbGUgXCIlc1wiIiwgV0FMRmlsZVBhdGgpOworCisJ CXJjID0gdW5saW5rKFdBTEZpbGVQYXRoKTsKKwkJaWYgKHJjICE9IDApCisJCQlwZ19mYXRhbCgi Y291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgV0FMRmlsZVBhdGgpOwor CX0KKworCWlmIChlcnJubykKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGFyY2hpdmUgbG9j YXRpb24gXCIlc1wiOiAlbSIsCisJCQkJIGFyY2hpdmVMb2NhdGlvbik7CisJaWYgKGNsb3NlZGly KHhsZGlyKSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBhcmNoaXZlIGxvY2F0aW9uIFwi JXNcIjogJW0iLAorCQkJCSBhcmNoaXZlTG9jYXRpb24pOwogfQogCiAvKgotLSAKMi4zOS4yCgo= --=_c41bc7328effd13807abe21e6e383709 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0003-Allow-pg_archivecleanup-to-remove-backup-history.patch Content-Disposition: attachment; filename=v12-0003-Allow-pg_archivecleanup-to-remove-backup-history.patch; size=8365 RnJvbSBiOGRmMTg3ZTNkOTg4NTMxYzc0YTAwNWYwNjMwMTQ3YWE3OGU2M2U2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IEZyaSwgMjMgSnVuIDIwMjMgMTc6MDc6MTAgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxMiAzLzNdIEFsbG93IHBnX2FyY2hpdmVjbGVhbnVwIHRvIHJlbW92ZSBiYWNrdXAg aGlzdG9yeQogZmlsZXMKCkJhY2t1cCBoaXN0b3J5IGZpbGVzIGFyZSBqdXN0IGZldyBieXRlcywg YnV0IGl0IGNhbiBiZSBub2lzeSBmb3IgdGhlCmV5ZSB0byBzZWUgYSBsYXJnZSBhY2N1bXVsYXRp b24gb2YgaGlzdG9yeSBmaWxlcyBtaXhlZCB3aXRoIHRoZSBXQUwKc2VnbWVudHMuClRoaXMgcGF0 Y2ggYWRkcyBhIG5ldyBvcHRpb24gdG8gcmVtb3ZlIGZpbGVzIGluY2x1ZGluZyBiYWNrdXAKaGlz dG9yeSBmaWxlcyBvbGRlciBvbGRlc3RrZXB0d2FsZmlsZS4KClJldmlld2VkLWJ5OiBNaWNoYWVs IFBhcXVpZXIsIEt5b3Rhcm8gSG9yaWd1Y2hpLCBGdWppaSBNYXNhbwotLS0KIGRvYy9zcmMvc2dt bC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sICAgICAgICB8IDExICsrKwogc3JjL2Jpbi9wZ19h cmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIHwgMTkgKysrLS0KIC4uLi90LzAxMF9w Z19hcmNoaXZlY2xlYW51cC5wbCAgICAgICAgICAgICAgICB8IDcwICsrKysrKysrKysrKy0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2FyY2hpdmVjbGVhbnVwLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbAppbmRleCAwOTk5MWMyZmNkLi45YWNj YWU4YjEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbApAQCAtOTMsNiAr OTMsMTcgQEAgcGdfYXJjaGl2ZWNsZWFudXA6ICByZW1vdmluZyBmaWxlICJhcmNoaXZlLzAwMDAw MDAxMDAwMDAwMzcwMDAwMDAwRSIKIAogICAgIDx2YXJpYWJsZWxpc3Q+CiAKKyAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWI8L29wdGlvbj48L3Rlcm0+CisgICAgICA8 dGVybT48b3B0aW9uPi0tY2xlYW4tYmFja3VwLWhpc3Rvcnk8L29wdGlvbj48L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgICBSZW1vdmUgYmFja3VwIGhpc3Rv cnkgZmlsZXMgYXMgd2VsbC4KKyAgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJiYWNrdXAtYmFz ZS1iYWNrdXAiLz4gZm9yIGRldGFpbHMgb2YgdGhlIGJhY2t1cCBoaXN0b3J5IGZpbGVzLgorICAg ICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi1kPC9vcHRpb24+PC90ZXJt PgogICAgICAgPHRlcm0+PG9wdGlvbj4tLWRlYnVnPC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIGIvc3JjL2Jp bi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCmluZGV4IDhkMTg1NjY1YWIu LjU3NzRhMDQ4ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJj aGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVj bGVhbnVwLmMKQEAgLTIzLDYgKzIzLDggQEAgY29uc3QgY2hhciAqcHJvZ25hbWU7CiAKIC8qIE9w dGlvbnMgYW5kIGRlZmF1bHRzICovCiBib29sCQlkcnlydW4gPSBmYWxzZTsJCS8qIGFyZSB3ZSBw ZXJmb3JtaW5nIGEgZHJ5LXJ1biBvcGVyYXRpb24/ICovCitib29sCQljbGVhbkJhY2t1cEhpc3Rv cnkgPSBmYWxzZTsJLyogcmVtb3ZlIGZpbGVzIGluY2x1ZGluZworCQkJCQkJCQkJCSAqIGJhY2t1 cCBoaXN0b3J5IGZpbGVzICovCiBjaGFyCSAgICphZGRpdGlvbmFsX2V4dCA9IE5VTEw7CS8qIEV4 dGVuc2lvbiB0byByZW1vdmUgZnJvbSBmaWxlbmFtZXMgKi8KIAogY2hhcgkgICAqYXJjaGl2ZUxv Y2F0aW9uOwkvKiB3aGVyZSB0byBmaW5kIHRoZSBhcmNoaXZlPyAqLwpAQCAtMTAyLDE0ICsxMDQs MTYgQEAgQ2xlYW51cFByaW9yV0FMRmlsZXModm9pZCkKIAkJY2hhcgkJV0FMRmlsZVBhdGhbTUFY UEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGgKIAkJCQkJCQkJCQkJCSAqIGluY2x1ZGluZyBh cmNoaXZlICovCiAJCS8qCi0JCSAqIFRydW5jYXRpb24gaXMgZXNzZW50aWFsbHkgaGFybWxlc3Ms IGJlY2F1c2Ugd2Ugc2tpcCBuYW1lcyBvZgotCQkgKiBsZW5ndGggb3RoZXIgdGhhbiBYTE9HX0ZO QU1FX0xFTi4gIChJbiBwcmluY2lwbGUsIG9uZSBjb3VsZCB1c2UKLQkJICogYSAxMDAwLWNoYXJh Y3RlciBhZGRpdGlvbmFsX2V4dCBhbmQgZ2V0IHRyb3VibGUuKQorCQkgKiBUcnVuY2F0aW9uIGlz IGVzc2VudGlhbGx5IGhhcm1sZXNzLCBiZWNhdXNlIHdlIHNraXAgZmlsZXMgd2hvc2UKKwkJICog Zm9ybWF0IGlzIGRpZmZlcmVudCBmcm9tIFdBTCBmaWxlcyBhbmQgYmFja3VwIGhpc3RvcnkgZmls ZXMuCisJCSAqIChJbiBwcmluY2lwbGUsIG9uZSBjb3VsZCB1c2UgYSAxMDAwLWNoYXJhY3RlciBh ZGRpdGlvbmFsX2V4dCBhbmQKKwkJICogZ2V0IHRyb3VibGUuKQogCQkgKi8KIAkJc3RybGNweSh3 YWxmaWxlLCB4bGRlLT5kX25hbWUsIE1BWFBHUEFUSCk7CiAJCVRyaW1FeHRlbnNpb24od2FsZmls ZSwgYWRkaXRpb25hbF9leHQpOwogCi0JCWlmICghSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgJiYg IUlzUGFydGlhbFhMb2dGaWxlTmFtZSh3YWxmaWxlKSkKKwkJaWYgKCFJc1hMb2dGaWxlTmFtZSh3 YWxmaWxlKSAmJiAhSXNQYXJ0aWFsWExvZ0ZpbGVOYW1lKHdhbGZpbGUpICYmCisJCQkhKGNsZWFu QmFja3VwSGlzdG9yeSAmJiBJc0JhY2t1cEhpc3RvcnlGaWxlTmFtZSh3YWxmaWxlKSkpCiAJCQlj b250aW51ZTsKIAogCQkvKgpAQCAtMjUxLDYgKzI1NSw3IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRm KF8oIlVzYWdlOlxuIikpOwogCXByaW50ZihfKCIgICVzIFtPUFRJT05dLi4uIEFSQ0hJVkVMT0NB VElPTiBPTERFU1RLRVBUV0FMRklMRVxuIiksIHByb2duYW1lKTsKIAlwcmludGYoXygiXG5PcHRp b25zOlxuIikpOworCXByaW50ZihfKCIgIC1iLCAtLWNsZWFuLWJhY2t1cC1oaXN0b3J5ICBjbGVh biB1cCBmaWxlcyBpbmNsdWRpbmcgYmFja3VwIGhpc3RvcnkgZmlsZXNcbiIpKTsKIAlwcmludGYo XygiICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2 ZXJib3NlIG1vZGUpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAg ICAgIGRyeSBydW4sIHNob3cgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyB0aGF0IHdvdWxkIGJlXG4i CiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRcbiIpKTsKQEAgLTI3 Niw2ICsyODEsNyBAQCBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0YXRp YyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ImNsZWFuLWJhY2t1cC1oaXN0 b3J5Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sCiAJCXsiZGVidWciLCBub19hcmd1bWVudCwg TlVMTCwgJ2QnfSwKIAkJeyJkcnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEwsICduJ30sCiAJCXsi c3RyaXAtZXh0ZW5zaW9uIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCkBAIC0zMDEs MTAgKzMwNywxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJfQogCX0KIAotCXdo aWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJkbng6IiwgbG9uZ19vcHRpb25zLCBO VUxMKSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImJkbng6 IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGMpCiAJCXsKKwkJ CWNhc2UgJ2InOiAJCQkvKiBSZW1vdmUgYmFja3VwIGhpc3RvcnkgZmlsZXMgYXMgd2VsbCAqLwor CQkJCWNsZWFuQmFja3VwSGlzdG9yeSA9IHRydWU7CisJCQkJYnJlYWs7CiAJCQljYXNlICdkJzoJ CQkvKiBEZWJ1ZyBtb2RlICovCiAJCQkJcGdfbG9nZ2luZ19pbmNyZWFzZV92ZXJib3NpdHkoKTsK IAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvdC8wMTBf cGdfYXJjaGl2ZWNsZWFudXAucGwgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3QvMDEwX3Bn X2FyY2hpdmVjbGVhbnVwLnBsCmluZGV4IGNjMzM4NmQxNDYuLjJmMTk2NGEyMTggMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvdC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwK KysrIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC90LzAxMF9wZ19hcmNoaXZlY2xlYW51cC5w bApAQCAtMTIsMjIgKzEyLDM0IEBAIHByb2dyYW1fb3B0aW9uc19oYW5kbGluZ19vaygncGdfYXJj aGl2ZWNsZWFudXAnKTsKIAogbXkgJHRlbXBkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6 dGVtcGRpcjsKIAotbXkgQHdhbGZpbGVzID0gKAotCScwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEMu Z3onLCAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBEJywKLQknMDAwMDAwMDEwMDAwMDAzNzAwMDAw MDBFJywgJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAwRi5wYXJ0aWFsJywpOworbXkgQHdhbGZpbGVz X3dpdGhfZ3ogPSAoCisJeyBuYW1lID0+ICcwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEMuZ3onLCAg ICAgIHByZXNlbnQgPT4gMCB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBE JywgICAgICAgICBwcmVzZW50ID0+IDAgfSwKKwl7IG5hbWUgPT4gJzAwMDAwMDAxMDAwMDAwMzcw MDAwMDAwRC5iYWNrdXAnLCAgcHJlc2VudCA9PiAxIH0sCisJeyBuYW1lID0+ICcwMDAwMDAwMTAw MDAwMDM3MDAwMDAwMEUnLCAgICAgICAgIHByZXNlbnQgPT4gMSB9LAorCXsgbmFtZSA9PiAnMDAw MDAwMDEwMDAwMDAzNzAwMDAwMDBGLnBhcnRpYWwnLCBwcmVzZW50ID0+IDEgfSwKKwl7IG5hbWUg PT4gJ3VucmVsYXRlZF9maWxlJywgICAgICAgICAgICAgICAgICAgcHJlc2VudCA9PiAxIH0pOwor CitteSBAd2FsZmlsZXNfZm9yX2NsZWFuX2JhY2t1cF9oaXN0b3J5ID0gKAorCXsgbmFtZSA9PiAn MDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBEJywgICAgICAgICAgICAgICAgIHByZXNlbnQgPT4gMCB9 LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBELjAwMDAwMDI4LmJhY2t1cCcs IHByZXNlbnQgPT4gMCB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFJywg ICAgICAgICAgICAgICAgIHByZXNlbnQgPT4gMSB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAw MDAzNzAwMDAwMDBGLnBhcnRpYWwnLCAgICAgICAgIHByZXNlbnQgPT4gMSB9LAorCXsgbmFtZSA9 PiAndW5yZWxhdGVkX2ZpbGUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgPT4g MSB9KTsKIAogc3ViIGNyZWF0ZV9maWxlcwogewotCWZvcmVhY2ggbXkgJGZuIChAd2FsZmlsZXMs ICd1bnJlbGF0ZWRfZmlsZScpCisJZm9yZWFjaCBteSAkZm4gKG1hcCB7JF8tPntuYW1lfX0gQF8p CiAJewogCQlvcGVuIG15ICRmaWxlLCAnPicsICIkdGVtcGRpci8kZm4iOworCiAJCXByaW50ICRm aWxlICdDT05URU5UJzsKIAkJY2xvc2UgJGZpbGU7CiAJfQogCXJldHVybjsKIH0KIAotY3JlYXRl X2ZpbGVzKCk7CitjcmVhdGVfZmlsZXMoQHdhbGZpbGVzX3dpdGhfZ3opOwogCiBjb21tYW5kX2Zh aWxzX2xpa2UoCiAJWydwZ19hcmNoaXZlY2xlYW51cCddLApAQCAtNTksMTQgKzcxLDE0IEBAIGNv bW1hbmRfZmFpbHNfbGlrZSgKIAlteSAkc3RkZXJyOwogCW15ICRyZXN1bHQgPQogCSAgSVBDOjpS dW46OnJ1biBbICdwZ19hcmNoaXZlY2xlYW51cCcsICctZCcsICctbicsICR0ZW1wZGlyLAotCQkk d2FsZmlsZXNbMl0gXSwKKwkJJHdhbGZpbGVzX3dpdGhfZ3pbM10tPntuYW1lfSBdLAogCSAgJzI+ JywgXCRzdGRlcnI7CiAJb2soJHJlc3VsdCwgInBnX2FyY2hpdmVjbGVhbnVwIGRyeSBydW46IGV4 aXQgY29kZSAwIik7CiAJbGlrZSgKIAkJJHN0ZGVyciwKLQkJcXIvJHdhbGZpbGVzWzFdLip3b3Vs ZCBiZSByZW1vdmVkLywKKwkJcXIvJHdhbGZpbGVzX3dpdGhfZ3pbMV0tPntuYW1lfS4qd291bGQg YmUgcmVtb3ZlZC8sCiAJCSJwZ19hcmNoaXZlY2xlYW51cCBkcnkgcnVuOiBtYXRjaGVzIik7Ci0J Zm9yZWFjaCBteSAkZm4gKEB3YWxmaWxlcykKKwlmb3JlYWNoIG15ICRmbiAobWFwIHskXy0+e25h bWV9fSBAd2FsZmlsZXNfd2l0aF9neikKIAl7CiAJCW9rKC1mICIkdGVtcGRpci8kZm4iLCAiJGZu IG5vdCByZW1vdmVkIik7CiAJfQpAQCAtNzYsMzIgKzg4LDQwIEBAIHN1YiBydW5fY2hlY2sKIHsK IAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAx OwogCi0JbXkgKCRzdWZmaXgsICR0ZXN0X25hbWUpID0gQF87CisJbXkgKCR0ZXN0ZGF0YSwgJG9s ZGVzdGtlcHR3YWxmaWxlLCAkdGVzdF9uYW1lLCBAb3B0aW9ucykgPSBAXzsKIAotCWNyZWF0ZV9m aWxlcygpOworCWNyZWF0ZV9maWxlcyhAJHRlc3RkYXRhKTsKIAogCWNvbW1hbmRfb2soCiAJCVsK LQkJCSdwZ19hcmNoaXZlY2xlYW51cCcsICcteCcsICcuZ3onLCAkdGVtcGRpciwKLQkJCSR3YWxm aWxlc1syXSAuICRzdWZmaXgKKwkJCSdwZ19hcmNoaXZlY2xlYW51cCcsIEBvcHRpb25zLCAkdGVt cGRpciwKKwkJCSRvbGRlc3RrZXB0d2FsZmlsZQogCQldLAogCQkiJHRlc3RfbmFtZTogcnVucyIp OwogCi0Jb2soIS1mICIkdGVtcGRpci8kd2FsZmlsZXNbMF0iLAotCQkiJHRlc3RfbmFtZTogZmly c3Qgb2xkZXIgV0FMIGZpbGUgd2FzIGNsZWFuZWQgdXAiKTsKLQlvayghLWYgIiR0ZW1wZGlyLyR3 YWxmaWxlc1sxXSIsCi0JCSIkdGVzdF9uYW1lOiBzZWNvbmQgb2xkZXIgV0FMIGZpbGUgd2FzIGNs ZWFuZWQgdXAiKTsKLQlvaygtZiAiJHRlbXBkaXIvJHdhbGZpbGVzWzJdIiwKLQkJIiR0ZXN0X25h bWU6IHJlc3RhcnRmaWxlIHdhcyBub3QgY2xlYW5lZCB1cCIpOwotCW9rKC1mICIkdGVtcGRpci8k d2FsZmlsZXNbM10iLAotCQkiJHRlc3RfbmFtZTogbmV3ZXIgV0FMIGZpbGUgd2FzIG5vdCBjbGVh bmVkIHVwIik7Ci0Jb2soLWYgIiR0ZW1wZGlyL3VucmVsYXRlZF9maWxlIiwKLQkJIiR0ZXN0X25h bWU6IHVucmVsYXRlZCBmaWxlIHdhcyBub3QgY2xlYW5lZCB1cCIpOworCWZvciBteSAkd2FscGFp ciAoQCR0ZXN0ZGF0YSkKKwl7CisJCWlmICgkd2FscGFpci0+e3ByZXNlbnR9KQorCQl7CisJCQlv aygtZiAiJHRlbXBkaXIvJHdhbHBhaXItPntuYW1lfSIsCisJCQkJIiR0ZXN0X25hbWU6JHdhbHBh aXItPntuYW1lfSB3YXMgbm90IGNsZWFuZWQgdXAiKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW9r KCEtZiAiJHRlbXBkaXIvJHdhbHBhaXItPntuYW1lfSIsCisJCQkJIiR0ZXN0X25hbWU6JHdhbHBh aXItPntuYW1lfSB3YXMgY2xlYW5lZCB1cCIpOworCQl9CisJfQogCXJldHVybjsKIH0KIAotcnVu X2NoZWNrKCcnLCAncGdfYXJjaGl2ZWNsZWFudXAnKTsKLXJ1bl9jaGVjaygnLnBhcnRpYWwnLCAn cGdfYXJjaGl2ZWNsZWFudXAgd2l0aCAucGFydGlhbCBmaWxlJyk7Ci1ydW5fY2hlY2soJy4wMDAw MDAyMC5iYWNrdXAnLCAncGdfYXJjaGl2ZWNsZWFudXAgd2l0aCAuYmFja3VwIGZpbGUnKTsKK3J1 bl9jaGVjayhcQHdhbGZpbGVzX3dpdGhfZ3osICcwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUnLAor CSdwZ19hcmNoaXZlY2xlYW51cCcsICcteC5neicpOworcnVuX2NoZWNrKFxAd2FsZmlsZXNfd2l0 aF9neiwgJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAwRS5wYXJ0aWFsJywKKwkncGdfYXJjaGl2ZWNs ZWFudXAgd2l0aCAucGFydGlhbCBmaWxlJywgJy14Lmd6Jyk7CitydW5fY2hlY2soXEB3YWxmaWxl c193aXRoX2d6LCAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFLjAwMDAwMDIwLmJhY2t1cCcsCisJ J3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLmJhY2t1cCBmaWxlJywgJy14Lmd6Jyk7CitydW5fY2hl Y2soXEB3YWxmaWxlc19mb3JfY2xlYW5fYmFja3VwX2hpc3RvcnksICcwMDAwMDAwMTAwMDAwMDM3 MDAwMDAwMEUnLAorCSdwZ19hcmNoaXZlY2xlYW51cCB3aXRoIC0tY2xlYW4tYmFja3VwLWhpc3Rv cnknLCAnLWInKTsKIAogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM5LjIKCg== --=_c41bc7328effd13807abe21e6e383709--