From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: util-linux-owner@vger.kernel.org Received: from mx3-phx2.redhat.com ([209.132.183.24]:46902 "EHLO mx3-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753170AbaGYP3v (ORCPT ); Fri, 25 Jul 2014 11:29:51 -0400 Received: from zmail15.collab.prod.int.phx2.redhat.com (zmail15.collab.prod.int.phx2.redhat.com [10.5.83.17]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s6PFTokn029691 for ; Fri, 25 Jul 2014 11:29:50 -0400 Date: Fri, 25 Jul 2014 11:29:49 -0400 (EDT) From: Jaromir Capik To: util-linux@vger.kernel.org Message-ID: <2139170067.22662578.1406302189694.JavaMail.zimbra@redhat.com> In-Reply-To: <844628876.22654954.1406302034993.JavaMail.zimbra@redhat.com> Subject: [PATCH] fdformat: Add new switches -f/--from, -t/--to, -r/--repair MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_22662572_267211773.1406302189689" Sender: util-linux-owner@vger.kernel.org List-ID: ------=_Part_22662572_267211773.1406302189689 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hello everyone. The attached patch adds support for user configurable from/to track and a basic repair mode for broken floppies. It also fixes a recently introduced bug that causes line breakage when printing the track number. Please, review and share your feelings / merge. Thanks in advance, 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_22662572_267211773.1406302189689 Content-Type: text/x-patch; name=fdformat-from-to-repair.patch Content-Disposition: attachment; filename=fdformat-from-to-repair.patch Content-Transfer-Encoding: base64 RnJvbSBkMzU0M2NlNTkxZmQzNGE3ODcxNzY5OTM5NTgyMzc4NjQwNDlmYmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJvbWlyIENhcGlrIDxqY2FwaWtAcmVkaGF0LmNvbT4KRGF0 ZTogRnJpLCAyNSBKdWwgMjAxNCAxNzoxNjo1NiArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIGZkZm9y bWF0OiBBZGQgbmV3IHN3aXRjaGVzIC1mLy0tZnJvbSwgLXQvLS10bywgLXIvLS1yZXBhaXIKClRo aXMgY29tbWl0IGludHJvZHVjZXMgYSBzdXBwb3J0IGZvciB1c2VyIGNvbmZpZ3VyYWJsZQpmcm9t L3RvIHRyYWNrIGFuZCBhIGJhc2ljIHJlcGFpciBtb2RlIGZvciBicm9rZW4gZmxvcHBpZXMuCkl0 IGFsc28gZml4ZXMgYSByZWNlbnRseSBpbnRyb2R1Y2VkIGJ1ZyB0aGF0IGNhdXNlcwphIGxpbmUg YnJlYWthZ2Ugd2hlbiBwcmludGluZyB0aGUgdHJhY2sgbnVtYmVyLgotLS0KIGRpc2stdXRpbHMv TWFrZW1vZHVsZS5hbSB8ICAgMSArCiBkaXNrLXV0aWxzL2ZkZm9ybWF0LjggICAgfCAgMTEgKyst CiBkaXNrLXV0aWxzL2ZkZm9ybWF0LmMgICAgfCAyMDYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMo KyksIDYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rpc2stdXRpbHMvTWFrZW1vZHVsZS5h bSBiL2Rpc2stdXRpbHMvTWFrZW1vZHVsZS5hbQppbmRleCBjNjE4M2Y1Li45OTVlMDg1IDEwMDY0 NAotLS0gYS9kaXNrLXV0aWxzL01ha2Vtb2R1bGUuYW0KKysrIGIvZGlzay11dGlscy9NYWtlbW9k dWxlLmFtCkBAIC0xMTAsNiArMTEwLDcgQEAgaWYgQlVJTERfRkRGT1JNQVQKIHVzcnNiaW5fZXhl Y19QUk9HUkFNUyArPSBmZGZvcm1hdAogZGlzdF9tYW5fTUFOUyArPSBkaXNrLXV0aWxzL2ZkZm9y bWF0LjgKIGZkZm9ybWF0X1NPVVJDRVMgPSBkaXNrLXV0aWxzL2ZkZm9ybWF0LmMKK2ZkZm9ybWF0 X0xEQUREID0gJChMREFERCkgbGliY29tbW9uLmxhCiBlbmRpZgogCiBpZiBCVUlMRF9CTE9DS0RF VgpkaWZmIC0tZ2l0IGEvZGlzay11dGlscy9mZGZvcm1hdC44IGIvZGlzay11dGlscy9mZGZvcm1h dC44CmluZGV4IGRmNDE1M2YuLjc5N2Y1MGYgMTAwNjQ0Ci0tLSBhL2Rpc2stdXRpbHMvZmRmb3Jt YXQuOAorKysgYi9kaXNrLXV0aWxzL2ZkZm9ybWF0LjgKQEAgLTEsNiArMSw2IEBACiAuXCIgQ29w eXJpZ2h0IDE5OTIsIDE5OTMgUmlja2FyZCBFLiBGYWl0aCAoZmFpdGhAY3MudW5jLmVkdSkKIC5c IiBNYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0uVEggRkRGT1JNQVQgOCAiSnVseSAyMDExIiAidXRpbC1saW51eCIgIlN5c3RlbSBBZG1pbmlz dHJhdGlvbiIKKy5USCBGREZPUk1BVCA4ICJKdWx5IDIwMTQiICJ1dGlsLWxpbnV4IiAiU3lzdGVt IEFkbWluaXN0cmF0aW9uIgogLlNIIE5BTUUKIGZkZm9ybWF0IFwtIGxvdy1sZXZlbCBmb3JtYXQg YSBmbG9wcHkgZGlzawogLlNIIFNZTk9QU0lTCkBAIC00NSw2ICs0NSwxNSBAQCBhdXRvZGV0ZWN0 ZWQgZWFybGllci4gIEluIHRoaXMgY2FzZSwgdXNlCiB0byBsb2FkIHRoZSBkaXNrIHBhcmFtZXRl cnMuCiAuU0ggT1BUSU9OUwogLlRQCitcZkJcLWZcZlIsIFxmQlwtXC1mcm9tXGZSIFxmSU5cZlIK K1N0YXJ0IGF0IHRoZSB0cmFjayBcZklOXGZSIChkZWZhdWx0IGlzIDApLgorLlRQCitcZkJcLXRc ZlIsIFxmQlwtXC10b1xmUiBcZklOXGZSCitTdG9wIGF0IHRoZSB0cmFjayBcZklOXGZSIChkZWZh dWx0IGlzIDApLgorLlRQCitcZkJcLXJcZlIsIFxmQlwtXC1yZXBhaXJcZlIgXGZJTlxmUgorVHJ5 IHRvIHJlcGFpciB0cmFja3MgZmFpbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIChtYXggXGZJ TlxmUiByZXRyaWVzKS4KKy5UUAogXGZCXC1uXGZSLCBcZkJcLVwtbm8tdmVyaWZ5XGZSCiBTa2lw IHRoZSB2ZXJpZmljYXRpb24gdGhhdCBpcyBub3JtYWxseSBwZXJmb3JtZWQgYWZ0ZXIgdGhlIGZv cm1hdHRpbmcuCiAuVFAKZGlmZiAtLWdpdCBhL2Rpc2stdXRpbHMvZmRmb3JtYXQuYyBiL2Rpc2st dXRpbHMvZmRmb3JtYXQuYwppbmRleCBlNmFlOGU0Li5jOGIyYTgxIDEwMDY0NAotLS0gYS9kaXNr LXV0aWxzL2ZkZm9ybWF0LmMKKysrIGIvZGlzay11dGlscy9mZGZvcm1hdC5jCkBAIC0xMiw2ICsx Miw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJjLmgiCisjaW5jbHVkZSAi c3RydXRpbHMuaCIKICNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgogI2luY2x1ZGUgIm5scy5oIgog I2luY2x1ZGUgInhhbGxvYy5oIgpAQCAtMjAsNzQgKzIxLDExOSBAQCBzdHJ1Y3QgZmxvcHB5X3N0 cnVjdCBwYXJhbTsKIAogI2RlZmluZSBTRUNUT1JfU0laRSA1MTIKIAotc3RhdGljIHZvaWQgZm9y bWF0X2Rpc2soaW50IGN0cmwpCisKK3N0YXRpYyB2b2lkIGZvcm1hdF9iZWdpbihpbnQgY3RybCkK K3sKKwlpZiAoaW9jdGwoY3RybCwgRkRGTVRCRUcsIE5VTEwpIDwgMCkKKwkJZXJyKEVYSVRfRkFJ TFVSRSwgImlvY3RsOiBGREZNVEJFRyIpOworfQorCitzdGF0aWMgdm9pZCBmb3JtYXRfZW5kKGlu dCBjdHJsKQoreworCWlmIChpb2N0bChjdHJsLCBGREZNVEVORCwgTlVMTCkgPCAwKQorCQllcnIo RVhJVF9GQUlMVVJFLCAiaW9jdGw6IEZERk1URU5EIik7Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1h dF90cmFja19oZWFkKGludCBjdHJsLCB1bnNpZ25lZCBpbnQgdHJhY2ssIHVuc2lnbmVkIGludCBo ZWFkKQogewogCXN0cnVjdCBmb3JtYXRfZGVzY3IgZGVzY3I7Ci0JdW5zaWduZWQgaW50IHRyYWNr OworCisJZGVzY3IudHJhY2sgPSB0cmFjazsKKwlkZXNjci5oZWFkID0gaGVhZDsKKwlpZiAoaW9j dGwoY3RybCwgRkRGTVRUUkssIChsb25nKSAmZGVzY3IpIDwgMCkKKwkJZXJyKEVYSVRfRkFJTFVS RSwgImlvY3RsOiBGREZNVFRSSyIpOworfQorCitzdGF0aWMgdm9pZCBzZWVrX3RyYWNrX2hlYWQo aW50IGN0cmwsIHVuc2lnbmVkIGludCB0cmFjaywgdW5zaWduZWQgaW50IGhlYWQpCit7CisJbHNl ZWsoY3RybCwgKHRyYWNrICogcGFyYW0uaGVhZCArIGhlYWQpICogcGFyYW0uc2VjdCAqIFNFQ1RP Ul9TSVpFLCBTRUVLX1NFVCk7Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1hdF9kaXNrKGludCBjdHJs LCB1bnNpZ25lZCBpbnQgdHJhY2tfZnJvbSwgdW5zaWduZWQgaW50IHRyYWNrX3RvKQoreworCXVu c2lnbmVkIGludCB0cmFjaywgaGVhZDsKIAogCXByaW50ZihfKCJGb3JtYXR0aW5nIC4uLiAiKSk7 CiAJZmZsdXNoKHN0ZG91dCk7Ci0JaWYgKGlvY3RsKGN0cmwsIEZERk1UQkVHLCBOVUxMKSA8IDAp Ci0JCWVycihFWElUX0ZBSUxVUkUsICJpb2N0bDogRkRGTVRCRUciKTsKLQlmb3IgKHRyYWNrID0g MDsgdHJhY2sgPCBwYXJhbS50cmFjazsgdHJhY2srKykgewotCQlkZXNjci50cmFjayA9IHRyYWNr OwotCQlkZXNjci5oZWFkID0gMDsKLQkJaWYgKGlvY3RsKGN0cmwsIEZERk1UVFJLLCAobG9uZykg JmRlc2NyKSA8IDApCi0JCQllcnIoRVhJVF9GQUlMVVJFLCAiaW9jdGw6IEZERk1UVFJLIik7Ci0K LQkJcHJpbnRmKCIlM3VkXGJcYlxiIiwgdHJhY2spOwotCQlmZmx1c2goc3Rkb3V0KTsKLQkJaWYg KHBhcmFtLmhlYWQgPT0gMikgewotCQkJZGVzY3IuaGVhZCA9IDE7Ci0JCQlpZiAoaW9jdGwoY3Ry bCwgRkRGTVRUUkssIChsb25nKSZkZXNjcikgPCAwKQotCQkJCWVycihFWElUX0ZBSUxVUkUsICJp b2N0bDogRkRGTVRUUksiKTsKKworCWZvcm1hdF9iZWdpbihjdHJsKTsKKworCWZvciAodHJhY2sg PSB0cmFja19mcm9tOyB0cmFjayA8PSB0cmFja190bzsgdHJhY2srKykgeworCQlmb3IgKGhlYWQg PSAwOyBoZWFkIDwgcGFyYW0uaGVhZDsgaGVhZCsrKSB7CisJCQlwcmludGYoIiUzdS8ldVxiXGJc YlxiXGIiLCB0cmFjaywgaGVhZCk7CisJCQlmZmx1c2goc3Rkb3V0KTsKKwkJCWZvcm1hdF90cmFj a19oZWFkKGN0cmwsIHRyYWNrLCBoZWFkKTsKIAkJfQogCX0KLQlpZiAoaW9jdGwoY3RybCwgRkRG TVRFTkQsIE5VTEwpIDwgMCkKLQkJZXJyKEVYSVRfRkFJTFVSRSwgImlvY3RsOiBGREZNVEVORCIp OworCisJZm9ybWF0X2VuZChjdHJsKTsKKwogCXByaW50ZihfKCJkb25lXG4iKSk7CiB9CiAKLXN0 YXRpYyB2b2lkIHZlcmlmeV9kaXNrKGNoYXIgKm5hbWUpCitzdGF0aWMgdm9pZCB2ZXJpZnlfZGlz ayhpbnQgY3RybCwgdW5zaWduZWQgaW50IHRyYWNrX2Zyb20sIHVuc2lnbmVkIGludCB0cmFja190 bywgaW50IHJlcGFpcikKIHsKIAl1bnNpZ25lZCBjaGFyICpkYXRhOwotCXVuc2lnbmVkIGludCBj eWw7Ci0JaW50IGZkLCBjeWxfc2l6ZSwgY291bnQ7CisJdW5zaWduZWQgaW50IHRyYWNrLCBoZWFk OworCWludCB0cmFja19zaXplLCBjb3VudCwgcmV0cmllc19sZWZ0OwogCi0JY3lsX3NpemUgPSBw YXJhbS5zZWN0ICogcGFyYW0uaGVhZCAqIDUxMjsKLQlkYXRhID0geG1hbGxvYyhjeWxfc2l6ZSk7 CisJdHJhY2tfc2l6ZSA9IHBhcmFtLnNlY3QgKiBTRUNUT1JfU0laRTsKKwlkYXRhID0geG1hbGxv Yyh0cmFja19zaXplKTsKIAlwcmludGYoXygiVmVyaWZ5aW5nIC4uLiAiKSk7CiAJZmZsdXNoKHN0 ZG91dCk7Ci0JaWYgKChmZCA9IG9wZW4obmFtZSwgT19SRE9OTFkpKSA8IDApCi0JCWVycihFWElU X0ZBSUxVUkUsIF8oImNhbm5vdCBvcGVuICVzIiksIG5hbWUpOwotCWZvciAoY3lsID0gMDsgY3ls IDwgcGFyYW0udHJhY2s7IGN5bCsrKSB7Ci0JCWludCByZWFkX2J5dGVzOwotCi0JCXByaW50Zigi JXUzZFxiXGJcYiIsIGN5bCk7Ci0JCWZmbHVzaChzdGRvdXQpOwotCQlyZWFkX2J5dGVzID0gcmVh ZChmZCwgZGF0YSwgY3lsX3NpemUpOwotCQlpZiAocmVhZF9ieXRlcyAhPSBjeWxfc2l6ZSkgewot CQkJaWYgKHJlYWRfYnl0ZXMgPCAwKQotCQkJCXBlcnJvcihfKCJSZWFkOiAiKSk7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQlfKCJQcm9ibGVtIHJlYWRpbmcgY3lsaW5kZXIgJWQsIgotCQkJCSAg IiBleHBlY3RlZCAlZCwgcmVhZCAlZFxuIiksCi0JCQkJY3lsLCBjeWxfc2l6ZSwgcmVhZF9ieXRl cyk7Ci0JCQlmcmVlKGRhdGEpOwotCQkJZXhpdChFWElUX0ZBSUxVUkUpOwotCQl9Ci0JCWZvciAo Y291bnQgPSAwOyBjb3VudCA8IGN5bF9zaXplOyBjb3VudCsrKQotCQkJaWYgKGRhdGFbY291bnRd ICE9IEZEX0ZJTExfQllURSkgewotCQkJCXByaW50ZihfKCJiYWQgZGF0YSBpbiBjeWwgJWRcbiIK LQkJCQkJICJDb250aW51aW5nIC4uLiAiKSwgY3lsKTsKLQkJCQlmZmx1c2goc3Rkb3V0KTsKKwor CXNlZWtfdHJhY2tfaGVhZCAoY3RybCwgdHJhY2tfZnJvbSwgMCk7CisKKwlmb3IgKHRyYWNrID0g dHJhY2tfZnJvbTsgdHJhY2sgPD0gdHJhY2tfdG87IHRyYWNrKyspIHsKKwkJZm9yIChoZWFkID0g MDsgaGVhZCA8IHBhcmFtLmhlYWQ7IGhlYWQrKykgeworCQkJaW50IHJlYWRfYnl0ZXM7CisKKwkJ CXByaW50ZigiJTN1XGJcYlxiIiwgdHJhY2spOworCQkJZmZsdXNoKHN0ZG91dCk7CisKKwkJCXJl dHJpZXNfbGVmdCA9IHJlcGFpcjsKKwkJCWRvIHsKKwkJCQlyZWFkX2J5dGVzID0gcmVhZChjdHJs LCBkYXRhLCB0cmFja19zaXplKTsKKwkJCQlpZiAocmVhZF9ieXRlcyAhPSB0cmFja19zaXplKSB7 CisJCQkJCWlmIChyZXRyaWVzX2xlZnQpIHsKKwkJCQkJCWZvcm1hdF9iZWdpbihjdHJsKTsKKwkJ CQkJCWZvcm1hdF90cmFja19oZWFkKGN0cmwsIHRyYWNrLCBoZWFkKTsKKwkJCQkJCWZvcm1hdF9l bmQoY3RybCk7CisJCQkJCQlzZWVrX3RyYWNrX2hlYWQgKGN0cmwsIHRyYWNrLCBoZWFkKTsKKwkJ CQkJCXJldHJpZXNfbGVmdC0tOworCQkJCQkJaWYgKHJldHJpZXNfbGVmdCkgY29udGludWU7CisJ CQkJCX0KKwkJCQkJaWYgKHJlYWRfYnl0ZXMgPCAwKQorCQkJCQkJcGVycm9yKF8oIlJlYWQ6ICIp KTsKKwkJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQlfKCJQcm9ibGVtIHJlYWRpbmcgdHJhY2sv aGVhZCAldS8ldSwiCisJCQkJCQkgICIgZXhwZWN0ZWQgJWQsIHJlYWQgJWRcbiIpLAorCQkJCQkJ dHJhY2ssIGhlYWQsIHRyYWNrX3NpemUsIHJlYWRfYnl0ZXMpOworCQkJCQlmcmVlKGRhdGEpOwor CQkJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJCQkJfQorCQkJCWZvciAoY291bnQgPSAwOyBjb3Vu dCA8IHRyYWNrX3NpemU7IGNvdW50KyspCisJCQkJCWlmIChkYXRhW2NvdW50XSAhPSBGRF9GSUxM X0JZVEUpIHsKKwkJCQkJCWlmIChyZXRyaWVzX2xlZnQpIHsKKwkJCQkJCQlmb3JtYXRfYmVnaW4o Y3RybCk7CisJCQkJCQkJZm9ybWF0X3RyYWNrX2hlYWQoY3RybCwgdHJhY2ssIGhlYWQpOworCQkJ CQkJCWZvcm1hdF9lbmQoY3RybCk7CisJCQkJCQkJc2Vla190cmFja19oZWFkIChjdHJsLCB0cmFj aywgaGVhZCk7CisJCQkJCQkJcmV0cmllc19sZWZ0LS07CisJCQkJCQkJaWYgKHJldHJpZXNfbGVm dCkgY29udGludWU7CisJCQkJCQl9CisJCQkJCQlwcmludGYoXygiYmFkIGRhdGEgaW4gdHJhY2sv aGVhZCAldS8ldVxuIgorCQkJCQkJCSAiQ29udGludWluZyAuLi4gIiksIHRyYWNrLCBoZWFkKTsK KwkJCQkJCWZmbHVzaChzdGRvdXQpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KIAkJCQlicmVhazsK LQkJCX0KKwkJCX0gd2hpbGUgKHJldHJpZXNfbGVmdCk7CisJCX0KIAl9CisKIAlmcmVlKGRhdGEp OwogCXByaW50ZihfKCJkb25lXG4iKSk7Ci0JaWYgKGNsb3NlKGZkKSA8IDApCi0JCWVycihFWElU X0ZBSUxVUkUsICJjbG9zZSIpOwogfQogCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgoX19u b3JldHVybl9fKSkgdXNhZ2UoRklMRSAqIG91dCkKQEAgLTk2LDkgKzE0MiwxMyBAQCBzdGF0aWMg dm9pZCBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkgdXNhZ2UoRklMRSAqIG91dCkKIAkJ cHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwogCiAJZnByaW50ZihvdXQsIF8oIlxuT3B0 aW9uczpcbiIKLQkJICAgICAgICIgLW4sIC0tbm8tdmVyaWZ5ICBkaXNhYmxlIHRoZSB2ZXJpZmlj YXRpb24gYWZ0ZXIgdGhlIGZvcm1hdFxuIgotCQkgICAgICAgIiAtViwgLS12ZXJzaW9uICAgIG91 dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0XG4iCi0JCSAgICAgICAiIC1oLCAtLWhl bHAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXRcblxuIikpOworCQkgICAgICAgIiAt ZiwgLS1mcm9tIDxOPiAgICBzdGFydCBhdCB0aGUgdHJhY2sgTiAoZGVmYXVsdCAwKVxuIgorCQkg ICAgICAgIiAtdCwgLS10byA8Tj4gICAgICBzdG9wIGF0IHRoZSB0cmFjayBOXG4iCisJCSAgICAg ICAiIC1yLCAtLXJlcGFpciA8Tj4gIHRyeSB0byByZXBhaXIgdHJhY2tzIGZhaWxlZCBkdXJpbmdc biIKKwkJICAgICAgICIgICAgICAgICAgICAgICAgICAgdGhlIHZlcmlmaWNhdGlvbiAobWF4IE4g cmV0cmllcylcbiIKKwkJICAgICAgICIgLW4sIC0tbm8tdmVyaWZ5ICAgZGlzYWJsZSB0aGUgdmVy aWZpY2F0aW9uIGFmdGVyIHRoZSBmb3JtYXRcbiIKKwkJICAgICAgICIgLVYsIC0tdmVyc2lvbiAg ICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXRcbiIKKwkJICAgICAgICIgLWgs IC0taGVscCAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXRcblxuIikpOwogCiAJZXhp dChvdXQgPT0gc3RkZXJyID8gRVhJVF9GQUlMVVJFIDogRVhJVF9TVUNDRVNTKTsKIH0KQEAgLTEw OCwyMiArMTU4LDQ1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQgY2g7 CiAJaW50IGN0cmw7CiAJaW50IHZlcmlmeSA9IDE7CisJaW50IHJlcGFpciA9IDA7CisJaW50IHRy YWNrX2Zyb20gPSAwOworCWludCB0cmFja190byA9IC0xOworCXVuc2lnbmVkIGxvbmcgYXJnOwog CXN0cnVjdCBzdGF0IHN0OwogCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ29wdHNb XSA9IHsKKwkJeyJmcm9tIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdmJ30sCisJCXsidG8i LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3QnfSwKKwkJeyJyZXBhaXIiLCByZXF1aXJlZF9h cmd1bWVudCwgTlVMTCwgJ3InfSwKIAkJeyJuby12ZXJpZnkiLCBub19hcmd1bWVudCwgTlVMTCwg J24nfSwKIAkJeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsIE5VTEwsICdWJ30sCiAJCXsiaGVscCIs IG5vX2FyZ3VtZW50LCBOVUxMLCAnaCd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCisK IAlzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAJYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxF RElSKTsKIAl0ZXh0ZG9tYWluKFBBQ0tBR0UpOwogCWF0ZXhpdChjbG9zZV9zdGRvdXQpOwogCi0J d2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJuVmgiLCBsb25nb3B0cywgTlVM TCkpICE9IC0xKQorCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZjp0OnI6 blZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkKIAkJc3dpdGNoIChjaCkgeworCQljYXNlICdm JzoKKwkJCWFyZyA9IHN0cnRvdWxfb3JfZXJyKG9wdGFyZywgXygiaW52YWxpZCBhcmd1bWVudCAt IGZyb20iKSk7CisJCQlpZiAoYXJnID4gSU5UX01BWCkgZXJyKEVYSVRfRkFJTFVSRSwgXygiaW52 YWxpZCBhcmd1bWVudCAtIGZyb20iKSk7CisJCQl0cmFja19mcm9tID0gYXJnOworCQkJYnJlYWs7 CisJCWNhc2UgJ3QnOgorCQkJYXJnID0gc3RydG91bF9vcl9lcnIob3B0YXJnLCBfKCJpbnZhbGlk IGFyZ3VtZW50IC0gdG8iKSk7CisJCQlpZiAoYXJnID4gSU5UX01BWCkgZXJyKEVYSVRfRkFJTFVS RSwgXygiaW52YWxpZCBhcmd1bWVudCAtIHRvIikpOworCQkJdHJhY2tfdG8gPSBhcmc7CisJCQli cmVhazsKKwkJY2FzZSAncic6CisJCQlhcmcgPSBzdHJ0b3VsX29yX2VycihvcHRhcmcsIF8oImlu dmFsaWQgYXJndW1lbnQgLSByZXBhaXIiKSk7CisJCQlpZiAoYXJnID4gSU5UX01BWCkgZXJyKEVY SVRfRkFJTFVSRSwgXygiaW52YWxpZCBhcmd1bWVudCAtIHJlcGFpciIpKTsKKwkJCXJlcGFpciA9 IGFyZzsKKwkJCWJyZWFrOwogCQljYXNlICduJzoKIAkJCXZlcmlmeSA9IDA7CiAJCQlicmVhazsK QEAgLTE0OSwyMCArMjIyLDMzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlp ZiAoYWNjZXNzKGFyZ3ZbMF0sIFdfT0spIDwgMCkKIAkJZXJyKEVYSVRfRkFJTFVSRSwgXygiY2Fu bm90IGFjY2VzcyBmaWxlICVzIiksIGFyZ3ZbMF0pOwogCi0JY3RybCA9IG9wZW4oYXJndlswXSwg T19XUk9OTFkpOworCWN0cmwgPSBvcGVuKGFyZ3ZbMF0sIE9fUkRXUik7CiAJaWYgKGN0cmwgPCAw KQogCQllcnIoRVhJVF9GQUlMVVJFLCBfKCJjYW5ub3Qgb3BlbiAlcyIpLCBhcmd2WzBdKTsKIAlp ZiAoaW9jdGwoY3RybCwgRkRHRVRQUk0sIChsb25nKSZwYXJhbSkgPCAwKQogCQllcnIoRVhJVF9G QUlMVVJFLCBfKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGN1cnJlbnQgZm9ybWF0IHR5cGUiKSk7CiAK IAlwcmludGYoXygiJXMtc2lkZWQsICVkIHRyYWNrcywgJWQgc2VjL3RyYWNrLiBUb3RhbCBjYXBh Y2l0eSAlZCBrQi5cbiIpLAotCSAgICAgICAocGFyYW0uaGVhZCA9PSAyKSA/IF8oIkRvdWJsZSIp IDogXygiU2luZ2xlIiksCi0JICAgICAgIHBhcmFtLnRyYWNrLCBwYXJhbS5zZWN0LCBwYXJhbS5z aXplID4+IDEpOwotCWZvcm1hdF9kaXNrKGN0cmwpOwotCWlmIChjbG9zZV9mZChjdHJsKSAhPSAw KQotCQllcnIoRVhJVF9GQUlMVVJFLCBfKCJ3cml0ZSBmYWlsZWQiKSk7CisJCShwYXJhbS5oZWFk ID09IDIpID8gXygiRG91YmxlIikgOiBfKCJTaW5nbGUiKSwKKwkJcGFyYW0udHJhY2ssIHBhcmFt LnNlY3QsIHBhcmFtLnNpemUgPj4gMSk7CisKKwlpZiAodHJhY2tfdG8gPT0gLTEpCisJCXRyYWNr X3RvID0gcGFyYW0udHJhY2sgLSAxOworCisJaWYgKCh1bnNpZ25lZCBpbnQpdHJhY2tfZnJvbSA+ IHBhcmFtLnRyYWNrIC0gMSkKKwkJZXJyKEVYSVRfRkFJTFVSRSwgXygiJ2Zyb20nIGlzIG91dCBv ZiBhbGxvd2VkIHJhbmdlXG4iKSk7CisJaWYgKCh1bnNpZ25lZCBpbnQpdHJhY2tfdG8gPiBwYXJh bS50cmFjayAtIDEpCisJCWVycihFWElUX0ZBSUxVUkUsIF8oIid0bycgaXMgb3V0IG9mIGFsbG93 ZWQgcmFuZ2VcbiIpKTsKKwlpZiAodHJhY2tfZnJvbSA+IHRyYWNrX3RvKQorCQllcnIoRVhJVF9G QUlMVVJFLCBfKCInZnJvbScgaXMgaGlnaGVyIHRoYW4gJ3RvJ1xuIikpOworCisJZm9ybWF0X2Rp c2soY3RybCwgdHJhY2tfZnJvbSwgdHJhY2tfdG8pOwogCiAJaWYgKHZlcmlmeSkKLQkJdmVyaWZ5 X2Rpc2soYXJndlswXSk7CisJCXZlcmlmeV9kaXNrKGN0cmwsIHRyYWNrX2Zyb20sIHRyYWNrX3Rv LCByZXBhaXIpOworCisJaWYgKGNsb3NlX2ZkKGN0cmwpICE9IDApCisJCWVycihFWElUX0ZBSUxV UkUsIF8oImNsb3NlIGZhaWxlZCIpKTsKKwogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9Ci0tIAox LjkuMwoK ------=_Part_22662572_267211773.1406302189689--