From unknown Mon Jun 23 23:52:29 2025 X-Loop: help-debbugs@gnu.org Subject: bug#21232: [PATCH] dfa: remove range, collating element and equivalent class support for multibyte locales Resent-From: Norihiro Tanaka Original-Sender: "Debbugs-submit" Resent-CC: bug-grep@gnu.org Resent-Date: Tue, 11 Aug 2015 11:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 21232 X-GNU-PR-Package: grep X-GNU-PR-Keywords: patch To: 21232@debbugs.gnu.org X-Debbugs-Original-To: Received: via spool by submit@debbugs.gnu.org id=B.143929194226453 (code B ref -1); Tue, 11 Aug 2015 11:20:02 +0000 Received: (at submit) by debbugs.gnu.org; 11 Aug 2015 11:19:02 +0000 Received: from localhost ([127.0.0.1]:52929 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZP7a9-0006sN-6Y for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:19:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48581) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZP7a6-0006sF-GB for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZP7a0-00078y-MV for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:32821) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7a0-00078u-Iy for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7Zy-0006LW-LM for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZP7Zt-00078F-1y for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:50 -0400 Received: from mailgw04.kcn.ne.jp ([61.86.7.211]:45238) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7Zs-00077w-Cr for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:44 -0400 Received: from mxs01-s (mailgw1.kcn.ne.jp [61.86.15.233]) by mailgw04.kcn.ne.jp (Postfix) with ESMTP id AB3BD80584 for ; Tue, 11 Aug 2015 20:18:40 +0900 (JST) X-matriXscan-loop-detect: c629202a68b98df63dd8a7fd97b652ebcee3ab7f Received: from mail04.kcn.ne.jp ([61.86.6.183]) by mxs01-s with ESMTP; Tue, 11 Aug 2015 20:18:40 +0900 (JST) Received: from [10.120.1.67] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) by mail04.kcn.ne.jp (Postfix) with ESMTPA id 3EFB6129009B for ; Tue, 11 Aug 2015 20:18:40 +0900 (JST) Date: Tue, 11 Aug 2015 20:18:37 +0900 From: Norihiro Tanaka Message-Id: <20150811201747.AB53.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_55C9D4E600000000AB4A_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-matriXscan-Sophos-AV: Clean X-matriXscan-Action: Approve X-matriXscan: Uncategorized X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --------_55C9D4E600000000AB4A_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Now DFA does not support collating element and equivalent class for multibyte locales at all, as POSIX does not give us any APIs to refer to locale data to support them. Even if DFA has supported them, they will be very slow and other codes will be prevented from optimizing. This patch removes codes to support them. --------_55C9D4E600000000AB4A_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII"; name="0001-dfa-remove-range-collating-element-and-equivalent-cl.patch" Content-Disposition: attachment; filename="0001-dfa-remove-range-collating-element-and-equivalent-cl.patch" Content-Transfer-Encoding: base64 RnJvbSA2ZWZkZjRmMTYxZTJhMTBjNDgwZWVjZGI4ZDg3YWQyM2U5OGRkNjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBXZWQsIDIyIEp1bCAyMDE1IDAyOjAwOjI4ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZGZh OiByZW1vdmUgcmFuZ2UsIGNvbGxhdGluZyBlbGVtZW50IGFuZCBlcXVpdmFsZW50IGNsYXNzCiBz dXBwb3J0IGZvciBtdWx0aWJ5dGUgbG9jYWxlcwoKTm93IHJlZ2V4IHNob3VsZCBiZSB1c2VkIGZv ciByYW5nZSwgY29sbGF0aW5nIGVsZW1lbnQsIGVxdWl2YWxlbnQgY2xhc3MKaW4gbm9uIFBPU0lY IGxvY2FsZXMuICBTbyByZW1vdmUgY29kZXMgdG8gc3VwcG9ydCB0aGVtLgoKKiBkZmEuYyAoc3Ry dWN0IG1iX2NoYXJfY2xhc3NlcykgW2NoX2NsYXNzZXMsIG5jaF9jbGFzc2VzLCByYW5nZXMsCm5y YW5nZXMsIGVxdWl2cywgbmVxdWl2cywgY29sbF9lbGVtcywgbmNvbGxfZWxlbXNdOiBSZW1vdmUg bWVtYmVycwphbmQgYWxsIHVzZXMuCihtYXRjaF9tYl9jaGFyc2V0KTogUmVtb3ZlIGZ1bmN0aW9u LgotLS0KIHNyYy9kZmEuYyB8IDIwNyArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlv bnMoKyksIDE4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZh LmMKaW5kZXggZDFlNzZlMS4uMThjODZkNyAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisrKyBiL3Ny Yy9kZmEuYwpAQCAtMzAxLDE4ICszMDEsNiBAQCBzdHJ1Y3QgbWJfY2hhcl9jbGFzc2VzCiAgIGJv b2wgaW52ZXJ0OwogICB3Y2hhcl90ICpjaGFyczsgICAgICAgICAgICAgICAvKiBOb3JtYWwgY2hh cmFjdGVycy4gICovCiAgIHNpemVfdCBuY2hhcnM7Ci0gIHdjdHlwZV90ICpjaF9jbGFzc2VzOyAg ICAgICAgIC8qIENoYXJhY3RlciBjbGFzc2VzLiAgKi8KLSAgc2l6ZV90IG5jaF9jbGFzc2VzOwot ICBzdHJ1Y3QJCQkvKiBSYW5nZSBjaGFyYWN0ZXJzLiAgKi8KLSAgewotICAgIHdjaGFyX3QgYmVn OwkJLyogUmFuZ2Ugc3RhcnQuICAqLwotICAgIHdjaGFyX3QgZW5kOwkJLyogUmFuZ2UgZW5kLiAg Ki8KLSAgfSAqcmFuZ2VzOwotICBzaXplX3QgbnJhbmdlczsKLSAgY2hhciAqKmVxdWl2czsgICAg ICAgICAgICAgICAgLyogRXF1aXZhbGVuY2UgY2xhc3Nlcy4gICovCi0gIHNpemVfdCBuZXF1aXZz OwotICBjaGFyICoqY29sbF9lbGVtczsKLSAgc2l6ZV90IG5jb2xsX2VsZW1zOyAgICAgICAgICAg LyogQ29sbGF0aW5nIGVsZW1lbnRzLiAgKi8KIH07CiAKIC8qIEEgY29tcGlsZWQgcmVndWxhciBl eHByZXNzaW9uLiAgKi8KQEAgLTk5Myw5ICs5ODEsOSBAQCBwYXJzZV9icmFja2V0X2V4cCAodm9p ZCkKIAogICAvKiBXb3JrIGFyZWEgdG8gYnVpbGQgYSBtYl9jaGFyX2NsYXNzZXMuICAqLwogICBz dHJ1Y3QgbWJfY2hhcl9jbGFzc2VzICp3b3JrX21iYzsKLSAgc2l6ZV90IGNoYXJzX2FsLCByYW5n ZXNfYWwsIGNoX2NsYXNzZXNfYWwsIGVxdWl2c19hbCwgY29sbF9lbGVtc19hbDsKKyAgc2l6ZV90 IGNoYXJzX2FsOwogCi0gIGNoYXJzX2FsID0gcmFuZ2VzX2FsID0gY2hfY2xhc3Nlc19hbCA9IGVx dWl2c19hbCA9IGNvbGxfZWxlbXNfYWwgPSAwOworICBjaGFyc19hbCA9IDA7CiAgIGlmIChkZmEt Pm11bHRpYnl0ZSkKICAgICB7CiAgICAgICBkZmEtPm1iY3NldHMgPSBtYXliZV9yZWFsbG9jIChk ZmEtPm1iY3NldHMsIGRmYS0+bm1iY3NldHMsCkBAIC0xMDczLDIwICsxMDYxLDExIEBAIHBhcnNl X2JyYWNrZXRfZXhwICh2b2lkKQogICAgICAgICAgICAgICAgICAgICBkZmFlcnJvciAoXygiaW52 YWxpZCBjaGFyYWN0ZXIgY2xhc3MiKSk7CiAKICAgICAgICAgICAgICAgICAgIGlmIChkZmEtPm11 bHRpYnl0ZSAmJiAhcHJlZC0+c2luZ2xlX2J5dGVfb25seSkKLSAgICAgICAgICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgICAgICAgIC8qIFN0b3JlIHRoZSBjaGFyYWN0ZXIgY2xhc3MgYXMg d2N0eXBlX3QuICAqLwotICAgICAgICAgICAgICAgICAgICAgIHdjdHlwZV90IHd0ID0gd2N0eXBl IChjbGFzcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+Y2hfY2xhc3Nlcwot ICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXliZV9yZWFsbG9jICh3b3JrX21iYy0+Y2hfY2xh c3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19tYmMt Pm5jaF9jbGFzc2VzLCAmY2hfY2xhc3Nlc19hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mICp3b3JrX21iYy0+Y2hfY2xhc3Nlcyk7Ci0gICAgICAgICAg ICAgICAgICAgICAgd29ya19tYmMtPmNoX2NsYXNzZXNbd29ya19tYmMtPm5jaF9jbGFzc2VzKytd ID0gd3Q7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgZm9yIChj MiA9IDA7IGMyIDwgTk9UQ0hBUjsgKytjMikKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWQt PmZ1bmMgKGMyKSkKLSAgICAgICAgICAgICAgICAgICAgICBzZXRiaXQgKGMyLCBjY2wpOworICAg ICAgICAgICAgICAgICAgICBrbm93bl9icmFja2V0X2V4cCA9IGZhbHNlOworICAgICAgICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmb3IgKGMyID0gMDsgYzIgPCBOT1RDSEFS OyArK2MyKQorICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVkLT5mdW5jIChjMikpCisgICAg ICAgICAgICAgICAgICAgICAgICBzZXRiaXQgKGMyLCBjY2wpOwogICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGtub3duX2JyYWNrZXRfZXhwID0g ZmFsc2U7CkBAIC0xMTI4LDMxICsxMTA3LDcgQEAgcGFyc2VfYnJhY2tldF9leHAgKHZvaWQpCiAg ICAgICAgICAgICAgICAgRkVUQ0hfV0MgKGMyLCB3YzIsIF8oInVuYmFsYW5jZWQgWyIpKTsKIAog ICAgICAgICAgICAgICBpZiAoZGZhLT5tdWx0aWJ5dGUpCi0gICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgLyogV2hlbiBjYXNlIGZvbGRpbmcgbWFwIGEgcmFuZ2UsIHNheSBbbS16 XSAob3IgZXZlbiBbTS16XSkKLSAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBwYWlyIG9mIHJh bmdlcywgW20tel0gW00tWl0uICBBbHRob3VnaCB0aGlzIGNvZGUKLSAgICAgICAgICAgICAgICAg ICAgIGlzIHdyb25nIGluIG11bHRpcGxlIHdheXMsIGl0J3MgbmV2ZXIgdXNlZCBpbiBwcmFjdGlj ZS4KLSAgICAgICAgICAgICAgICAgICAgIEZJWE1FOiBSZW1vdmUgdGhpcyAoYW5kIHJlbGF0ZWQp IHVudXNlZCBjb2RlLiAgKi8KLSAgICAgICAgICAgICAgICAgIGlmICh3YyAhPSBXRU9GICYmIHdj MiAhPSBXRU9GKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg d29ya19tYmMtPnJhbmdlcwotICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXliZV9yZWFsbG9j ICh3b3JrX21iYy0+cmFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3b3JrX21iYy0+bnJhbmdlcyArIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZyYW5nZXNfYWwsIHNpemVvZiAqd29ya19tYmMtPnJhbmdlcyk7Ci0gICAg ICAgICAgICAgICAgICAgICAgd29ya19tYmMtPnJhbmdlc1t3b3JrX21iYy0+bnJhbmdlc10uYmVn Ci0gICAgICAgICAgICAgICAgICAgICAgICA9IGNhc2VfZm9sZCA/IHRvd2xvd2VyICh3YykgOiB3 YzsKLSAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+cmFuZ2VzW3dvcmtfbWJjLT5ucmFu Z2VzKytdLmVuZAotICAgICAgICAgICAgICAgICAgICAgICAgPSBjYXNlX2ZvbGQgPyB0b3dsb3dl ciAod2MyKSA6IHdjMjsKLQotICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXNlX2ZvbGQgJiYg KGlzd2FscGhhICh3YykgfHwgaXN3YWxwaGEgKHdjMikpKQotICAgICAgICAgICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+cmFuZ2VzW3dvcmtfbWJj LT5ucmFuZ2VzXS5iZWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRvd3VwcGVyICh3 Yyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfbWJjLT5yYW5nZXNbd29ya19tYmMt Pm5yYW5nZXMrK10uZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0b3d1cHBlciAo d2MyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrbm93bl9icmFja2V0X2V4cCA9IGZh bHNlOwogICAgICAgICAgICAgICBlbHNlIGlmICh1c2luZ19zaW1wbGVfbG9jYWxlICgpKQogICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGZvciAoYzEgPSBjOyBjMSA8PSBjMjsg YzErKykKQEAgLTE2NDEsNDYgKzE1OTYsMjcgQEAgYWRkdG9rICh0b2tlbiB0KQogICAgIHsKICAg ICAgIGJvb2wgbmVlZF9vciA9IGZhbHNlOwogICAgICAgc3RydWN0IG1iX2NoYXJfY2xhc3NlcyAq d29ya19tYmMgPSAmZGZhLT5tYmNzZXRzW2RmYS0+bm1iY3NldHMgLSAxXTsKKyAgICAgIHNpemVf dCBpOwogCiAgICAgICAvKiBFeHRyYWN0IHdpZGUgY2hhcmFjdGVycyBpbnRvIGFsdGVybmF0aW9u cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgICAgICAgVGhpcyBkb2VzIG5vdCByZXF1aXJl IFVURi04LiAgKi8KLSAgICAgIGlmICghd29ya19tYmMtPmludmVydCkKKyAgICAgIGZvciAoaSA9 IDA7IGkgPCB3b3JrX21iYy0+bmNoYXJzOyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICBzaXpl X3QgaTsKLSAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd29ya19tYmMtPm5jaGFyczsgaSsrKQot ICAgICAgICAgICAgewotICAgICAgICAgICAgICBhZGR0b2tfd2MgKHdvcmtfbWJjLT5jaGFyc1tp XSk7Ci0gICAgICAgICAgICAgIGlmIChuZWVkX29yKQotICAgICAgICAgICAgICAgIGFkZHRvayAo T1IpOwotICAgICAgICAgICAgICBuZWVkX29yID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICB3b3JrX21iYy0+bmNoYXJzID0gMDsKKyAgICAgICAgICBhZGR0b2tfd2MgKHdvcmtfbWJj LT5jaGFyc1tpXSk7CisgICAgICAgICAgaWYgKG5lZWRfb3IpCisgICAgICAgICAgICBhZGR0b2sg KE9SKTsKKyAgICAgICAgICBuZWVkX29yID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgd29ya19t YmMtPm5jaGFycyA9IDA7CiAKLSAgICAgIC8qIElmIHRoZSBNQkNTRVQgaXMgbm9uLWludmVydGVk IGFuZCBkb2Vzbid0IGluY2x1ZGUgbmVpdGhlcgotICAgICAgICAgY2hhcmFjdGVyIGNsYXNzZXMg aW5jbHVkaW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCByYW5nZQotICAgICAgICAgZXhwcmVzc2lv bnMsIGVxdWl2YWxlbmNlIGNsYXNzZXMgbm9yIGNvbGxhdGluZyBlbGVtZW50cywKLSAgICAgICAg IGl0IGNhbiBiZSByZXBsYWNlZCB0byBhIHNpbXBsZSBDU0VULiAqLwotICAgICAgaWYgKHdvcmtf bWJjLT5pbnZlcnQKLSAgICAgICAgICB8fCB3b3JrX21iYy0+bmNoX2NsYXNzZXMgIT0gMAotICAg ICAgICAgIHx8IHdvcmtfbWJjLT5ucmFuZ2VzICE9IDAKLSAgICAgICAgICB8fCB3b3JrX21iYy0+ bmVxdWl2cyAhPSAwIHx8IHdvcmtfbWJjLT5uY29sbF9lbGVtcyAhPSAwKQorICAgICAgLyogQ2hh cmFjdGVycyBoYXZlIGJlZW4gaGFuZGxlZCBhYm92ZSwgc28gaXQgaXMgcG9zc2libGUKKyAgICAg ICAgIHRoYXQgdGhlIG1iY3NldCBpcyBlbXB0eSBub3cuICBEbyBub3RoaW5nIGluIHRoYXQgY2Fz ZS4gICovCisgICAgICBpZiAod29ya19tYmMtPmNzZXQgIT0gLTEpCiAgICAgICAgIHsKLSAgICAg ICAgICBhZGR0b2tfbWIgKE1CQ1NFVCwgKChkZmEtPm5tYmNzZXRzIC0gMSkgPDwgMikgKyAzKTsK KyAgICAgICAgICBhZGR0b2sgKENTRVQgKyB3b3JrX21iYy0+Y3NldCk7CiAgICAgICAgICAgaWYg KG5lZWRfb3IpCiAgICAgICAgICAgICBhZGR0b2sgKE9SKTsKICAgICAgICAgfQotICAgICAgZWxz ZQotICAgICAgICB7Ci0gICAgICAgICAgLyogQ2hhcmFjdGVycyBoYXZlIGJlZW4gaGFuZGxlZCBh Ym92ZSwgc28gaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICB0aGF0IHRoZSBtYmNzZXQgaXMg ZW1wdHkgbm93LiAgRG8gbm90aGluZyBpbiB0aGF0IGNhc2UuICAqLwotICAgICAgICAgIGlmICh3 b3JrX21iYy0+Y3NldCAhPSAtMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYWRkdG9r IChDU0VUICsgd29ya19tYmMtPmNzZXQpOwotICAgICAgICAgICAgICBpZiAobmVlZF9vcikKLSAg ICAgICAgICAgICAgICBhZGR0b2sgKE9SKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAg IH0KICAgZWxzZQogICAgIHsKQEAgLTMwNjYsOTcgKzMwMDIsNiBAQCBtYXRjaF9hbnljaGFyIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAogICByZXR1cm4gbWJjbGVu OwogfQogCi0vKiBNYXRjaCBhIGJyYWNrZXQgZXhwcmVzc2lvbiBhZ2FpbnN0IHRoZSBjdXJyZW50 IGNvbnRleHQuCi0gICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGluIGJ5dGVzLgot ICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYnJhY2tldCBleHByZXNzaW9uLiAgKi8KLXN0 YXRpYyBpbnQKLW1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBw b3NpdGlvbiBwb3MsCi0gICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0ICpwLCB3aW50X3Qgd2Ms IHNpemVfdCBtYXRjaF9sZW4pCi17Ci0gIHNpemVfdCBpOwotICBib29sIG1hdGNoOyAgICAgICAg ICAgICAgLyogTWF0Y2hpbmcgc3VjY2VlZGVkLiAgKi8KLSAgaW50IG9wX2xlbjsgICAgICAgICAg ICAgIC8qIExlbmd0aCBvZiB0aGUgb3BlcmF0b3IuICAqLwotICBjaGFyIGJ1ZmZlclsxMjhdOwot Ci0gIC8qIFBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5 IHJlZmVycmluZy4gICovCi0gIHN0cnVjdCBtYl9jaGFyX2NsYXNzZXMgKndvcmtfbWJjOwotCi0g IGludCBjb250ZXh0OwotCi0gIC8qIENoZWNrIHN5bnRheCBiaXRzLiAgKi8KLSAgaWYgKHdjID09 IFdFT0YpCi0gICAgcmV0dXJuIDA7Ci0KLSAgY29udGV4dCA9IHdjaGFyX2NvbnRleHQgKHdjKTsK LSAgaWYgKCFTVUNDRUVEU19JTl9DT05URVhUIChwb3MuY29uc3RyYWludCwgZC0+c3RhdGVzW3Nd LmNvbnRleHQsIGNvbnRleHQpKQotICAgIHJldHVybiAwOwotCi0gIC8qIEFzc2lnbiB0aGUgY3Vy cmVudCByZWZlcnJpbmcgb3BlcmF0b3IgdG8gd29ya19tYmMuICAqLwotICB3b3JrX21iYyA9ICYo ZC0+bWJjc2V0c1soZC0+bXVsdGlieXRlX3Byb3BbcG9zLmluZGV4XSkgPj4gMl0pOwotICBtYXRj aCA9ICF3b3JrX21iYy0+aW52ZXJ0OwotCi0gIC8qIE1hdGNoIGluIHJhbmdlIDAtMjU1PyAgKi8K LSAgaWYgKHdjIDwgTk9UQ0hBUiAmJiB3b3JrX21iYy0+Y3NldCAhPSAtMQotICAgICAgJiYgdHN0 Yml0ICh0b191Y2hhciAod2MpLCBkLT5jaGFyY2xhc3Nlc1t3b3JrX21iYy0+Y3NldF0pKQotICAg IGdvdG8gY2hhcnNldF9tYXRjaGVkOwotCi0gIC8qIG1hdGNoIHdpdGggYSBjaGFyYWN0ZXIgY2xh c3M/ICAqLwotICBmb3IgKGkgPSAwOyBpIDwgd29ya19tYmMtPm5jaF9jbGFzc2VzOyBpKyspCi0g ICAgewotICAgICAgaWYgKGlzd2N0eXBlICgod2ludF90KSB3Yywgd29ya19tYmMtPmNoX2NsYXNz ZXNbaV0pKQotICAgICAgICBnb3RvIGNoYXJzZXRfbWF0Y2hlZDsKLSAgICB9Ci0KLSAgc3RybmNw eSAoYnVmZmVyLCBwLCBtYXRjaF9sZW4pOwotICBidWZmZXJbbWF0Y2hfbGVuXSA9ICdcMCc7Ci0K LSAgLyogbWF0Y2ggd2l0aCBhbiBlcXVpdmFsZW5jZSBjbGFzcz8gICovCi0gIGZvciAoaSA9IDA7 IGkgPCB3b3JrX21iYy0+bmVxdWl2czsgaSsrKQotICAgIHsKLSAgICAgIG9wX2xlbiA9IHN0cmxl biAod29ya19tYmMtPmVxdWl2c1tpXSk7Ci0gICAgICBzdHJuY3B5IChidWZmZXIsIHAsIG9wX2xl bik7Ci0gICAgICBidWZmZXJbb3BfbGVuXSA9ICdcMCc7Ci0gICAgICBpZiAoc3RyY29sbCAod29y a19tYmMtPmVxdWl2c1tpXSwgYnVmZmVyKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgbWF0 Y2hfbGVuID0gb3BfbGVuOwotICAgICAgICAgIGdvdG8gY2hhcnNldF9tYXRjaGVkOwotICAgICAg ICB9Ci0gICAgfQotCi0gIC8qIG1hdGNoIHdpdGggYSBjb2xsYXRpbmcgZWxlbWVudD8gICovCi0g IGZvciAoaSA9IDA7IGkgPCB3b3JrX21iYy0+bmNvbGxfZWxlbXM7IGkrKykKLSAgICB7Ci0gICAg ICBvcF9sZW4gPSBzdHJsZW4gKHdvcmtfbWJjLT5jb2xsX2VsZW1zW2ldKTsKLSAgICAgIHN0cm5j cHkgKGJ1ZmZlciwgcCwgb3BfbGVuKTsKLSAgICAgIGJ1ZmZlcltvcF9sZW5dID0gJ1wwJzsKLQot ICAgICAgaWYgKHN0cmNvbGwgKHdvcmtfbWJjLT5jb2xsX2VsZW1zW2ldLCBidWZmZXIpID09IDAp Ci0gICAgICAgIHsKLSAgICAgICAgICBtYXRjaF9sZW4gPSBvcF9sZW47Ci0gICAgICAgICAgZ290 byBjaGFyc2V0X21hdGNoZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgLyogbWF0Y2ggd2l0aCBh IHJhbmdlPyAgKi8KLSAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5ucmFuZ2VzOyBpKyspCi0g ICAgewotICAgICAgaWYgKHdvcmtfbWJjLT5yYW5nZXNbaV0uYmVnIDw9IHdjICYmIHdjIDw9IHdv cmtfbWJjLT5yYW5nZXNbaV0uZW5kKQotICAgICAgICBnb3RvIGNoYXJzZXRfbWF0Y2hlZDsKLSAg ICB9Ci0KLSAgLyogbWF0Y2ggd2l0aCBhIGNoYXJhY3Rlcj8gICovCi0gIGZvciAoaSA9IDA7IGkg PCB3b3JrX21iYy0+bmNoYXJzOyBpKyspCi0gICAgewotICAgICAgaWYgKHdjID09IHdvcmtfbWJj LT5jaGFyc1tpXSkKLSAgICAgICAgZ290byBjaGFyc2V0X21hdGNoZWQ7Ci0gICAgfQotCi0gIG1h dGNoID0gIW1hdGNoOwotCi1jaGFyc2V0X21hdGNoZWQ6Ci0gIHJldHVybiBtYXRjaCA/IG1hdGNo X2xlbiA6IDA7Ci19Ci0KIC8qIENoZWNrIHdoZXRoZXIgZWFjaCBvZiAnZC0+c3RhdGVzW3NdLm1i cHMuZWxlbScgY2FuIG1hdGNoLiAgVGhlbiByZXR1cm4gdGhlCiAgICBhcnJheSB3aGljaCBjb3Jy ZXNwb25kcyB0byAnZC0+c3RhdGVzW3NdLm1icHMuZWxlbSc7IGVhY2ggZWxlbWVudCBvZiB0aGUK ICAgIGFycmF5IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd2l0aCB3aGljaCB0aGUgZWxl bWVudCBjYW4gbWF0Y2guCkBAIC0zMTc4LDkgKzMwMjMsNiBAQCBjaGVja19tYXRjaGluZ193aXRo X211bHRpYnl0ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLAogICAgICAgICBjYXNl IEFOWUNIQVI6CiAgICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfYW55Y2hhciAoZCwgcywgcG9z LCB3YywgbWJjbGVuKTsKICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNQkNTRVQ6Ci0g ICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfbWJfY2hhcnNldCAoZCwgcywgcG9zLCBwLCB3Yywg bWJjbGVuKTsKLSAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICBi cmVhazsgICAgICAgICAgICAgICAgLyogY2Fubm90IGhhcHBlbi4gICovCiAgICAgICAgIH0KQEAg LTM2MDYsMTkgKzM0NDgsOCBAQCBmcmVlX21iZGF0YSAoc3RydWN0IGRmYSAqZCkKIAogICBmb3Ig KGkgPSAwOyBpIDwgZC0+bm1iY3NldHM7ICsraSkKICAgICB7Ci0gICAgICBzaXplX3QgajsKICAg ICAgIHN0cnVjdCBtYl9jaGFyX2NsYXNzZXMgKnAgPSAmKGQtPm1iY3NldHNbaV0pOwogICAgICAg ZnJlZSAocC0+Y2hhcnMpOwotICAgICAgZnJlZSAocC0+Y2hfY2xhc3Nlcyk7Ci0gICAgICBmcmVl IChwLT5yYW5nZXMpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgcC0+bmVxdWl2czsgKytqKQot ICAgICAgICBmcmVlIChwLT5lcXVpdnNbal0pOwotICAgICAgZnJlZSAocC0+ZXF1aXZzKTsKLQot ICAgICAgZm9yIChqID0gMDsgaiA8IHAtPm5jb2xsX2VsZW1zOyArK2opCi0gICAgICAgIGZyZWUg KHAtPmNvbGxfZWxlbXNbal0pOwotICAgICAgZnJlZSAocC0+Y29sbF9lbGVtcyk7CiAgICAgfQog CiAgIGZyZWUgKGQtPm1iY3NldHMpOwotLSAKMi40LjEKCg== --------_55C9D4E600000000AB4A_MULTIPART_MIXED_-- From unknown Mon Jun 23 23:52:29 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Norihiro Tanaka Subject: bug#21232: closed (Re: bug#21232: [PATCH] dfa: remove range, collating element and equivalent class support for multibyte locales) Message-ID: References: <55CB5D8B.9050405@cs.ucla.edu> <20150811201747.AB53.27F6AC2D@kcn.ne.jp> X-Gnu-PR-Message: they-closed 21232 X-Gnu-PR-Package: grep X-Gnu-PR-Keywords: patch Reply-To: 21232@debbugs.gnu.org Date: Wed, 12 Aug 2015 14:52:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1439391123-19954-1" This is a multi-part message in MIME format... ------------=_1439391123-19954-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #21232: [PATCH] dfa: remove range, collating element and equivalent class s= upport for multibyte locales which was filed against the grep package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 21232@debbugs.gnu.org. --=20 21232: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D21232 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1439391123-19954-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 21232-done) by debbugs.gnu.org; 12 Aug 2015 14:52:01 +0000 Received: from localhost ([127.0.0.1]:54267 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZPXNo-0005Bc-Ny for submit@debbugs.gnu.org; Wed, 12 Aug 2015 10:52:01 -0400 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:47523) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZPXNl-0005BU-Ui for 21232-done@debbugs.gnu.org; Wed, 12 Aug 2015 10:51:58 -0400 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id F1DA4160D1D; Wed, 12 Aug 2015 07:51:56 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id x3tlwip9o3jE; Wed, 12 Aug 2015 07:51:56 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 2EAA8160CF4; Wed, 12 Aug 2015 07:51:56 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 9hUptNBOeMXB; Wed, 12 Aug 2015 07:51:56 -0700 (PDT) Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 0D7911605AF; Wed, 12 Aug 2015 07:51:56 -0700 (PDT) Message-ID: <55CB5D8B.9050405@cs.ucla.edu> Date: Wed, 12 Aug 2015 07:51:55 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Norihiro Tanaka , 21232-done@debbugs.gnu.org Subject: Re: bug#21232: [PATCH] dfa: remove range, collating element and equivalent class support for multibyte locales References: <20150811201747.AB53.27F6AC2D@kcn.ne.jp> In-Reply-To: <20150811201747.AB53.27F6AC2D@kcn.ne.jp> Content-Type: multipart/mixed; boundary="------------060701000607050701040304" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 21232-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) This is a multi-part message in MIME format. --------------060701000607050701040304 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks, I installed that patch. If you configure with --enable-gcc-warnings (which I recommend), the patch causes GCC to complain about an unused variable wc2. I fixed that by installing the attached further patch, which adds a minor optimization. --------------060701000607050701040304 Content-Type: text/x-diff; name="0001-dfa-optimize-x-x.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-dfa-optimize-x-x.patch" >From 5700656ed2ec6a93e0a5c825b445f639d21a0d6e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 12 Aug 2015 07:35:03 -0700 Subject: [PATCH] dfa: optimize [x-x] * src/dfa.c (parse_bracket_exp): Treat [x-x] as if it were [x]. This also pacifies GCC, which otherwise complains about wc2 being set but not used. --- src/dfa.c | 56 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/src/dfa.c b/src/dfa.c index 18c86d7..ac5129b 100644 --- a/src/dfa.c +++ b/src/dfa.c @@ -1101,41 +1101,49 @@ parse_bracket_exp (void) c2 = ']'; } - if (c2 != ']') + if (c2 == ']') + { + /* In the case [x-], the - is an ordinary hyphen, + which is left in c1, the lookahead character. */ + lexptr -= cur_mb_len; + lexleft += cur_mb_len; + } + else { if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) FETCH_WC (c2, wc2, _("unbalanced [")); - if (dfa->multibyte) - known_bracket_exp = false; - else if (using_simple_locale ()) + colon_warning_state |= 8; + FETCH_WC (c1, wc1, _("unbalanced [")); + + /* Treat [x-y] as a range if x != y. */ + if (wc != wc2 || wc == WEOF) { - for (c1 = c; c1 <= c2; c1++) - setbit (c1, ccl); - if (case_fold) + if (dfa->multibyte) + known_bracket_exp = false; + else if (using_simple_locale ()) { - int uc = toupper (c); - int uc2 = toupper (c2); - for (c1 = 0; c1 < NOTCHAR; c1++) + int ci; + for (ci = c; ci <= c2; ci++) + setbit (ci, ccl); + if (case_fold) { - int uc1 = toupper (c1); - if (uc <= uc1 && uc1 <= uc2) - setbit (c1, ccl); + int uc = toupper (c); + int uc2 = toupper (c2); + for (ci = 0; ci < NOTCHAR; ci++) + { + int uci = toupper (ci); + if (uc <= uci && uci <= uc2) + setbit (ci, ccl); + } } } - } - else - known_bracket_exp = false; + else + known_bracket_exp = false; - colon_warning_state |= 8; - FETCH_WC (c1, wc1, _("unbalanced [")); - continue; + continue; + } } - - /* In the case [x-], the - is an ordinary hyphen, - which is left in c1, the lookahead character. */ - lexptr -= cur_mb_len; - lexleft += cur_mb_len; } colon_warning_state |= (c == ':') ? 2 : 4; -- 2.1.0 --------------060701000607050701040304-- ------------=_1439391123-19954-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 11 Aug 2015 11:19:02 +0000 Received: from localhost ([127.0.0.1]:52929 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZP7a9-0006sN-6Y for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:19:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48581) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZP7a6-0006sF-GB for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZP7a0-00078y-MV for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:32821) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7a0-00078u-Iy for submit@debbugs.gnu.org; Tue, 11 Aug 2015 07:18:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7Zy-0006LW-LM for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZP7Zt-00078F-1y for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:50 -0400 Received: from mailgw04.kcn.ne.jp ([61.86.7.211]:45238) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZP7Zs-00077w-Cr for bug-grep@gnu.org; Tue, 11 Aug 2015 07:18:44 -0400 Received: from mxs01-s (mailgw1.kcn.ne.jp [61.86.15.233]) by mailgw04.kcn.ne.jp (Postfix) with ESMTP id AB3BD80584 for ; Tue, 11 Aug 2015 20:18:40 +0900 (JST) X-matriXscan-loop-detect: c629202a68b98df63dd8a7fd97b652ebcee3ab7f Received: from mail04.kcn.ne.jp ([61.86.6.183]) by mxs01-s with ESMTP; Tue, 11 Aug 2015 20:18:40 +0900 (JST) Received: from [10.120.1.67] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) by mail04.kcn.ne.jp (Postfix) with ESMTPA id 3EFB6129009B for ; Tue, 11 Aug 2015 20:18:40 +0900 (JST) Date: Tue, 11 Aug 2015 20:18:37 +0900 From: Norihiro Tanaka To: Subject: [PATCH] dfa: remove range, collating element and equivalent class support for multibyte locales Message-Id: <20150811201747.AB53.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_55C9D4E600000000AB4A_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-matriXscan-Sophos-AV: Clean X-matriXscan-Action: Approve X-matriXscan: Uncategorized X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --------_55C9D4E600000000AB4A_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Now DFA does not support collating element and equivalent class for multibyte locales at all, as POSIX does not give us any APIs to refer to locale data to support them. Even if DFA has supported them, they will be very slow and other codes will be prevented from optimizing. This patch removes codes to support them. --------_55C9D4E600000000AB4A_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII"; name="0001-dfa-remove-range-collating-element-and-equivalent-cl.patch" Content-Disposition: attachment; filename="0001-dfa-remove-range-collating-element-and-equivalent-cl.patch" Content-Transfer-Encoding: base64 RnJvbSA2ZWZkZjRmMTYxZTJhMTBjNDgwZWVjZGI4ZDg3YWQyM2U5OGRkNjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBXZWQsIDIyIEp1bCAyMDE1IDAyOjAwOjI4ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZGZh OiByZW1vdmUgcmFuZ2UsIGNvbGxhdGluZyBlbGVtZW50IGFuZCBlcXVpdmFsZW50IGNsYXNzCiBz dXBwb3J0IGZvciBtdWx0aWJ5dGUgbG9jYWxlcwoKTm93IHJlZ2V4IHNob3VsZCBiZSB1c2VkIGZv ciByYW5nZSwgY29sbGF0aW5nIGVsZW1lbnQsIGVxdWl2YWxlbnQgY2xhc3MKaW4gbm9uIFBPU0lY IGxvY2FsZXMuICBTbyByZW1vdmUgY29kZXMgdG8gc3VwcG9ydCB0aGVtLgoKKiBkZmEuYyAoc3Ry dWN0IG1iX2NoYXJfY2xhc3NlcykgW2NoX2NsYXNzZXMsIG5jaF9jbGFzc2VzLCByYW5nZXMsCm5y YW5nZXMsIGVxdWl2cywgbmVxdWl2cywgY29sbF9lbGVtcywgbmNvbGxfZWxlbXNdOiBSZW1vdmUg bWVtYmVycwphbmQgYWxsIHVzZXMuCihtYXRjaF9tYl9jaGFyc2V0KTogUmVtb3ZlIGZ1bmN0aW9u LgotLS0KIHNyYy9kZmEuYyB8IDIwNyArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlv bnMoKyksIDE4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZh LmMKaW5kZXggZDFlNzZlMS4uMThjODZkNyAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisrKyBiL3Ny Yy9kZmEuYwpAQCAtMzAxLDE4ICszMDEsNiBAQCBzdHJ1Y3QgbWJfY2hhcl9jbGFzc2VzCiAgIGJv b2wgaW52ZXJ0OwogICB3Y2hhcl90ICpjaGFyczsgICAgICAgICAgICAgICAvKiBOb3JtYWwgY2hh cmFjdGVycy4gICovCiAgIHNpemVfdCBuY2hhcnM7Ci0gIHdjdHlwZV90ICpjaF9jbGFzc2VzOyAg ICAgICAgIC8qIENoYXJhY3RlciBjbGFzc2VzLiAgKi8KLSAgc2l6ZV90IG5jaF9jbGFzc2VzOwot ICBzdHJ1Y3QJCQkvKiBSYW5nZSBjaGFyYWN0ZXJzLiAgKi8KLSAgewotICAgIHdjaGFyX3QgYmVn OwkJLyogUmFuZ2Ugc3RhcnQuICAqLwotICAgIHdjaGFyX3QgZW5kOwkJLyogUmFuZ2UgZW5kLiAg Ki8KLSAgfSAqcmFuZ2VzOwotICBzaXplX3QgbnJhbmdlczsKLSAgY2hhciAqKmVxdWl2czsgICAg ICAgICAgICAgICAgLyogRXF1aXZhbGVuY2UgY2xhc3Nlcy4gICovCi0gIHNpemVfdCBuZXF1aXZz OwotICBjaGFyICoqY29sbF9lbGVtczsKLSAgc2l6ZV90IG5jb2xsX2VsZW1zOyAgICAgICAgICAg LyogQ29sbGF0aW5nIGVsZW1lbnRzLiAgKi8KIH07CiAKIC8qIEEgY29tcGlsZWQgcmVndWxhciBl eHByZXNzaW9uLiAgKi8KQEAgLTk5Myw5ICs5ODEsOSBAQCBwYXJzZV9icmFja2V0X2V4cCAodm9p ZCkKIAogICAvKiBXb3JrIGFyZWEgdG8gYnVpbGQgYSBtYl9jaGFyX2NsYXNzZXMuICAqLwogICBz dHJ1Y3QgbWJfY2hhcl9jbGFzc2VzICp3b3JrX21iYzsKLSAgc2l6ZV90IGNoYXJzX2FsLCByYW5n ZXNfYWwsIGNoX2NsYXNzZXNfYWwsIGVxdWl2c19hbCwgY29sbF9lbGVtc19hbDsKKyAgc2l6ZV90 IGNoYXJzX2FsOwogCi0gIGNoYXJzX2FsID0gcmFuZ2VzX2FsID0gY2hfY2xhc3Nlc19hbCA9IGVx dWl2c19hbCA9IGNvbGxfZWxlbXNfYWwgPSAwOworICBjaGFyc19hbCA9IDA7CiAgIGlmIChkZmEt Pm11bHRpYnl0ZSkKICAgICB7CiAgICAgICBkZmEtPm1iY3NldHMgPSBtYXliZV9yZWFsbG9jIChk ZmEtPm1iY3NldHMsIGRmYS0+bm1iY3NldHMsCkBAIC0xMDczLDIwICsxMDYxLDExIEBAIHBhcnNl X2JyYWNrZXRfZXhwICh2b2lkKQogICAgICAgICAgICAgICAgICAgICBkZmFlcnJvciAoXygiaW52 YWxpZCBjaGFyYWN0ZXIgY2xhc3MiKSk7CiAKICAgICAgICAgICAgICAgICAgIGlmIChkZmEtPm11 bHRpYnl0ZSAmJiAhcHJlZC0+c2luZ2xlX2J5dGVfb25seSkKLSAgICAgICAgICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgICAgICAgIC8qIFN0b3JlIHRoZSBjaGFyYWN0ZXIgY2xhc3MgYXMg d2N0eXBlX3QuICAqLwotICAgICAgICAgICAgICAgICAgICAgIHdjdHlwZV90IHd0ID0gd2N0eXBl IChjbGFzcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+Y2hfY2xhc3Nlcwot ICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXliZV9yZWFsbG9jICh3b3JrX21iYy0+Y2hfY2xh c3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19tYmMt Pm5jaF9jbGFzc2VzLCAmY2hfY2xhc3Nlc19hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mICp3b3JrX21iYy0+Y2hfY2xhc3Nlcyk7Ci0gICAgICAgICAg ICAgICAgICAgICAgd29ya19tYmMtPmNoX2NsYXNzZXNbd29ya19tYmMtPm5jaF9jbGFzc2VzKytd ID0gd3Q7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgZm9yIChj MiA9IDA7IGMyIDwgTk9UQ0hBUjsgKytjMikKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWQt PmZ1bmMgKGMyKSkKLSAgICAgICAgICAgICAgICAgICAgICBzZXRiaXQgKGMyLCBjY2wpOworICAg ICAgICAgICAgICAgICAgICBrbm93bl9icmFja2V0X2V4cCA9IGZhbHNlOworICAgICAgICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmb3IgKGMyID0gMDsgYzIgPCBOT1RDSEFS OyArK2MyKQorICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVkLT5mdW5jIChjMikpCisgICAg ICAgICAgICAgICAgICAgICAgICBzZXRiaXQgKGMyLCBjY2wpOwogICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGtub3duX2JyYWNrZXRfZXhwID0g ZmFsc2U7CkBAIC0xMTI4LDMxICsxMTA3LDcgQEAgcGFyc2VfYnJhY2tldF9leHAgKHZvaWQpCiAg ICAgICAgICAgICAgICAgRkVUQ0hfV0MgKGMyLCB3YzIsIF8oInVuYmFsYW5jZWQgWyIpKTsKIAog ICAgICAgICAgICAgICBpZiAoZGZhLT5tdWx0aWJ5dGUpCi0gICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgLyogV2hlbiBjYXNlIGZvbGRpbmcgbWFwIGEgcmFuZ2UsIHNheSBbbS16 XSAob3IgZXZlbiBbTS16XSkKLSAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBwYWlyIG9mIHJh bmdlcywgW20tel0gW00tWl0uICBBbHRob3VnaCB0aGlzIGNvZGUKLSAgICAgICAgICAgICAgICAg ICAgIGlzIHdyb25nIGluIG11bHRpcGxlIHdheXMsIGl0J3MgbmV2ZXIgdXNlZCBpbiBwcmFjdGlj ZS4KLSAgICAgICAgICAgICAgICAgICAgIEZJWE1FOiBSZW1vdmUgdGhpcyAoYW5kIHJlbGF0ZWQp IHVudXNlZCBjb2RlLiAgKi8KLSAgICAgICAgICAgICAgICAgIGlmICh3YyAhPSBXRU9GICYmIHdj MiAhPSBXRU9GKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg d29ya19tYmMtPnJhbmdlcwotICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXliZV9yZWFsbG9j ICh3b3JrX21iYy0+cmFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3b3JrX21iYy0+bnJhbmdlcyArIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZyYW5nZXNfYWwsIHNpemVvZiAqd29ya19tYmMtPnJhbmdlcyk7Ci0gICAg ICAgICAgICAgICAgICAgICAgd29ya19tYmMtPnJhbmdlc1t3b3JrX21iYy0+bnJhbmdlc10uYmVn Ci0gICAgICAgICAgICAgICAgICAgICAgICA9IGNhc2VfZm9sZCA/IHRvd2xvd2VyICh3YykgOiB3 YzsKLSAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+cmFuZ2VzW3dvcmtfbWJjLT5ucmFu Z2VzKytdLmVuZAotICAgICAgICAgICAgICAgICAgICAgICAgPSBjYXNlX2ZvbGQgPyB0b3dsb3dl ciAod2MyKSA6IHdjMjsKLQotICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXNlX2ZvbGQgJiYg KGlzd2FscGhhICh3YykgfHwgaXN3YWxwaGEgKHdjMikpKQotICAgICAgICAgICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX21iYy0+cmFuZ2VzW3dvcmtfbWJj LT5ucmFuZ2VzXS5iZWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRvd3VwcGVyICh3 Yyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfbWJjLT5yYW5nZXNbd29ya19tYmMt Pm5yYW5nZXMrK10uZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0b3d1cHBlciAo d2MyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrbm93bl9icmFja2V0X2V4cCA9IGZh bHNlOwogICAgICAgICAgICAgICBlbHNlIGlmICh1c2luZ19zaW1wbGVfbG9jYWxlICgpKQogICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGZvciAoYzEgPSBjOyBjMSA8PSBjMjsg YzErKykKQEAgLTE2NDEsNDYgKzE1OTYsMjcgQEAgYWRkdG9rICh0b2tlbiB0KQogICAgIHsKICAg ICAgIGJvb2wgbmVlZF9vciA9IGZhbHNlOwogICAgICAgc3RydWN0IG1iX2NoYXJfY2xhc3NlcyAq d29ya19tYmMgPSAmZGZhLT5tYmNzZXRzW2RmYS0+bm1iY3NldHMgLSAxXTsKKyAgICAgIHNpemVf dCBpOwogCiAgICAgICAvKiBFeHRyYWN0IHdpZGUgY2hhcmFjdGVycyBpbnRvIGFsdGVybmF0aW9u cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgICAgICAgVGhpcyBkb2VzIG5vdCByZXF1aXJl IFVURi04LiAgKi8KLSAgICAgIGlmICghd29ya19tYmMtPmludmVydCkKKyAgICAgIGZvciAoaSA9 IDA7IGkgPCB3b3JrX21iYy0+bmNoYXJzOyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICBzaXpl X3QgaTsKLSAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd29ya19tYmMtPm5jaGFyczsgaSsrKQot ICAgICAgICAgICAgewotICAgICAgICAgICAgICBhZGR0b2tfd2MgKHdvcmtfbWJjLT5jaGFyc1tp XSk7Ci0gICAgICAgICAgICAgIGlmIChuZWVkX29yKQotICAgICAgICAgICAgICAgIGFkZHRvayAo T1IpOwotICAgICAgICAgICAgICBuZWVkX29yID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICB3b3JrX21iYy0+bmNoYXJzID0gMDsKKyAgICAgICAgICBhZGR0b2tfd2MgKHdvcmtfbWJj LT5jaGFyc1tpXSk7CisgICAgICAgICAgaWYgKG5lZWRfb3IpCisgICAgICAgICAgICBhZGR0b2sg KE9SKTsKKyAgICAgICAgICBuZWVkX29yID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgd29ya19t YmMtPm5jaGFycyA9IDA7CiAKLSAgICAgIC8qIElmIHRoZSBNQkNTRVQgaXMgbm9uLWludmVydGVk IGFuZCBkb2Vzbid0IGluY2x1ZGUgbmVpdGhlcgotICAgICAgICAgY2hhcmFjdGVyIGNsYXNzZXMg aW5jbHVkaW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCByYW5nZQotICAgICAgICAgZXhwcmVzc2lv bnMsIGVxdWl2YWxlbmNlIGNsYXNzZXMgbm9yIGNvbGxhdGluZyBlbGVtZW50cywKLSAgICAgICAg IGl0IGNhbiBiZSByZXBsYWNlZCB0byBhIHNpbXBsZSBDU0VULiAqLwotICAgICAgaWYgKHdvcmtf bWJjLT5pbnZlcnQKLSAgICAgICAgICB8fCB3b3JrX21iYy0+bmNoX2NsYXNzZXMgIT0gMAotICAg ICAgICAgIHx8IHdvcmtfbWJjLT5ucmFuZ2VzICE9IDAKLSAgICAgICAgICB8fCB3b3JrX21iYy0+ bmVxdWl2cyAhPSAwIHx8IHdvcmtfbWJjLT5uY29sbF9lbGVtcyAhPSAwKQorICAgICAgLyogQ2hh cmFjdGVycyBoYXZlIGJlZW4gaGFuZGxlZCBhYm92ZSwgc28gaXQgaXMgcG9zc2libGUKKyAgICAg ICAgIHRoYXQgdGhlIG1iY3NldCBpcyBlbXB0eSBub3cuICBEbyBub3RoaW5nIGluIHRoYXQgY2Fz ZS4gICovCisgICAgICBpZiAod29ya19tYmMtPmNzZXQgIT0gLTEpCiAgICAgICAgIHsKLSAgICAg ICAgICBhZGR0b2tfbWIgKE1CQ1NFVCwgKChkZmEtPm5tYmNzZXRzIC0gMSkgPDwgMikgKyAzKTsK KyAgICAgICAgICBhZGR0b2sgKENTRVQgKyB3b3JrX21iYy0+Y3NldCk7CiAgICAgICAgICAgaWYg KG5lZWRfb3IpCiAgICAgICAgICAgICBhZGR0b2sgKE9SKTsKICAgICAgICAgfQotICAgICAgZWxz ZQotICAgICAgICB7Ci0gICAgICAgICAgLyogQ2hhcmFjdGVycyBoYXZlIGJlZW4gaGFuZGxlZCBh Ym92ZSwgc28gaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICB0aGF0IHRoZSBtYmNzZXQgaXMg ZW1wdHkgbm93LiAgRG8gbm90aGluZyBpbiB0aGF0IGNhc2UuICAqLwotICAgICAgICAgIGlmICh3 b3JrX21iYy0+Y3NldCAhPSAtMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYWRkdG9r IChDU0VUICsgd29ya19tYmMtPmNzZXQpOwotICAgICAgICAgICAgICBpZiAobmVlZF9vcikKLSAg ICAgICAgICAgICAgICBhZGR0b2sgKE9SKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAg IH0KICAgZWxzZQogICAgIHsKQEAgLTMwNjYsOTcgKzMwMDIsNiBAQCBtYXRjaF9hbnljaGFyIChz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gcywgcG9zaXRpb24gcG9zLAogICByZXR1cm4gbWJjbGVu OwogfQogCi0vKiBNYXRjaCBhIGJyYWNrZXQgZXhwcmVzc2lvbiBhZ2FpbnN0IHRoZSBjdXJyZW50 IGNvbnRleHQuCi0gICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2gsIGluIGJ5dGVzLgot ICAgUE9TIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYnJhY2tldCBleHByZXNzaW9uLiAgKi8KLXN0 YXRpYyBpbnQKLW1hdGNoX21iX2NoYXJzZXQgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLCBw b3NpdGlvbiBwb3MsCi0gICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0ICpwLCB3aW50X3Qgd2Ms IHNpemVfdCBtYXRjaF9sZW4pCi17Ci0gIHNpemVfdCBpOwotICBib29sIG1hdGNoOyAgICAgICAg ICAgICAgLyogTWF0Y2hpbmcgc3VjY2VlZGVkLiAgKi8KLSAgaW50IG9wX2xlbjsgICAgICAgICAg ICAgIC8qIExlbmd0aCBvZiB0aGUgb3BlcmF0b3IuICAqLwotICBjaGFyIGJ1ZmZlclsxMjhdOwot Ci0gIC8qIFBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5 IHJlZmVycmluZy4gICovCi0gIHN0cnVjdCBtYl9jaGFyX2NsYXNzZXMgKndvcmtfbWJjOwotCi0g IGludCBjb250ZXh0OwotCi0gIC8qIENoZWNrIHN5bnRheCBiaXRzLiAgKi8KLSAgaWYgKHdjID09 IFdFT0YpCi0gICAgcmV0dXJuIDA7Ci0KLSAgY29udGV4dCA9IHdjaGFyX2NvbnRleHQgKHdjKTsK LSAgaWYgKCFTVUNDRUVEU19JTl9DT05URVhUIChwb3MuY29uc3RyYWludCwgZC0+c3RhdGVzW3Nd LmNvbnRleHQsIGNvbnRleHQpKQotICAgIHJldHVybiAwOwotCi0gIC8qIEFzc2lnbiB0aGUgY3Vy cmVudCByZWZlcnJpbmcgb3BlcmF0b3IgdG8gd29ya19tYmMuICAqLwotICB3b3JrX21iYyA9ICYo ZC0+bWJjc2V0c1soZC0+bXVsdGlieXRlX3Byb3BbcG9zLmluZGV4XSkgPj4gMl0pOwotICBtYXRj aCA9ICF3b3JrX21iYy0+aW52ZXJ0OwotCi0gIC8qIE1hdGNoIGluIHJhbmdlIDAtMjU1PyAgKi8K LSAgaWYgKHdjIDwgTk9UQ0hBUiAmJiB3b3JrX21iYy0+Y3NldCAhPSAtMQotICAgICAgJiYgdHN0 Yml0ICh0b191Y2hhciAod2MpLCBkLT5jaGFyY2xhc3Nlc1t3b3JrX21iYy0+Y3NldF0pKQotICAg IGdvdG8gY2hhcnNldF9tYXRjaGVkOwotCi0gIC8qIG1hdGNoIHdpdGggYSBjaGFyYWN0ZXIgY2xh c3M/ICAqLwotICBmb3IgKGkgPSAwOyBpIDwgd29ya19tYmMtPm5jaF9jbGFzc2VzOyBpKyspCi0g ICAgewotICAgICAgaWYgKGlzd2N0eXBlICgod2ludF90KSB3Yywgd29ya19tYmMtPmNoX2NsYXNz ZXNbaV0pKQotICAgICAgICBnb3RvIGNoYXJzZXRfbWF0Y2hlZDsKLSAgICB9Ci0KLSAgc3RybmNw eSAoYnVmZmVyLCBwLCBtYXRjaF9sZW4pOwotICBidWZmZXJbbWF0Y2hfbGVuXSA9ICdcMCc7Ci0K LSAgLyogbWF0Y2ggd2l0aCBhbiBlcXVpdmFsZW5jZSBjbGFzcz8gICovCi0gIGZvciAoaSA9IDA7 IGkgPCB3b3JrX21iYy0+bmVxdWl2czsgaSsrKQotICAgIHsKLSAgICAgIG9wX2xlbiA9IHN0cmxl biAod29ya19tYmMtPmVxdWl2c1tpXSk7Ci0gICAgICBzdHJuY3B5IChidWZmZXIsIHAsIG9wX2xl bik7Ci0gICAgICBidWZmZXJbb3BfbGVuXSA9ICdcMCc7Ci0gICAgICBpZiAoc3RyY29sbCAod29y a19tYmMtPmVxdWl2c1tpXSwgYnVmZmVyKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgbWF0 Y2hfbGVuID0gb3BfbGVuOwotICAgICAgICAgIGdvdG8gY2hhcnNldF9tYXRjaGVkOwotICAgICAg ICB9Ci0gICAgfQotCi0gIC8qIG1hdGNoIHdpdGggYSBjb2xsYXRpbmcgZWxlbWVudD8gICovCi0g IGZvciAoaSA9IDA7IGkgPCB3b3JrX21iYy0+bmNvbGxfZWxlbXM7IGkrKykKLSAgICB7Ci0gICAg ICBvcF9sZW4gPSBzdHJsZW4gKHdvcmtfbWJjLT5jb2xsX2VsZW1zW2ldKTsKLSAgICAgIHN0cm5j cHkgKGJ1ZmZlciwgcCwgb3BfbGVuKTsKLSAgICAgIGJ1ZmZlcltvcF9sZW5dID0gJ1wwJzsKLQot ICAgICAgaWYgKHN0cmNvbGwgKHdvcmtfbWJjLT5jb2xsX2VsZW1zW2ldLCBidWZmZXIpID09IDAp Ci0gICAgICAgIHsKLSAgICAgICAgICBtYXRjaF9sZW4gPSBvcF9sZW47Ci0gICAgICAgICAgZ290 byBjaGFyc2V0X21hdGNoZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgLyogbWF0Y2ggd2l0aCBh IHJhbmdlPyAgKi8KLSAgZm9yIChpID0gMDsgaSA8IHdvcmtfbWJjLT5ucmFuZ2VzOyBpKyspCi0g ICAgewotICAgICAgaWYgKHdvcmtfbWJjLT5yYW5nZXNbaV0uYmVnIDw9IHdjICYmIHdjIDw9IHdv cmtfbWJjLT5yYW5nZXNbaV0uZW5kKQotICAgICAgICBnb3RvIGNoYXJzZXRfbWF0Y2hlZDsKLSAg ICB9Ci0KLSAgLyogbWF0Y2ggd2l0aCBhIGNoYXJhY3Rlcj8gICovCi0gIGZvciAoaSA9IDA7IGkg PCB3b3JrX21iYy0+bmNoYXJzOyBpKyspCi0gICAgewotICAgICAgaWYgKHdjID09IHdvcmtfbWJj LT5jaGFyc1tpXSkKLSAgICAgICAgZ290byBjaGFyc2V0X21hdGNoZWQ7Ci0gICAgfQotCi0gIG1h dGNoID0gIW1hdGNoOwotCi1jaGFyc2V0X21hdGNoZWQ6Ci0gIHJldHVybiBtYXRjaCA/IG1hdGNo X2xlbiA6IDA7Ci19Ci0KIC8qIENoZWNrIHdoZXRoZXIgZWFjaCBvZiAnZC0+c3RhdGVzW3NdLm1i cHMuZWxlbScgY2FuIG1hdGNoLiAgVGhlbiByZXR1cm4gdGhlCiAgICBhcnJheSB3aGljaCBjb3Jy ZXNwb25kcyB0byAnZC0+c3RhdGVzW3NdLm1icHMuZWxlbSc7IGVhY2ggZWxlbWVudCBvZiB0aGUK ICAgIGFycmF5IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd2l0aCB3aGljaCB0aGUgZWxl bWVudCBjYW4gbWF0Y2guCkBAIC0zMTc4LDkgKzMwMjMsNiBAQCBjaGVja19tYXRjaGluZ193aXRo X211bHRpYnl0ZV9vcHMgKHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSBzLAogICAgICAgICBjYXNl IEFOWUNIQVI6CiAgICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfYW55Y2hhciAoZCwgcywgcG9z LCB3YywgbWJjbGVuKTsKICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNQkNTRVQ6Ci0g ICAgICAgICAgcmFycmF5W2ldID0gbWF0Y2hfbWJfY2hhcnNldCAoZCwgcywgcG9zLCBwLCB3Yywg bWJjbGVuKTsKLSAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICBi cmVhazsgICAgICAgICAgICAgICAgLyogY2Fubm90IGhhcHBlbi4gICovCiAgICAgICAgIH0KQEAg LTM2MDYsMTkgKzM0NDgsOCBAQCBmcmVlX21iZGF0YSAoc3RydWN0IGRmYSAqZCkKIAogICBmb3Ig KGkgPSAwOyBpIDwgZC0+bm1iY3NldHM7ICsraSkKICAgICB7Ci0gICAgICBzaXplX3QgajsKICAg ICAgIHN0cnVjdCBtYl9jaGFyX2NsYXNzZXMgKnAgPSAmKGQtPm1iY3NldHNbaV0pOwogICAgICAg ZnJlZSAocC0+Y2hhcnMpOwotICAgICAgZnJlZSAocC0+Y2hfY2xhc3Nlcyk7Ci0gICAgICBmcmVl IChwLT5yYW5nZXMpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgcC0+bmVxdWl2czsgKytqKQot ICAgICAgICBmcmVlIChwLT5lcXVpdnNbal0pOwotICAgICAgZnJlZSAocC0+ZXF1aXZzKTsKLQot ICAgICAgZm9yIChqID0gMDsgaiA8IHAtPm5jb2xsX2VsZW1zOyArK2opCi0gICAgICAgIGZyZWUg KHAtPmNvbGxfZWxlbXNbal0pOwotICAgICAgZnJlZSAocC0+Y29sbF9lbGVtcyk7CiAgICAgfQog CiAgIGZyZWUgKGQtPm1iY3NldHMpOwotLSAKMi40LjEKCg== --------_55C9D4E600000000AB4A_MULTIPART_MIXED_-- ------------=_1439391123-19954-1--