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 1q2CJN-0003q5-QG for pgsql-hackers@arkaria.postgresql.org; Thu, 25 May 2023 14:51:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q2CJM-00021c-Fe for pgsql-hackers@arkaria.postgresql.org; Thu, 25 May 2023 14:51:28 +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 1q2CJL-00021T-UR for pgsql-hackers@lists.postgresql.org; Thu, 25 May 2023 14:51:28 +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 1q2CJG-001pxN-Qo for pgsql-hackers@postgresql.org; Thu, 25 May 2023 14:51:26 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 9F23960538; Thu, 25 May 2023 23:51:18 +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="=_3062c9464633ae8547225b3f00f89213" Content-Transfer-Encoding: 7bit Date: Thu, 25 May 2023 23:51:18 +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: <0aad03237204efeb7038dafa38c202aa@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 --=_3062c9464633ae8547225b3f00f89213 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2023-05-24 10:26, Michael Paquier wrote: > On Mon, May 22, 2023 at 06:24:49PM +0900, torikoshia wrote: >> Thanks for your advice, attached patches. > > 0001 looks OK, thanks! > > + Remove files including backup history file. > > This could be reworded as "Remove backup history files.", I assume. > > + Note that when oldestkeptwalfile > is a backup history file, > + specified file is kept and only preceding WAL files and > backup history files are removed. > > The same thing is described at the bottom of the documentation, so it > does not seem necessary here. > > - printf(_(" -d, --debug generate debug output > (verbose mode)\n")); > - printf(_(" -n, --dry-run dry run, show the names > of the files that would be removed\n")); > - printf(_(" -V, --version output version > information, then exit\n")); > - printf(_(" -x --strip-extension=EXT clean up files if they > have this extension\n")); > - printf(_(" -?, --help show this help, then > exit\n")); > + printf(_(" -d, --debug generate debug output > (verbose mode)\n")); > + printf(_(" -n, --dry-run dry run, show the > names of the files that would be removed\n")); > + printf(_(" -b, --clean-backup-history clean up files > including backup history files\n")); > + printf(_(" -V, --version output version > information, then exit\n")); > + printf(_(" -x --strip-extension=EXT clean up files if they > have this extension\n")); > + printf(_(" -?, --help show this help, then > exit\n")); > > Perhaps this indentation had better be adjusted in 0001, no big deal > either way. > > - ok(!-f "$tempdir/$walfiles[0]", > - "$test_name: first older WAL file was cleaned up"); > + if (grep {$_ eq '-x.gz'} @options) { > + ok(!-f "$tempdir/$walfiles[0]", > + "$test_name: first older WAL file with .gz was > cleaned up"); > + } else { > + ok(-f "$tempdir/$walfiles[0]", > + "$test_name: first older WAL file with .gz was > not cleaned up"); > + } > [...] > - ok(-f "$tempdir/$walfiles[2]", > - "$test_name: restartfile was not cleaned up"); > + if (grep {$_ eq '-b'} @options) { > + ok(!-f "$tempdir/$walfiles[2]", > + "$test_name: Backup history file was cleaned > up"); > + } else { > + ok(-f "$tempdir/$walfiles[2]", > + "$test_name: Backup history file was not > cleaned up"); > + } > > That's over-complicated, caused by the fact that all the tests rely on > the same list of WAL files to create, aka @walfiles defined at the > beginning of the script. Wouldn't it be cleaner to handle the fake > file creations with more than one global list, before each command > run? The list of files to be created could just be passed down as an > argument of run_check(), for example, before cleaning up the contents > for the next command. > -- > Michael Thanks for reviewing! Updated patches according to your comment. -- Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_3062c9464633ae8547225b3f00f89213 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0001-Introduce-pg_archivecleanup-into-getopt_long.patch Content-Disposition: attachment; filename=v4-0001-Introduce-pg_archivecleanup-into-getopt_long.patch; size=4022 RnJvbSAwMjRiNTRkNWQ0MzZiYjg4YmI4MGJmNmIzMTZmNjk3ZWI5NmI1M2YxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMjUgTWF5IDIwMjMgMjM6MTM6MTIgKzA5MDAKU3ViamVjdDog W1BBVENIIHY0IDEvMl0gSW50cm9kdWNlIHBnX2FyY2hpdmVjbGVhbnVwIGludG8gZ2V0b3B0X2xv 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 LjcwN2Q3ZDU0Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJj aGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVj bGVhbnVwLmMKQEAgLTE3LDcgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJwZ19nZXRvcHQu aCIKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCiBjb25zdCBjaGFyICpwcm9nbmFtZTsKIApA QCAtMjUyLDExICsyNTIsMTEgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiVXNhZ2U6XG4iKSk7 CiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi4gQVJDSElWRUxPQ0FUSU9OIE9MREVTVEtFUFRX QUxGSUxFXG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJcbk9wdGlvbnM6XG4iKSk7Ci0JcHJp bnRmKF8oIiAgLWQgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2ZXJib3NlIG1v ZGUpXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLW4gICAgICAgICAgICAgZHJ5IHJ1biwgc2hvdyB0aGUg bmFtZXMgb2YgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZFxuIikpOwotCXByaW50Zihf KCIgIC1WLCAtLXZlcnNpb24gIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRc biIpKTsKLQlwcmludGYoXygiICAteCBFWFQgICAgICAgICBjbGVhbiB1cCBmaWxlcyBpZiB0aGV5 IGhhdmUgdGhpcyBleHRlbnNpb25cbiIpKTsKLQlwcmludGYoXygiICAtPywgLS1oZWxwICAgICBz aG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcg ICAgICAgICAgICAgICAgIGdlbmVyYXRlIGRlYnVnIG91dHB1dCAodmVyYm9zZSBtb2RlKVxuIikp OworCXByaW50ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICBkcnkgcnVuLCBzaG93 IHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgdGhhdCB3b3VsZCBiZSByZW1vdmVkXG4iKSk7CisJcHJp bnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9y bWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCAtLXN0cmlwLWV4dGVuc2lv bj1FWFQgICAgY2xlYW4gdXAgZmlsZXMgaWYgdGhleSBoYXZlIHRoaXMgZXh0ZW5zaW9uXG4iKSk7 CisJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxw LCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG4iCiAJCQkgIkZvciB1c2UgYXMgYXJjaGl2 ZV9jbGVhbnVwX2NvbW1hbmQgaW4gcG9zdGdyZXNxbC5jb25mOlxuIgogCQkJICIgIGFyY2hpdmVf Y2xlYW51cF9jb21tYW5kID0gJ3BnX2FyY2hpdmVjbGVhbnVwIFtPUFRJT05dLi4uIEFSQ0hJVkVM T0NBVElPTiAlJXInXG4iCkBAIC0yNzQsNiArMjc0LDEyIEBAIHVzYWdlKHZvaWQpCiBpbnQKIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogeworCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdf b3B0aW9uc1tdID0geworCQl7ImRlYnVnIiwgbm9fYXJndW1lbnQsIE5VTEwsICdkJ30sCisJCXsi ZHJ5LXJ1biIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnbid9LAorCQl7InN0cmlwLWV4dGVuc2lvbiIs IHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCd9LAorCQl7TlVMTCwgMCwgTlVMTCwgMH0KKwl9 OwogCWludAkJCWM7CiAKIAlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CkBAIC0yOTQsNyArMzAw LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAl9CiAKLQl3aGlsZSAoKGMg PSBnZXRvcHQoYXJnYywgYXJndiwgImRueDoiKSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0 X2xvbmcoYXJnYywgYXJndiwgImRueDoiLCBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkKIAl7 CiAJCXN3aXRjaCAoYykKIAkJewotLSAKMi4zOS4yCgo= --=_3062c9464633ae8547225b3f00f89213 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch Content-Disposition: attachment; filename=v4-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch; size=9868 RnJvbSAyM2QyMGYzMGViMGZhNmRhZWQxZjVlNjMxYzViM2JlZGFlYWU2MjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMjUgTWF5IDIwMjMgMjM6MjU6MjggKzA5MDAKU3ViamVjdDog W1BBVENIIHY0IDIvMl0gQWxsb3cgcGdfYXJjaGl2ZWNsZWFudXAgdG8gcmVtb3ZlIGJhY2t1cCBo aXN0b3J5IGZpbGVzCgpCYWNrdXAgaGlzdG9yeSBmaWxlcyBhcmUganVzdCBmZXcgYnl0ZXMsIGJ1 dCBpdCBjYW4gYmUgbm9pc3kgZm9yIHRoZQpleWUgdG8gc2VlIGEgbGFyZ2UgYWNjdW11bGF0aW9u IG9mIGhpc3RvcnkgZmlsZXMgbWl4ZWQgd2l0aCB0aGUgV0FMCnNlZ21lbnRzLgpUaGlzIHBhdGNo IGFkZHMgYSBuZXcgb3B0aW9uIHRvIHJlbW92ZSBmaWxlcyBpbmNsdWRpbmcgYmFja3VwCmhpc3Rv cnkgZmlsZXMgb2xkZXIgb2xkZXN0a2VwdHdhbGZpbGUuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9w Z2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgMTEgKysrCiBzcmMvYmluL3BnX2FyY2hpdmVj bGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMgfCA3OCArKysrKysrKysrKystLS0tLS0tCiAuLi4v dC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwgICAgICAgICAgICAgICAgfCA0NiArKysrKystLS0t LQogMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCmluZGV4IDA5OTkxYzJmY2QuLjhmYWMy MzNkYjYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCkBAIC0xMTMsNiAr MTEzLDE3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVtb3ZpbmcgZmlsZSAiYXJjaGl2ZS8wMDAw MDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tYjwvb3B0 aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1jbGVhbi1iYWNrdXAtaGlzdG9yeTwv b3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg IFJlbW92ZSBiYWNrdXAgaGlzdG9yeSBmaWxlcy4KKyAgICAgICAgIEZvciBkZXRhaWxzIGFib3V0 IGJhY2t1cCBoaXN0b3J5IGZpbGUsIHBsZWFzZSByZWZlciB0byB0aGUgPHhyZWYgbGlua2VuZD0i YmFja3VwLWJhc2UtYmFja3VwIi8+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVy bT48b3B0aW9uPi1WPC9vcHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4tLXZlcnNp b248L29wdGlvbj48L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVw L3BnX2FyY2hpdmVjbGVhbnVwLmMgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hp dmVjbGVhbnVwLmMKaW5kZXggNzA3ZDdkNTRjZi4uM2ZkNGE0NDFiMiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCisrKyBiL3NyYy9iaW4v cGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYwpAQCAtMjMsNiArMjMsOCBAQCBj b25zdCBjaGFyICpwcm9nbmFtZTsKIAogLyogT3B0aW9ucyBhbmQgZGVmYXVsdHMgKi8KIGJvb2wJ CWRyeXJ1biA9IGZhbHNlOwkJLyogYXJlIHdlIHBlcmZvcm1pbmcgYSBkcnktcnVuIG9wZXJhdGlv bj8gKi8KK2Jvb2wJCWNsZWFuQmFja3VwSGlzdG9yeSA9IGZhbHNlOwkvKiByZW1vdmUgZmlsZXMg aW5jbHVkaW5nCisJCQkJCQkJCQkJCQkgKiBiYWNrdXAgaGlzdG9yeSBmaWxlcyAqLwogY2hhcgkg ICAqYWRkaXRpb25hbF9leHQgPSBOVUxMOwkvKiBFeHRlbnNpb24gdG8gcmVtb3ZlIGZyb20gZmls ZW5hbWVzICovCiAKIGNoYXIJICAgKmFyY2hpdmVMb2NhdGlvbjsJLyogd2hlcmUgdG8gZmluZCB0 aGUgYXJjaGl2ZT8gKi8KQEAgLTk3LDYgKzk5LDggQEAgQ2xlYW51cFByaW9yV0FMRmlsZXModm9p ZCkKIAl7CiAJCXdoaWxlIChlcnJubyA9IDAsICh4bGRlID0gcmVhZGRpcih4bGRpcikpICE9IE5V TEwpCiAJCXsKKwkJCWNoYXIJCVdBTEZpbGVQYXRoW01BWFBHUEFUSCAqIDJdOyAvKiB0aGUgZmls ZSBwYXRoCisJCQkJCQkJCQkJCQkJCSAqIGluY2x1ZGluZyBhcmNoaXZlICovCiAJCQkvKgogCQkJ ICogVHJ1bmNhdGlvbiBpcyBlc3NlbnRpYWxseSBoYXJtbGVzcywgYmVjYXVzZSB3ZSBza2lwIG5h bWVzIG9mCiAJCQkgKiBsZW5ndGggb3RoZXIgdGhhbiBYTE9HX0ZOQU1FX0xFTi4gIChJbiBwcmlu Y2lwbGUsIG9uZSBjb3VsZCB1c2UKQEAgLTEwNiw2ICsxMTAsMTkgQEAgQ2xlYW51cFByaW9yV0FM RmlsZXModm9pZCkKIAkJCVRyaW1FeHRlbnNpb24od2FsZmlsZSwgYWRkaXRpb25hbF9leHQpOwog CiAJCQkvKgorCQkJICogQ2hlY2sgZmlsZSBuYW1lLgorCQkJICoKKwkJCSAqIFdlIHNraXAgZmls ZXMgd2hpY2ggYXJlIG5vdCBXQUwgZmlsZSBvciBwYXJ0aWFsIFdBTCBmaWxlLgorCQkJICogQWxz byB3ZSBza2lwIGJhY2t1cCBoaXN0b3J5IGZpbGVzIHdoZW4gLS1jbGVhbi1iYWNrdXAtaGlzdG9y eQorCQkJICogaXMgbm90IHNwZWNpZmllZC4KKwkJCSAqLworCQkJaWYgKCFJc1hMb2dGaWxlTmFt ZSh3YWxmaWxlKSAmJiAhSXNQYXJ0aWFsWExvZ0ZpbGVOYW1lKHdhbGZpbGUpICYmCisJCQkJKCFj bGVhbkJhY2t1cEhpc3RvcnkgfHwgIUlzQmFja3VwSGlzdG9yeUZpbGVOYW1lKHdhbGZpbGUpKSkK KwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIENoZWNrIGN1dG9mZiBwb2ludC4KKwkJCSAq CiAJCQkgKiBXZSBpZ25vcmUgdGhlIHRpbWVsaW5lIHBhcnQgb2YgdGhlIFhMT0cgc2VnbWVudCBp ZGVudGlmaWVycyBpbgogCQkJICogZGVjaWRpbmcgd2hldGhlciBhIHNlZ21lbnQgaXMgc3RpbGwg bmVlZGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQKIAkJCSAqIHdlIHdvbid0IHByZW1hdHVyZWx5IHJl bW92ZSBhIHNlZ21lbnQgZnJvbSBhIHBhcmVudCB0aW1lbGluZS4KQEAgLTExOCwzOSArMTM1LDM1 IEBAIENsZWFudXBQcmlvcldBTEZpbGVzKHZvaWQpCiAJCQkgKiBmaWxlLiBOb3RlIHRoYXQgdGhp cyBtZWFucyBmaWxlcyBhcmUgbm90IHJlbW92ZWQgaW4gdGhlIG9yZGVyCiAJCQkgKiB0aGV5IHdl cmUgb3JpZ2luYWxseSB3cml0dGVuLCBpbiBjYXNlIHRoaXMgd29ycmllcyB5b3UuCiAJCQkgKi8K LQkJCWlmICgoSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgfHwgSXNQYXJ0aWFsWExvZ0ZpbGVOYW1l KHdhbGZpbGUpKSAmJgotCQkJCXN0cmNtcCh3YWxmaWxlICsgOCwgZXhjbHVzaXZlQ2xlYW51cEZp bGVOYW1lICsgOCkgPCAwKQotCQkJewotCQkJCWNoYXIJCVdBTEZpbGVQYXRoW01BWFBHUEFUSCAq IDJdOyAvKiB0aGUgZmlsZSBwYXRoCi0JCQkJCQkJCQkJCQkJCSAqIGluY2x1ZGluZyBhcmNoaXZl ICovCisJCQlpZiAoc3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVDbGVhbnVwRmlsZU5hbWUg KyA4KSA+PSAwKQorCQkJCWNvbnRpbnVlOwogCisJCQkvKgorCQkJICogVXNlIHRoZSBvcmlnaW5h bCBmaWxlIG5hbWUgYWdhaW4gbm93LCBpbmNsdWRpbmcgYW55CisJCQkgKiBleHRlbnNpb24gdGhh dCBtaWdodCBoYXZlIGJlZW4gY2hvcHBlZCBvZmYgYmVmb3JlIHRlc3RpbmcKKwkJCSAqIHRoZSBz ZXF1ZW5jZS4KKwkJCSAqLworCQkJc25wcmludGYoV0FMRmlsZVBhdGgsIHNpemVvZihXQUxGaWxl UGF0aCksICIlcy8lcyIsCisJCQkJCSBhcmNoaXZlTG9jYXRpb24sIHhsZGUtPmRfbmFtZSk7CisK KwkJCWlmIChkcnlydW4pCisJCQl7CiAJCQkJLyoKLQkJCQkgKiBVc2UgdGhlIG9yaWdpbmFsIGZp bGUgbmFtZSBhZ2FpbiBub3csIGluY2x1ZGluZyBhbnkKLQkJCQkgKiBleHRlbnNpb24gdGhhdCBt aWdodCBoYXZlIGJlZW4gY2hvcHBlZCBvZmYgYmVmb3JlIHRlc3RpbmcKLQkJCQkgKiB0aGUgc2Vx dWVuY2UuCisJCQkJICogUHJpbnRzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQg YW5kIHNraXBzIHRoZQorCQkJCSAqIGFjdHVhbCByZW1vdmFsLiAgVGhlIHJlZ3VsYXIgcHJpbnRv dXQgaXMgc28gdGhhdCB0aGUKKwkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRwdXQgaW50byBz b21lIG90aGVyIHByb2dyYW0uCiAJCQkJICovCi0JCQkJc25wcmludGYoV0FMRmlsZVBhdGgsIHNp emVvZihXQUxGaWxlUGF0aCksICIlcy8lcyIsCi0JCQkJCQkgYXJjaGl2ZUxvY2F0aW9uLCB4bGRl LT5kX25hbWUpOwotCi0JCQkJaWYgKGRyeXJ1bikKLQkJCQl7Ci0JCQkJCS8qCi0JCQkJCSAqIFBy aW50cyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkIGFuZCBza2lwcyB0aGUKLQkJ CQkJICogYWN0dWFsIHJlbW92YWwuICBUaGUgcmVndWxhciBwcmludG91dCBpcyBzbyB0aGF0IHRo ZQotCQkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRwdXQgaW50byBzb21lIG90aGVyIHByb2dy YW0uCi0JCQkJCSAqLwotCQkJCQlwcmludGYoIiVzXG4iLCBXQUxGaWxlUGF0aCk7Ci0JCQkJCXBn X2xvZ19kZWJ1ZygiZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZpbGVQYXRoKTsK LQkJCQkJY29udGludWU7Ci0JCQkJfQotCi0JCQkJcGdfbG9nX2RlYnVnKCJyZW1vdmluZyBmaWxl IFwiJXNcIiIsIFdBTEZpbGVQYXRoKTsKLQotCQkJCXJjID0gdW5saW5rKFdBTEZpbGVQYXRoKTsK LQkJCQlpZiAocmMgIT0gMCkKLQkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZW1vdmUgZmlsZSBc IiVzXCI6ICVtIiwKLQkJCQkJCQkgV0FMRmlsZVBhdGgpOworCQkJCXByaW50ZigiJXNcbiIsIFdB TEZpbGVQYXRoKTsKKwkJCQlwZ19sb2dfZGVidWcoImZpbGUgXCIlc1wiIHdvdWxkIGJlIHJlbW92 ZWQiLCBXQUxGaWxlUGF0aCk7CisJCQkJY29udGludWU7CiAJCQl9CisKKwkJCXBnX2xvZ19kZWJ1 ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBXQUxGaWxlUGF0aCk7CisKKwkJCXJjID0gdW5saW5r KFdBTEZpbGVQYXRoKTsKKwkJCWlmIChyYyAhPSAwKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg cmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkgV0FMRmlsZVBhdGgpOwogCQl9CiAKIAkJ aWYgKGVycm5vKQpAQCAtMjU0LDYgKzI2Nyw3IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIlxu T3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgICAgICAg Z2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2ZXJib3NlIG1vZGUpXG4iKSk7CiAJcHJpbnRmKF8oIiAg LW4sIC0tZHJ5LXJ1biAgICAgICAgICAgICAgIGRyeSBydW4sIHNob3cgdGhlIG5hbWVzIG9mIHRo ZSBmaWxlcyB0aGF0IHdvdWxkIGJlIHJlbW92ZWRcbiIpKTsKKwlwcmludGYoXygiICAtYiwgLS1j bGVhbi1iYWNrdXAtaGlzdG9yeSAgY2xlYW4gdXAgZmlsZXMgaW5jbHVkaW5nIGJhY2t1cCBoaXN0 b3J5IGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAg IG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygi ICAteCAtLXN0cmlwLWV4dGVuc2lvbj1FWFQgICAgY2xlYW4gdXAgZmlsZXMgaWYgdGhleSBoYXZl IHRoaXMgZXh0ZW5zaW9uXG4iKSk7CiAJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAg ICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKQEAgLTI3NSw2ICsyODksNyBA QCBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0YXRpYyBzdHJ1Y3Qgb3B0 aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ImNsZWFuLWJhY2t1cC1oaXN0b3J5Iiwgbm9fYXJn dW1lbnQsIE5VTEwsICdiJ30sCiAJCXsiZGVidWciLCBub19hcmd1bWVudCwgTlVMTCwgJ2QnfSwK IAkJeyJkcnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEwsICduJ30sCiAJCXsic3RyaXAtZXh0ZW5z aW9uIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCkBAIC0zMDAsMTAgKzMxNSwxMyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJfQogCX0KIAotCXdoaWxlICgoYyA9IGdl dG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJkbng6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEp CisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImJkbng6IiwgbG9uZ19vcHRp b25zLCBOVUxMKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGMpCiAJCXsKKwkJCWNhc2UgJ2InOiAJ CQkvKiBSZW1vdmUgYmFja3VwIGhpc3RvcnkgZmlsZXMgdG9vICovCisJCQkJY2xlYW5CYWNrdXBI aXN0b3J5ID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ2QnOgkJCS8qIERlYnVnIG1vZGUg Ki8KIAkJCQlwZ19sb2dnaW5nX2luY3JlYXNlX3ZlcmJvc2l0eSgpOwogCQkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC90LzAxMF9wZ19hcmNoaXZlY2xlYW51 cC5wbCBiL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvdC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAu cGwKaW5kZXggY2MzMzg2ZDE0Ni4uZWUyZjcxNGMyYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19h cmNoaXZlY2xlYW51cC90LzAxMF9wZ19hcmNoaXZlY2xlYW51cC5wbAorKysgYi9zcmMvYmluL3Bn X2FyY2hpdmVjbGVhbnVwL3QvMDEwX3BnX2FyY2hpdmVjbGVhbnVwLnBsCkBAIC0xMiwxMyArMTIs MTggQEAgcHJvZ3JhbV9vcHRpb25zX2hhbmRsaW5nX29rKCdwZ19hcmNoaXZlY2xlYW51cCcpOwog CiBteSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogCi1teSBA d2FsZmlsZXMgPSAoCitteSBAd2FsZmlsZXNfd2l0aF9neiA9ICgKIAknMDAwMDAwMDEwMDAwMDAz NzAwMDAwMDBDLmd6JywgJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAwRCcsCiAJJzAwMDAwMDAxMDAw MDAwMzcwMDAwMDAwRScsICcwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEYucGFydGlhbCcsKTsKIAor bXkgQHdhbGZpbGVzX3dpdGhfYmFja3VwID0gKAorCScwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEQn LAorCScwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEQuMDAwMDAwMjguYmFja3VwJywKKwknMDAwMDAw MDEwMDAwMDAzNzAwMDAwMDBFJywgICAgJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAwRi5wYXJ0aWFs JywpOworCiBzdWIgY3JlYXRlX2ZpbGVzCiB7Ci0JZm9yZWFjaCBteSAkZm4gKEB3YWxmaWxlcywg J3VucmVsYXRlZF9maWxlJykKKwlmb3JlYWNoIG15ICRmbiAoQF8sICd1bnJlbGF0ZWRfZmlsZScp CiAJewogCQlvcGVuIG15ICRmaWxlLCAnPicsICIkdGVtcGRpci8kZm4iOwogCQlwcmludCAkZmls ZSAnQ09OVEVOVCc7CkBAIC0yNyw3ICszMiw3IEBAIHN1YiBjcmVhdGVfZmlsZXMKIAlyZXR1cm47 CiB9CiAKLWNyZWF0ZV9maWxlcygpOworY3JlYXRlX2ZpbGVzKEB3YWxmaWxlc193aXRoX2d6KTsK IAogY29tbWFuZF9mYWlsc19saWtlKAogCVsncGdfYXJjaGl2ZWNsZWFudXAnXSwKQEAgLTU5LDE0 ICs2NCwxNCBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJbXkgJHN0ZGVycjsKIAlteSAkcmVzdWx0 ID0KIAkgIElQQzo6UnVuOjpydW4gWyAncGdfYXJjaGl2ZWNsZWFudXAnLCAnLWQnLCAnLW4nLCAk dGVtcGRpciwKLQkJJHdhbGZpbGVzWzJdIF0sCisJCSR3YWxmaWxlc193aXRoX2d6WzJdIF0sCiAJ ICAnMj4nLCBcJHN0ZGVycjsKIAlvaygkcmVzdWx0LCAicGdfYXJjaGl2ZWNsZWFudXAgZHJ5IHJ1 bjogZXhpdCBjb2RlIDAiKTsKIAlsaWtlKAogCQkkc3RkZXJyLAotCQlxci8kd2FsZmlsZXNbMV0u KndvdWxkIGJlIHJlbW92ZWQvLAorCQlxci8kd2FsZmlsZXNfd2l0aF9nelsxXS4qd291bGQgYmUg cmVtb3ZlZC8sCiAJCSJwZ19hcmNoaXZlY2xlYW51cCBkcnkgcnVuOiBtYXRjaGVzIik7Ci0JZm9y ZWFjaCBteSAkZm4gKEB3YWxmaWxlcykKKwlmb3JlYWNoIG15ICRmbiAoQHdhbGZpbGVzX3dpdGhf Z3opCiAJewogCQlvaygtZiAiJHRlbXBkaXIvJGZuIiwgIiRmbiBub3QgcmVtb3ZlZCIpOwogCX0K QEAgLTc2LDMyICs4MSwzNyBAQCBzdWIgcnVuX2NoZWNrCiB7CiAJbG9jYWwgJFRlc3Q6OkJ1aWxk ZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAotCW15ICgkc3VmZml4LCAk dGVzdF9uYW1lKSA9IEBfOworCW15ICgkd2FsZmlsZXMsICRzdWZmaXgsICR0ZXN0X25hbWUsIEBv cHRpb25zKSA9IEBfOwogCi0JY3JlYXRlX2ZpbGVzKCk7CisJY3JlYXRlX2ZpbGVzKFxAJHdhbGZp bGVzKTsKIAogCWNvbW1hbmRfb2soCiAJCVsKLQkJCSdwZ19hcmNoaXZlY2xlYW51cCcsICcteCcs ICcuZ3onLCAkdGVtcGRpciwKLQkJCSR3YWxmaWxlc1syXSAuICRzdWZmaXgKKwkJCSdwZ19hcmNo aXZlY2xlYW51cCcsIEBvcHRpb25zLCAkdGVtcGRpciwKKwkJCUAkd2FsZmlsZXNbMl0gLiAkc3Vm Zml4CiAJCV0sCiAJCSIkdGVzdF9uYW1lOiBydW5zIik7CiAKLQlvayghLWYgIiR0ZW1wZGlyLyR3 YWxmaWxlc1swXSIsCisJb2soIS1mICIkdGVtcGRpci9AJHdhbGZpbGVzWzBdIiwKIAkJIiR0ZXN0 X25hbWU6IGZpcnN0IG9sZGVyIFdBTCBmaWxlIHdhcyBjbGVhbmVkIHVwIik7Ci0Jb2soIS1mICIk dGVtcGRpci8kd2FsZmlsZXNbMV0iLAotCQkiJHRlc3RfbmFtZTogc2Vjb25kIG9sZGVyIFdBTCBm aWxlIHdhcyBjbGVhbmVkIHVwIik7Ci0Jb2soLWYgIiR0ZW1wZGlyLyR3YWxmaWxlc1syXSIsCisJ b2soIS1mICIkdGVtcGRpci9AJHdhbGZpbGVzWzFdIiwKKwkJIiR0ZXN0X25hbWU6IHNlY29uZCBv bGRlciBXQUwvYmFja3VwIGhpc3RvcnkgZmlsZSB3YXMgY2xlYW5lZCB1cCIpOworCW9rKC1mICIk dGVtcGRpci9AJHdhbGZpbGVzWzJdIiwKIAkJIiR0ZXN0X25hbWU6IHJlc3RhcnRmaWxlIHdhcyBu b3QgY2xlYW5lZCB1cCIpOwotCW9rKC1mICIkdGVtcGRpci8kd2FsZmlsZXNbM10iLAorCW9rKC1m ICIkdGVtcGRpci9AJHdhbGZpbGVzWzNdIiwKIAkJIiR0ZXN0X25hbWU6IG5ld2VyIFdBTCBmaWxl IHdhcyBub3QgY2xlYW5lZCB1cCIpOwogCW9rKC1mICIkdGVtcGRpci91bnJlbGF0ZWRfZmlsZSIs CiAJCSIkdGVzdF9uYW1lOiB1bnJlbGF0ZWQgZmlsZSB3YXMgbm90IGNsZWFuZWQgdXAiKTsKIAly ZXR1cm47CiB9CiAKLXJ1bl9jaGVjaygnJywgJ3BnX2FyY2hpdmVjbGVhbnVwJyk7Ci1ydW5fY2hl Y2soJy5wYXJ0aWFsJywgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLnBhcnRpYWwgZmlsZScpOwot cnVuX2NoZWNrKCcuMDAwMDAwMjAuYmFja3VwJywgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLmJh Y2t1cCBmaWxlJyk7CitydW5fY2hlY2soXEB3YWxmaWxlc193aXRoX2d6LCAnJywKKwkncGdfYXJj aGl2ZWNsZWFudXAnLCAnLXguZ3onKTsKK3J1bl9jaGVjayhcQHdhbGZpbGVzX3dpdGhfZ3osICcu cGFydGlhbCcsCisJJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLnBhcnRpYWwgZmlsZScsICcteC5n eicpOworcnVuX2NoZWNrKFxAd2FsZmlsZXNfd2l0aF9neiwgJy4wMDAwMDAyMC5iYWNrdXAnLAor CSdwZ19hcmNoaXZlY2xlYW51cCB3aXRoIC5iYWNrdXAgZmlsZScsICcteC5neicpOworcnVuX2No ZWNrKFxAd2FsZmlsZXNfd2l0aF9iYWNrdXAsICcnLAorCSdwZ19hcmNoaXZlY2xlYW51cCB3aXRo IC0tY2xlYW4tYmFja3VwLWhpc3RvcnknLCAnLWInKTsKIAogZG9uZV90ZXN0aW5nKCk7Ci0tIAoy LjM5LjIKCg== --=_3062c9464633ae8547225b3f00f89213--