From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: util-linux-owner@vger.kernel.org Received: from mx4-phx2.redhat.com ([209.132.183.25]:53570 "EHLO mx4-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752947AbaG2LcG (ORCPT ); Tue, 29 Jul 2014 07:32:06 -0400 Date: Tue, 29 Jul 2014 07:32:03 -0400 (EDT) From: Jaromir Capik To: Karel Zak Cc: kerolasa@gmail.com, util-linux Message-ID: <1340617573.25924027.1406633523481.JavaMail.zimbra@redhat.com> In-Reply-To: <20140728151034.GM8533@x2.net.home> References: <844628876.22654954.1406302034993.JavaMail.zimbra@redhat.com> <2139170067.22662578.1406302189694.JavaMail.zimbra@redhat.com> <969740755.24655086.1406558319251.JavaMail.zimbra@redhat.com> <20140728151034.GM8533@x2.net.home> Subject: Re: [PATCH] fdformat: Add new switches -f/--from, -t/--to, -r/--repair MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_25924025_1595299629.1406633523479" Sender: util-linux-owner@vger.kernel.org List-ID: ------=_Part_25924025_1595299629.1406633523479 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hello guys. The reworked patch is attached. Please, review once more. Thanks, Jaromir. -- Jaromir Capik Red Hat Czech, s.r.o. Software Engineer / Secondary Arch Email: jcapik@redhat.com Web: www.cz.redhat.com Red Hat Czech s.r.o., Purkynova 99/71, 612 45, Brno, Czech Republic IC: 27690016 ------=_Part_25924025_1595299629.1406633523479 Content-Type: text/x-patch; name=fdformat-from-to-repair.patch Content-Disposition: attachment; filename=fdformat-from-to-repair.patch Content-Transfer-Encoding: base64 RnJvbSA5Yjk5NTRlYzcwOWNkYjViYTQ0YjE0MmFhOTZkYWM5ZmRjMDljYWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJvbWlyIENhcGlrIDxqY2FwaWtAcmVkaGF0LmNvbT4KRGF0 ZTogTW9uLCAyOCBKdWwgMjAxNCAyMDo0NzowOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIGZkZm9y bWF0OiBBZGQgbmV3IHN3aXRjaGVzIC1mLy0tZnJvbSwgLXQvLS10bywgLXIvLS1yZXBhaXIKClRo aXMgY29tbWl0IGludHJvZHVjZXMgYSBzdXBwb3J0IGZvciB1c2VyIGNvbmZpZ3VyYWJsZQpmcm9t L3RvIHRyYWNrIGFuZCBhIGJhc2ljIHJlcGFpciBtb2RlIGZvciBicm9rZW4gZmxvcHBpZXMuCkl0 IGFsc28gZml4ZXMgYSByZWNlbnRseSBpbnRyb2R1Y2VkIGJ1ZyB0aGF0IGNhdXNlcwphIGxpbmUg YnJlYWthZ2Ugd2hlbiBwcmludGluZyB0aGUgdHJhY2sgbnVtYmVyLgotLS0KIGRpc2stdXRpbHMv TWFrZW1vZHVsZS5hbSB8ICAgMSArCiBkaXNrLXV0aWxzL2ZkZm9ybWF0LjggICAgfCAgMTEgKyst CiBkaXNrLXV0aWxzL2ZkZm9ybWF0LmMgICAgfCAyMTAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMo KyksIDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rpc2stdXRpbHMvTWFrZW1vZHVsZS5h bSBiL2Rpc2stdXRpbHMvTWFrZW1vZHVsZS5hbQppbmRleCBjNjE4M2Y1Li45OTVlMDg1IDEwMDY0 NAotLS0gYS9kaXNrLXV0aWxzL01ha2Vtb2R1bGUuYW0KKysrIGIvZGlzay11dGlscy9NYWtlbW9k dWxlLmFtCkBAIC0xMTAsNiArMTEwLDcgQEAgaWYgQlVJTERfRkRGT1JNQVQKIHVzcnNiaW5fZXhl Y19QUk9HUkFNUyArPSBmZGZvcm1hdAogZGlzdF9tYW5fTUFOUyArPSBkaXNrLXV0aWxzL2ZkZm9y bWF0LjgKIGZkZm9ybWF0X1NPVVJDRVMgPSBkaXNrLXV0aWxzL2ZkZm9ybWF0LmMKK2ZkZm9ybWF0 X0xEQUREID0gJChMREFERCkgbGliY29tbW9uLmxhCiBlbmRpZgogCiBpZiBCVUlMRF9CTE9DS0RF VgpkaWZmIC0tZ2l0IGEvZGlzay11dGlscy9mZGZvcm1hdC44IGIvZGlzay11dGlscy9mZGZvcm1h dC44CmluZGV4IGRmNDE1M2YuLjc5N2Y1MGYgMTAwNjQ0Ci0tLSBhL2Rpc2stdXRpbHMvZmRmb3Jt YXQuOAorKysgYi9kaXNrLXV0aWxzL2ZkZm9ybWF0LjgKQEAgLTEsNiArMSw2IEBACiAuXCIgQ29w eXJpZ2h0IDE5OTIsIDE5OTMgUmlja2FyZCBFLiBGYWl0aCAoZmFpdGhAY3MudW5jLmVkdSkKIC5c IiBNYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0uVEggRkRGT1JNQVQgOCAiSnVseSAyMDExIiAidXRpbC1saW51eCIgIlN5c3RlbSBBZG1pbmlz dHJhdGlvbiIKKy5USCBGREZPUk1BVCA4ICJKdWx5IDIwMTQiICJ1dGlsLWxpbnV4IiAiU3lzdGVt IEFkbWluaXN0cmF0aW9uIgogLlNIIE5BTUUKIGZkZm9ybWF0IFwtIGxvdy1sZXZlbCBmb3JtYXQg YSBmbG9wcHkgZGlzawogLlNIIFNZTk9QU0lTCkBAIC00NSw2ICs0NSwxNSBAQCBhdXRvZGV0ZWN0 ZWQgZWFybGllci4gIEluIHRoaXMgY2FzZSwgdXNlCiB0byBsb2FkIHRoZSBkaXNrIHBhcmFtZXRl cnMuCiAuU0ggT1BUSU9OUwogLlRQCitcZkJcLWZcZlIsIFxmQlwtXC1mcm9tXGZSIFxmSU5cZlIK K1N0YXJ0IGF0IHRoZSB0cmFjayBcZklOXGZSIChkZWZhdWx0IGlzIDApLgorLlRQCitcZkJcLXRc ZlIsIFxmQlwtXC10b1xmUiBcZklOXGZSCitTdG9wIGF0IHRoZSB0cmFjayBcZklOXGZSIChkZWZh dWx0IGlzIDApLgorLlRQCitcZkJcLXJcZlIsIFxmQlwtXC1yZXBhaXJcZlIgXGZJTlxmUgorVHJ5 IHRvIHJlcGFpciB0cmFja3MgZmFpbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIChtYXggXGZJ TlxmUiByZXRyaWVzKS4KKy5UUAogXGZCXC1uXGZSLCBcZkJcLVwtbm8tdmVyaWZ5XGZSCiBTa2lw IHRoZSB2ZXJpZmljYXRpb24gdGhhdCBpcyBub3JtYWxseSBwZXJmb3JtZWQgYWZ0ZXIgdGhlIGZv cm1hdHRpbmcuCiAuVFAKZGlmZiAtLWdpdCBhL2Rpc2stdXRpbHMvZmRmb3JtYXQuYyBiL2Rpc2st dXRpbHMvZmRmb3JtYXQuYwppbmRleCBlNmFlOGU0Li5kYzk4ZGU1IDEwMDY0NAotLS0gYS9kaXNr LXV0aWxzL2ZkZm9ybWF0LmMKKysrIGIvZGlzay11dGlscy9mZGZvcm1hdC5jCkBAIC0xMiw4MiAr MTIsMTI5IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJjLmgiCisjaW5jbHVk ZSAic3RydXRpbHMuaCIKICNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgogI2luY2x1ZGUgIm5scy5o IgogI2luY2x1ZGUgInhhbGxvYy5oIgogCisjZGVmaW5lIFNFQ1RPUl9TSVpFIDUxMgorCiBzdHJ1 Y3QgZmxvcHB5X3N0cnVjdCBwYXJhbTsKIAotI2RlZmluZSBTRUNUT1JfU0laRSA1MTIKIAotc3Rh dGljIHZvaWQgZm9ybWF0X2Rpc2soaW50IGN0cmwpCitzdGF0aWMgdm9pZCBmb3JtYXRfYmVnaW4o aW50IGN0cmwpCiB7Ci0Jc3RydWN0IGZvcm1hdF9kZXNjciBkZXNjcjsKLQl1bnNpZ25lZCBpbnQg dHJhY2s7CisJaWYgKGlvY3RsKGN0cmwsIEZERk1UQkVHLCBOVUxMKSA8IDApCisJCWVycihFWElU X0ZBSUxVUkUsICJpb2N0bDogRkRGTVRCRUciKTsKK30KKworc3RhdGljIHZvaWQgZm9ybWF0X2Vu ZChpbnQgY3RybCkKK3sKKwlpZiAoaW9jdGwoY3RybCwgRkRGTVRFTkQsIE5VTEwpIDwgMCkKKwkJ ZXJyKEVYSVRfRkFJTFVSRSwgImlvY3RsOiBGREZNVEVORCIpOworfQorCitzdGF0aWMgdm9pZCBm b3JtYXRfdHJhY2tfaGVhZChpbnQgY3RybCwgc3RydWN0IGZvcm1hdF9kZXNjciAqZGVzY3IpCit7 CisJaWYgKGlvY3RsKGN0cmwsIEZERk1UVFJLLCAobG9uZykgZGVzY3IpIDwgMCkKKwkJZXJyKEVY SVRfRkFJTFVSRSwgImlvY3RsOiBGREZNVFRSSyIpOworfQorCitzdGF0aWMgdm9pZCBzZWVrX3Ry YWNrX2hlYWQoaW50IGN0cmwsIHN0cnVjdCBmb3JtYXRfZGVzY3IgKmRlc2NyKQoreworCWxzZWVr KGN0cmwsIChkZXNjci0+dHJhY2sgKiBwYXJhbS5oZWFkICsgZGVzY3ItPmhlYWQpICogcGFyYW0u c2VjdCAqIFNFQ1RPUl9TSVpFLCBTRUVLX1NFVCk7Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1hdF9k aXNrKGludCBjdHJsLCB1bnNpZ25lZCBpbnQgdHJhY2tfZnJvbSwgdW5zaWduZWQgaW50IHRyYWNr X3RvKQoreworCXN0cnVjdCBmb3JtYXRfZGVzY3IgY3VycmVudDsKIAogCXByaW50ZihfKCJGb3Jt YXR0aW5nIC4uLiAiKSk7CiAJZmZsdXNoKHN0ZG91dCk7Ci0JaWYgKGlvY3RsKGN0cmwsIEZERk1U QkVHLCBOVUxMKSA8IDApCi0JCWVycihFWElUX0ZBSUxVUkUsICJpb2N0bDogRkRGTVRCRUciKTsK LQlmb3IgKHRyYWNrID0gMDsgdHJhY2sgPCBwYXJhbS50cmFjazsgdHJhY2srKykgewotCQlkZXNj ci50cmFjayA9IHRyYWNrOwotCQlkZXNjci5oZWFkID0gMDsKLQkJaWYgKGlvY3RsKGN0cmwsIEZE Rk1UVFJLLCAobG9uZykgJmRlc2NyKSA8IDApCi0JCQllcnIoRVhJVF9GQUlMVVJFLCAiaW9jdGw6 IEZERk1UVFJLIik7Ci0KLQkJcHJpbnRmKCIlM3VkXGJcYlxiIiwgdHJhY2spOwotCQlmZmx1c2go c3Rkb3V0KTsKLQkJaWYgKHBhcmFtLmhlYWQgPT0gMikgewotCQkJZGVzY3IuaGVhZCA9IDE7Ci0J CQlpZiAoaW9jdGwoY3RybCwgRkRGTVRUUkssIChsb25nKSZkZXNjcikgPCAwKQotCQkJCWVycihF WElUX0ZBSUxVUkUsICJpb2N0bDogRkRGTVRUUksiKTsKKworCWZvcm1hdF9iZWdpbihjdHJsKTsK KworCWZvciAoY3VycmVudC50cmFjayA9IHRyYWNrX2Zyb207IGN1cnJlbnQudHJhY2sgPD0gdHJh Y2tfdG87IGN1cnJlbnQudHJhY2srKykgeworCQlmb3IgKGN1cnJlbnQuaGVhZCA9IDA7IGN1cnJl bnQuaGVhZCA8IHBhcmFtLmhlYWQ7IGN1cnJlbnQuaGVhZCsrKSB7CisJCQlwcmludGYoIiUzdS8l dVxiXGJcYlxiXGIiLCBjdXJyZW50LnRyYWNrLCBjdXJyZW50LmhlYWQpOworCQkJZmZsdXNoKHN0 ZG91dCk7CisJCQlmb3JtYXRfdHJhY2tfaGVhZChjdHJsLCAmY3VycmVudCk7CiAJCX0KIAl9Ci0J aWYgKGlvY3RsKGN0cmwsIEZERk1URU5ELCBOVUxMKSA8IDApCi0JCWVycihFWElUX0ZBSUxVUkUs ICJpb2N0bDogRkRGTVRFTkQiKTsKKworCWZvcm1hdF9lbmQoY3RybCk7CisKIAlwcmludGYoXygi ZG9uZVxuIikpOwogfQogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfZGlzayhjaGFyICpuYW1lKQorc3Rh dGljIHZvaWQgdmVyaWZ5X2Rpc2soaW50IGN0cmwsIHVuc2lnbmVkIGludCB0cmFja19mcm9tLCB1 bnNpZ25lZCBpbnQgdHJhY2tfdG8sIHVuc2lnbmVkIGludCByZXBhaXIpCiB7CiAJdW5zaWduZWQg Y2hhciAqZGF0YTsKLQl1bnNpZ25lZCBpbnQgY3lsOwotCWludCBmZCwgY3lsX3NpemUsIGNvdW50 OworCXN0cnVjdCBmb3JtYXRfZGVzY3IgY3VycmVudDsKKwlpbnQgdHJhY2tfc2l6ZSwgY291bnQ7 CisJdW5zaWduZWQgaW50IHJldHJpZXNfbGVmdDsKIAotCWN5bF9zaXplID0gcGFyYW0uc2VjdCAq IHBhcmFtLmhlYWQgKiA1MTI7Ci0JZGF0YSA9IHhtYWxsb2MoY3lsX3NpemUpOworCXRyYWNrX3Np emUgPSBwYXJhbS5zZWN0ICogU0VDVE9SX1NJWkU7CisJZGF0YSA9IHhtYWxsb2ModHJhY2tfc2l6 ZSk7CiAJcHJpbnRmKF8oIlZlcmlmeWluZyAuLi4gIikpOwogCWZmbHVzaChzdGRvdXQpOwotCWlm ICgoZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZKSkgPCAwKQotCQllcnIoRVhJVF9GQUlMVVJFLCBf KCJjYW5ub3Qgb3BlbiAlcyIpLCBuYW1lKTsKLQlmb3IgKGN5bCA9IDA7IGN5bCA8IHBhcmFtLnRy YWNrOyBjeWwrKykgewotCQlpbnQgcmVhZF9ieXRlczsKLQotCQlwcmludGYoIiV1M2RcYlxiXGIi LCBjeWwpOwotCQlmZmx1c2goc3Rkb3V0KTsKLQkJcmVhZF9ieXRlcyA9IHJlYWQoZmQsIGRhdGEs IGN5bF9zaXplKTsKLQkJaWYgKHJlYWRfYnl0ZXMgIT0gY3lsX3NpemUpIHsKLQkJCWlmIChyZWFk X2J5dGVzIDwgMCkKLQkJCQlwZXJyb3IoXygiUmVhZDogIikpOwotCQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJXygiUHJvYmxlbSByZWFkaW5nIGN5bGluZGVyICVkLCIKLQkJCQkgICIgZXhwZWN0ZWQg JWQsIHJlYWQgJWRcbiIpLAotCQkJCWN5bCwgY3lsX3NpemUsIHJlYWRfYnl0ZXMpOwotCQkJZnJl ZShkYXRhKTsKLQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLQkJfQotCQlmb3IgKGNvdW50ID0gMDsg Y291bnQgPCBjeWxfc2l6ZTsgY291bnQrKykKLQkJCWlmIChkYXRhW2NvdW50XSAhPSBGRF9GSUxM X0JZVEUpIHsKLQkJCQlwcmludGYoXygiYmFkIGRhdGEgaW4gY3lsICVkXG4iCi0JCQkJCSAiQ29u dGludWluZyAuLi4gIiksIGN5bCk7Ci0JCQkJZmZsdXNoKHN0ZG91dCk7CisKKwljdXJyZW50LnRy YWNrID0gdHJhY2tfZnJvbTsKKwljdXJyZW50LmhlYWQgPSAwOworCXNlZWtfdHJhY2tfaGVhZCAo Y3RybCwgJmN1cnJlbnQpOworCisJZm9yIChjdXJyZW50LnRyYWNrID0gdHJhY2tfZnJvbTsgY3Vy cmVudC50cmFjayA8PSB0cmFja190bzsgY3VycmVudC50cmFjaysrKSB7CisJCWZvciAoY3VycmVu dC5oZWFkID0gMDsgY3VycmVudC5oZWFkIDwgcGFyYW0uaGVhZDsgY3VycmVudC5oZWFkKyspIHsK KwkJCWludCByZWFkX2J5dGVzOworCisJCQlwcmludGYoIiUzdVxiXGJcYiIsIGN1cnJlbnQudHJh Y2spOworCQkJZmZsdXNoKHN0ZG91dCk7CisKKwkJCXJldHJpZXNfbGVmdCA9IHJlcGFpcjsKKwkJ CWRvIHsKKwkJCQlyZWFkX2J5dGVzID0gcmVhZChjdHJsLCBkYXRhLCB0cmFja19zaXplKTsKKwkJ CQlpZiAocmVhZF9ieXRlcyAhPSB0cmFja19zaXplKSB7CisJCQkJCWlmIChyZXRyaWVzX2xlZnQp IHsKKwkJCQkJCWZvcm1hdF9iZWdpbihjdHJsKTsKKwkJCQkJCWZvcm1hdF90cmFja19oZWFkKGN0 cmwsICZjdXJyZW50KTsKKwkJCQkJCWZvcm1hdF9lbmQoY3RybCk7CisJCQkJCQlzZWVrX3RyYWNr X2hlYWQgKGN0cmwsICZjdXJyZW50KTsKKwkJCQkJCXJldHJpZXNfbGVmdC0tOworCQkJCQkJaWYg KHJldHJpZXNfbGVmdCkKKwkJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCQkJCQlpZiAocmVhZF9i eXRlcyA8IDApCisJCQkJCQlwZXJyb3IoXygiUmVhZDogIikpOworCQkJCQlmcHJpbnRmKHN0ZGVy ciwKKwkJCQkJCV8oIlByb2JsZW0gcmVhZGluZyB0cmFjay9oZWFkICV1LyV1LCIKKwkJCQkJCSAg IiBleHBlY3RlZCAlZCwgcmVhZCAlZFxuIiksCisJCQkJCQljdXJyZW50LnRyYWNrLCBjdXJyZW50 LmhlYWQsIHRyYWNrX3NpemUsIHJlYWRfYnl0ZXMpOworCQkJCQlmcmVlKGRhdGEpOworCQkJCQll eGl0KEVYSVRfRkFJTFVSRSk7CisJCQkJfQorCQkJCWZvciAoY291bnQgPSAwOyBjb3VudCA8IHRy YWNrX3NpemU7IGNvdW50KyspCisJCQkJCWlmIChkYXRhW2NvdW50XSAhPSBGRF9GSUxMX0JZVEUp IHsKKwkJCQkJCWlmIChyZXRyaWVzX2xlZnQpIHsKKwkJCQkJCQlmb3JtYXRfYmVnaW4oY3RybCk7 CisJCQkJCQkJZm9ybWF0X3RyYWNrX2hlYWQoY3RybCwgJmN1cnJlbnQpOworCQkJCQkJCWZvcm1h dF9lbmQoY3RybCk7CisJCQkJCQkJc2Vla190cmFja19oZWFkIChjdHJsLCAmY3VycmVudCk7CisJ CQkJCQkJcmV0cmllc19sZWZ0LS07CisJCQkJCQkJaWYgKHJldHJpZXNfbGVmdCkKKwkJCQkJCQkJ Y29udGludWU7CisJCQkJCQl9CisJCQkJCQlwcmludGYoXygiYmFkIGRhdGEgaW4gdHJhY2svaGVh ZCAldS8ldVxuIgorCQkJCQkJCSAiQ29udGludWluZyAuLi4gIiksIGN1cnJlbnQudHJhY2ssIGN1 cnJlbnQuaGVhZCk7CisJCQkJCQlmZmx1c2goc3Rkb3V0KTsKKwkJCQkJCWJyZWFrOworCQkJCQl9 CiAJCQkJYnJlYWs7Ci0JCQl9CisJCQl9IHdoaWxlIChyZXRyaWVzX2xlZnQpOworCQl9CiAJfQor CiAJZnJlZShkYXRhKTsKIAlwcmludGYoXygiZG9uZVxuIikpOwotCWlmIChjbG9zZShmZCkgPCAw KQotCQllcnIoRVhJVF9GQUlMVVJFLCAiY2xvc2UiKTsKIH0KIAogc3RhdGljIHZvaWQgX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpIHVzYWdlKEZJTEUgKiBvdXQpCkBAIC05Niw5ICsxNDMs MTMgQEAgc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpIHVzYWdlKEZJ TEUgKiBvdXQpCiAJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKIAogCWZwcmludGYo b3V0LCBfKCJcbk9wdGlvbnM6XG4iCi0JCSAgICAgICAiIC1uLCAtLW5vLXZlcmlmeSAgZGlzYWJs ZSB0aGUgdmVyaWZpY2F0aW9uIGFmdGVyIHRoZSBmb3JtYXRcbiIKLQkJICAgICAgICIgLVYsIC0t dmVyc2lvbiAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdFxuIgotCQkgICAg ICAgIiAtaCwgLS1oZWxwICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0XG5cbiIpKTsK KwkJICAgICAgICIgLWYsIC0tZnJvbSA8Tj4gICAgc3RhcnQgYXQgdGhlIHRyYWNrIE4gKGRlZmF1 bHQgMClcbiIKKwkJICAgICAgICIgLXQsIC0tdG8gPE4+ICAgICAgc3RvcCBhdCB0aGUgdHJhY2sg TlxuIgorCQkgICAgICAgIiAtciwgLS1yZXBhaXIgPE4+ICB0cnkgdG8gcmVwYWlyIHRyYWNrcyBm YWlsZWQgZHVyaW5nXG4iCisJCSAgICAgICAiICAgICAgICAgICAgICAgICAgIHRoZSB2ZXJpZmlj YXRpb24gKG1heCBOIHJldHJpZXMpXG4iCisJCSAgICAgICAiIC1uLCAtLW5vLXZlcmlmeSAgIGRp c2FibGUgdGhlIHZlcmlmaWNhdGlvbiBhZnRlciB0aGUgZm9ybWF0XG4iCisJCSAgICAgICAiIC1W LCAtLXZlcnNpb24gICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0XG4iCisJ CSAgICAgICAiIC1oLCAtLWhlbHAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0XG5c biIpKTsKIAogCWV4aXQob3V0ID09IHN0ZGVyciA/IEVYSVRfRkFJTFVSRSA6IEVYSVRfU1VDQ0VT Uyk7CiB9CkBAIC0xMDgsMjIgKzE1OSw0MCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJaW50IGNoOwogCWludCBjdHJsOwogCWludCB2ZXJpZnkgPSAxOworCXVuc2lnbmVkIGlu dCByZXBhaXIgPSAwOworCXVuc2lnbmVkIGludCB0cmFja19mcm9tID0gMDsKKwl1bnNpZ25lZCBp bnQgdHJhY2tfdG8gPSAwOworCWludCBoYXNfdXNlcl9kZWZpbmVkX3RyYWNrX3RvID0gMDsKIAlz dHJ1Y3Qgc3RhdCBzdDsKIAogCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvbmdvcHRzW10g PSB7CisJCXsiZnJvbSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZid9LAorCQl7InRvIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0J30sCisJCXsicmVwYWlyIiwgcmVxdWlyZWRfYXJn dW1lbnQsIE5VTEwsICdyJ30sCiAJCXsibm8tdmVyaWZ5Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdu J30sCiAJCXsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnVid9LAogCQl7ImhlbHAiLCBu b19hcmd1bWVudCwgTlVMTCwgJ2gnfSwKIAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJfTsKIAorCiAJ c2V0bG9jYWxlKExDX0FMTCwgIiIpOwogCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJ Uik7CiAJdGV4dGRvbWFpbihQQUNLQUdFKTsKIAlhdGV4aXQoY2xvc2Vfc3Rkb3V0KTsKIAotCXdo aWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiblZoIiwgbG9uZ29wdHMsIE5VTEwp KSAhPSAtMSkKKwl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImY6dDpyOm5W aCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpCiAJCXN3aXRjaCAoY2gpIHsKKwkJY2FzZSAnZic6 CisJCQl0cmFja19mcm9tID0gc3RydG91MzJfb3JfZXJyKG9wdGFyZywgXygiaW52YWxpZCBhcmd1 bWVudCAtIGZyb20iKSk7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQloYXNfdXNlcl9kZWZp bmVkX3RyYWNrX3RvID0gMTsKKwkJCXRyYWNrX3RvID0gc3RydG91MzJfb3JfZXJyKG9wdGFyZywg XygiaW52YWxpZCBhcmd1bWVudCAtIHRvIikpOworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJ cmVwYWlyID0gc3RydG91MzJfb3JfZXJyKG9wdGFyZywgXygiaW52YWxpZCBhcmd1bWVudCAtIHJl cGFpciIpKTsKKwkJCWJyZWFrOwogCQljYXNlICduJzoKIAkJCXZlcmlmeSA9IDA7CiAJCQlicmVh azsKQEAgLTE0OSwyMCArMjE4LDMzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAlpZiAoYWNjZXNzKGFyZ3ZbMF0sIFdfT0spIDwgMCkKIAkJZXJyKEVYSVRfRkFJTFVSRSwgXygi Y2Fubm90IGFjY2VzcyBmaWxlICVzIiksIGFyZ3ZbMF0pOwogCi0JY3RybCA9IG9wZW4oYXJndlsw XSwgT19XUk9OTFkpOworCWN0cmwgPSBvcGVuKGFyZ3ZbMF0sIE9fUkRXUik7CiAJaWYgKGN0cmwg PCAwKQogCQllcnIoRVhJVF9GQUlMVVJFLCBfKCJjYW5ub3Qgb3BlbiAlcyIpLCBhcmd2WzBdKTsK LQlpZiAoaW9jdGwoY3RybCwgRkRHRVRQUk0sIChsb25nKSZwYXJhbSkgPCAwKQotCQllcnIoRVhJ VF9GQUlMVVJFLCBfKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGN1cnJlbnQgZm9ybWF0IHR5cGUiKSk7 CisJaWYgKGlvY3RsKGN0cmwsIEZER0VUUFJNLCAobG9uZykgJnBhcmFtKSA8IDApCisJCWVycihF WElUX0ZBSUxVUkUsIF8oImNvdWxkIG5vdCBkZXRlcm1pbmUgY3VycmVudCBmb3JtYXQgdHlwZSIp KTsKIAogCXByaW50ZihfKCIlcy1zaWRlZCwgJWQgdHJhY2tzLCAlZCBzZWMvdHJhY2suIFRvdGFs IGNhcGFjaXR5ICVkIGtCLlxuIiksCi0JICAgICAgIChwYXJhbS5oZWFkID09IDIpID8gXygiRG91 YmxlIikgOiBfKCJTaW5nbGUiKSwKLQkgICAgICAgcGFyYW0udHJhY2ssIHBhcmFtLnNlY3QsIHBh cmFtLnNpemUgPj4gMSk7Ci0JZm9ybWF0X2Rpc2soY3RybCk7Ci0JaWYgKGNsb3NlX2ZkKGN0cmwp ICE9IDApCi0JCWVycihFWElUX0ZBSUxVUkUsIF8oIndyaXRlIGZhaWxlZCIpKTsKKwkJKHBhcmFt LmhlYWQgPT0gMikgPyBfKCJEb3VibGUiKSA6IF8oIlNpbmdsZSIpLAorCQlwYXJhbS50cmFjaywg cGFyYW0uc2VjdCwgcGFyYW0uc2l6ZSA+PiAxKTsKKworCWlmICghaGFzX3VzZXJfZGVmaW5lZF90 cmFja190bykKKwkJdHJhY2tfdG8gPSBwYXJhbS50cmFjayAtIDE7CisKKwlpZiAodHJhY2tfZnJv bSA+PSBwYXJhbS50cmFjaykKKwkJZXJyKEVYSVRfRkFJTFVSRSwgXygidXNlciBkZWZpbmVkIHN0 YXJ0IHRyYWNrIGV4Y2VlZHMgdGhlIG1lZGl1bSBzcGVjaWZpYyBtYXhpbXVtIikpOworCWlmICh0 cmFja190byA+PSBwYXJhbS50cmFjaykKKwkJZXJyKEVYSVRfRkFJTFVSRSwgXygidXNlciBkZWZp bmVkIGVuZCB0cmFjayBleGNlZWRzIHRoZSBtZWRpdW0gc3BlY2lmaWMgbWF4aW11bSIpKTsKKwlp ZiAodHJhY2tfZnJvbSA+IHRyYWNrX3RvKQorCQllcnIoRVhJVF9GQUlMVVJFLCBfKCJ1c2VyIGRl ZmluZWQgc3RhcnQgdHJhY2sgZXhjZWVkcyB0aGUgdXNlciBkZWZpbmVkIGVuZCB0cmFjayIpKTsK KworCWZvcm1hdF9kaXNrKGN0cmwsIHRyYWNrX2Zyb20sIHRyYWNrX3RvKTsKIAogCWlmICh2ZXJp ZnkpCi0JCXZlcmlmeV9kaXNrKGFyZ3ZbMF0pOworCQl2ZXJpZnlfZGlzayhjdHJsLCB0cmFja19m cm9tLCB0cmFja190bywgcmVwYWlyKTsKKworCWlmIChjbG9zZV9mZChjdHJsKSAhPSAwKQorCQll cnIoRVhJVF9GQUlMVVJFLCBfKCJjbG9zZSBmYWlsZWQiKSk7CisKIAlyZXR1cm4gRVhJVF9TVUND RVNTOwogfQotLSAKMS45LjMKCg== ------=_Part_25924025_1595299629.1406633523479--