From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3766 invoked by alias); 17 Apr 2015 11:27:41 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 3753 invoked by uid 89); 17 Apr 2015 11:27:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: conuserg007-v.nifty.com Received: from conuserg007.nifty.com (HELO conuserg007-v.nifty.com) (202.248.44.33) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (DES-CBC3-SHA encrypted) ESMTPS; Fri, 17 Apr 2015 11:27:37 +0000 Received: from Express5800-S70 (ntsitm305199.sitm.nt.ftth.ppp.infoweb.ne.jp [121.93.68.199]) (authenticated) by conuserg007-v.nifty.com with ESMTP id t3HBRS66015718 for ; Fri, 17 Apr 2015 20:27:29 +0900 X-Nifty-SrcIP: [121.93.68.199] Date: Fri, 17 Apr 2015 11:27:00 -0000 From: Takashi Yano To: cygwin@cygwin.com Subject: Re: Cygwin hangs up if several keys are typed during outputting a lot of texts. Message-Id: <20150417202746.351d90441d2d41fb316c07a9@nifty.ne.jp> In-Reply-To: <20150416090533.GB3657@calimero.vinschen.de> References: <20150305125901.GX3213@calimero.vinschen.de> <20150403130735.d04e41875f7defd0e6c2d8d0@nifty.ne.jp> <20150403113226.GP13285@calimero.vinschen.de> <20150404155520.8564347f1d42b3c709718aad@nifty.ne.jp> <20150404084354.GX13285@calimero.vinschen.de> <20150405205504.cda3df2cc76f7bca7c3d21fb@nifty.ne.jp> <20150407091113.GB2819@calimero.vinschen.de> <20150413193100.a393612bde79a4ae57b8c7d9@nifty.ne.jp> <20150414073456.GY7343@calimero.vinschen.de> <20150416092618.9975c0e29b8703dbd8d4aa6a@nifty.ne.jp> <20150416090533.GB3657@calimero.vinschen.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t" X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg00394.txt.bz2 --Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-length: 3343 Hi Corinna, On Thu, 16 Apr 2015 11:05:33 +0200 Corinna Vinschen wrote: > Ok, but... this is a really big patch and it complicates the pty code > even more. Is there really no other option as far as the TCSADRAIN > problem is concerned? > > What strikes me as weird is that neither fhandler_pty_slave::tcsetattr > nor fhandler_pty_master::tcsetattr give a damn for the optional_actions > parameter. They simply overwrite the tc settings. So I'm wondering, > wouldn't it be possible to add code to the tcsetattr implementation > instead, so that TCSADRAIN/TCSAFLUSH are honored and than only have one > place for OPOST handling? I also think the patch was a big deal. However, I did not have any other good idea. Anyway, I have worked out another solution. Please find a patch attached. What do you think of this one? OPOST code has been now completely moved back to master side as with original implementation. With this patch, tcsetattr() waits until master reads all data in pipe before new attributes are applied to preserve the order between write() and tcsetattr(). However, there is a potential risk in which tcsetattr() can be blocked if master stops reading pipe, even though I can not imagine such a likely situation. Moreover, it is necessary to duplicate io_handle from master-side to slave-side to allow slave to peek master pipe. It is not smart enough, I suppose. ChageLog is as follows. 2015-04-17 Takashi Yano * fhandler.h (fhandler_pty_common): Remove function process_opost_output (). Since processing regarding OPOST is moved back to master side, this function is needed no more. (class fhandler_pty_slave): Add variable 'from_slave' for checking whether master input pipe is empty. This used by flandler_pty_slave ::tcsetattr(). (class fhandler_pty_master): Move variable 'column' for handling ONOCR from class tty to class fhandler_pty_master. Revive variable 'need_nl' which is used by OPOST-processing in master side. * fhandler_tty.cc (struct pipe_reply): Add member 'from_slave'. (fhandler_pty_master::doecho): Call WriteFile() instead of fhandler_pty_common::process_opost_output(). (fhandler_pty_master::process_slave_output): Move OPOST-processing back into this function. (fhandler_pty_slave::fhandler_pty_slave): Initialize 'from_slave'. (fhandler_pty_slave::open): Duplicate handle regarding 'from_slave'. (fhandler_pty_slave::close): Close handle 'from_slave'. (fhandler_pty_slave::write): Call WriteFile() instead of fhandler_pty_common::process_opost_output(). (fhandler_pty_slave::tcsetattr): Wait until master reads all data from slave. (fhandler_pty_slave::fhandler_pty_slave): Initialize 'column' and 'need_nl'. (fhandler_pty_master::pty_master_thread): Add code to duplicate handle regarding 'from_slave'. (fhandler_pty_master::setup): Set io_handle to tty::_from_slave. (fhandler_pty_common::process_opost_output): Remove this function. * select.cc (peek_pipe): Revive the code checking 'need_nl'. * tty.cc (tty::init): Remove initialization for 'column'. * tty.h (class tty): Add variable '_from_slave'. Add two functions from_slave() and set_from_slave() regarding '_from_master'. Remove variable 'column'. It is moved to class fhandler_pty_master. -- Takashi Yano --Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t Content-Type: application/octet-stream; name="cygwin.patch.20150417-2" Content-Disposition: attachment; filename="cygwin.patch.20150417-2" Content-Transfer-Encoding: base64 Content-length: 19435 ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCBiL3dpbnN1 cC9jeWd3aW4vZmhhbmRsZXIuaAppbmRleCA2OTRjMjNiLi41M2YwMWRjIDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKKysrIGIvd2lu c3VwL2N5Z3dpbi9maGFuZGxlci5oCkBAIC0xNTA4LDE0ICsxNTA4LDEyIEBA IGNsYXNzIGZoYW5kbGVyX3B0eV9jb21tb246IHB1YmxpYyBmaGFuZGxlcl90 ZXJtaW9zCiAgICAgY29weXRvIChmaCk7CiAgICAgcmV0dXJuIGZoOwogICB9 Ci0KLSBwcm90ZWN0ZWQ6Ci0gIEJPT0wgcHJvY2Vzc19vcG9zdF9vdXRwdXQg KEhBTkRMRSBoLCBjb25zdCB2b2lkICpwdHIsIHNzaXplX3QmIGxlbiwgYm9v bCBpc19lY2hvKTsKIH07CiAKIGNsYXNzIGZoYW5kbGVyX3B0eV9zbGF2ZTog cHVibGljIGZoYW5kbGVyX3B0eV9jb21tb24KIHsKICAgSEFORExFIGludXNl OwkJCS8vIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIHR0eSBpcyBpbiB1c2UK KyAgSEFORExFIGZyb21fc2xhdmU7CiAKICAgLyogSGVscGVyIGZ1bmN0aW9u cyBmb3IgZmNobW9kIGFuZCBmY2hvd24uICovCiAgIGJvb2wgZmNoX29wZW5f aGFuZGxlcyAoYm9vbCBjaG93bik7CkBAIC0xNTc1LDggKzE1NzMsMTEgQEAg Y2xhc3MgZmhhbmRsZXJfcHR5X21hc3RlcjogcHVibGljIGZoYW5kbGVyX3B0 eV9jb21tb24KICAgSEFORExFIGZyb21fbWFzdGVyLCB0b19tYXN0ZXI7CiAg IEhBTkRMRSBlY2hvX3IsIGVjaG9fdzsKICAgRFdPUkQgZHdQcm9jZXNzSWQ7 CQkvLyBPd25lciBvZiBtYXN0ZXIgaGFuZGxlcworICBpbnQgY29sdW1uOwkv KiBDdXJyZW50IENvbHVtbiAqLwogCiBwdWJsaWM6CisgIGludCBuZWVkX25s OwkJCS8vIE5leHQgcmVhZCBzaG91bGQgc3RhcnQgd2l0aCBcbgorCiAgIEhB TkRMRSBnZXRfZWNob19oYW5kbGUgKCkgY29uc3QgeyByZXR1cm4gZWNob19y OyB9CiAgIC8qIENvbnN0cnVjdG9yICovCiAgIGZoYW5kbGVyX3B0eV9tYXN0 ZXIgKGludCk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3R0eS5jYyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdHR5LmNjCmluZGV4 IGNjYjc2ZDkuLjkxZDM5NTggMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfdHR5LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJf dHR5LmNjCkBAIC00Miw2ICs0Miw3IEBAIHN0cnVjdCBwaXBlX3JlcXVlc3Qg ewogc3RydWN0IHBpcGVfcmVwbHkgewogICBIQU5ETEUgZnJvbV9tYXN0ZXI7 CiAgIEhBTkRMRSB0b19tYXN0ZXI7CisgIEhBTkRMRSBmcm9tX3NsYXZlOwog ICBEV09SRCBlcnJvcjsKIH07CiAKQEAgLTE0NSw4ICsxNDYsNyBAQCBmaGFu ZGxlcl9wdHlfY29tbW9uOjpfX3JlbGVhc2Vfb3V0cHV0X211dGV4IChjb25z dCBjaGFyICpmbiwgaW50IGxuKQogdm9pZAogZmhhbmRsZXJfcHR5X21hc3Rl cjo6ZG9lY2hvIChjb25zdCB2b2lkICpzdHIsIERXT1JEIGxlbikKIHsKLSAg c3NpemVfdCB0b3dyaXRlID0gbGVuOwotICBpZiAoIXByb2Nlc3Nfb3Bvc3Rf b3V0cHV0IChlY2hvX3csIHN0ciwgdG93cml0ZSwgdHJ1ZSkpCisgIGlmICgh V3JpdGVGaWxlIChlY2hvX3csIHN0ciwgbGVuLCAmbGVuLCBOVUxMKSkKICAg ICB0ZXJtaW9zX3ByaW50ZiAoIldyaXRlIHRvIGVjaG8gcGlwZSBmYWlsZWQs ICVFIik7CiB9CiAKQEAgLTIyOCw2ICsyMjgsNDYgQEAgZmhhbmRsZXJfcHR5 X21hc3Rlcjo6cHJvY2Vzc19zbGF2ZV9vdXRwdXQgKGNoYXIgKmJ1Ziwgc2l6 ZV90IGxlbiwgaW50IHBrdG1vZGVfb24KICAgaWYgKGxlbiA9PSAwKQogICAg IGdvdG8gb3V0OwogCisgIC8qIFNldCBSTEVOIHRvIHRoZSBudW1iZXIgb2Yg Ynl0ZXMgdG8gcmVhZCBmcm9tIHRoZSBwaXBlLiAgKi8KKyAgcmxlbiA9IGxl bjsKKworICBjaGFyICpvcHRyOworICBvcHRyID0gYnVmOworICBpZiAocGt0 bW9kZV9vbiAmJiBidWYpCisgICAgeworICAgICAgKm9wdHIrKyA9IFRJT0NQ S1RfREFUQTsKKyAgICAgIHJsZW4gLT0gMTsKKyAgICAgIHJjKys7CisgICAg fQorCisgIGlmIChybGVuID09IDApCisgICAgZ290byBvdXQ7CisKKyAgaWYg KG5lZWRfbmwpCisgICAgeworICAgICAgLyogV2UgbmVlZCB0byByZXR1cm4g YSBsZWZ0IG92ZXIgXG4gY2hhcmFjdGVyLCByZXN1bHRpbmcgZnJvbQorCSBc clxuIGNvbnZlcnNpb24uICBOb3RlIHRoYXQgd2UgYWxyZWFkeSBjaGVja2Vk IGZvciBGTFVTSE8gYW5kCisJIG91dHB1dF9zdG9wcGVkIGF0IHRoZSB0aW1l IHRoYXQgd2UgcmVhZCB0aGUgY2hhcmFjdGVyLCBzbyB3ZQorCSBkb24ndCBj aGVjayBhZ2FpbiBoZXJlLiAgKi8KKyAgICAgIGlmIChidWYpCisJKm9wdHIr KyA9ICdcbic7CisgICAgICBuZWVkX25sID0gMDsKKyAgICAgIHJjKys7Cisg ICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgaWYgKGdldF90dHlwICgpLT50 aS5jX29mbGFnICYgT1BPU1QgJiYgZ2V0X3R0eXAgKCktPnRpLmNfb2ZsYWcg JiBPTkxDUikKKyAgICB7CisgICAgICAvKiBXZSBhcmUgZ29pbmcgdG8gZXhw YW5kIFxuIHRvIFxyXG4sIHNvIGRvbid0IHJlYWQgbW9yZSB0aGFuCisJIGhh bGYgb2YgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQuICAqLworICAg ICAgcmxlbiAvPSAyOworICAgICAgaWYgKHJsZW4gPT0gMCkKKwlybGVuID0g MTsKKyAgICB9CisKKyAgaWYgKHJsZW4gPiBzaXplb2Ygb3V0YnVmKQorICAg IHJsZW4gPSBzaXplb2Ygb3V0YnVmOworCiAgIGZvciAoOzspCiAgICAgewog ICAgICAgbiA9IGVjaG9fY250ID0gMDsKQEAgLTI2NywyNiArMzA3LDYgQEAg ZmhhbmRsZXJfcHR5X21hc3Rlcjo6cHJvY2Vzc19zbGF2ZV9vdXRwdXQgKGNo YXIgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IHBrdG1vZGVfb24KIAkgIGZsdXNo X3RvX3NsYXZlICgpOwogCX0KIAotICAgICAgLyogU2V0IFJMRU4gdG8gdGhl IG51bWJlciBvZiBieXRlcyB0byByZWFkIGZyb20gdGhlIHBpcGUuICAqLwot ICAgICAgcmxlbiA9IGxlbjsKLQotICAgICAgY2hhciAqb3B0cjsKLSAgICAg IG9wdHIgPSBidWY7Ci0gICAgICBpZiAocGt0bW9kZV9vbiAmJiBidWYpCi0J ewotCSAgKm9wdHIrKyA9IFRJT0NQS1RfREFUQTsKLQkgIHJsZW4gLT0gMTsK LQl9Ci0KLSAgICAgIGlmIChybGVuID09IDApCi0JewotCSAgcmMgPSBvcHRy IC0gYnVmOwotCSAgZ290byBvdXQ7Ci0JfQotCi0gICAgICBpZiAocmxlbiA+ IHNpemVvZiBvdXRidWYpCi0JcmxlbiA9IHNpemVvZiBvdXRidWY7Ci0KICAg ICAgIC8qIElmIGVjaG8gcGlwZSBoYXMgZGF0YSAoc29tZXRoaW5nIGhhcyBi ZWVuIHR5cGVkIG9yIHBhc3RlZCksIHByZWZlcgogICAgICAgICAgaXQgb3Zl ciBzbGF2ZSBvdXRwdXQuICovCiAgICAgICBpZiAoZWNob19jbnQgPiAwKQpA QCAtMzA4LDggKzMyOCw1OCBAQCBmaGFuZGxlcl9wdHlfbWFzdGVyOjpwcm9j ZXNzX3NsYXZlX291dHB1dCAoY2hhciAqYnVmLCBzaXplX3QgbGVuLCBpbnQg cGt0bW9kZV9vbgogICAgICAgaWYgKGdldF90dHlwICgpLT50aS5jX2xmbGFn ICYgRkxVU0hPIHx8ICFidWYpCiAJY29udGludWU7CiAKLSAgICAgIG1lbWNw eSAob3B0ciwgb3V0YnVmLCBuKTsKLSAgICAgIG9wdHIgKz0gbjsKKyAgICAg IGlmICghKGdldF90dHlwICgpLT50aS5jX29mbGFnICYgT1BPU1QpKQkvLyBy YXcgb3V0cHV0IG1vZGUKKwl7CisJICBtZW1jcHkgKG9wdHIsIG91dGJ1Ziwg bik7CisJICBvcHRyICs9IG47CisJfQorICAgICAgZWxzZQkJCQkJLy8gcG9z dC1wcm9jZXNzIG91dHB1dAorCXsKKwkgIGNoYXIgKmlwdHIgPSBvdXRidWY7 CisKKwkgIHdoaWxlIChuLS0pCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKCpp cHRyKQorCQl7CisJCWNhc2UgJ1xyJzoKKwkJICBpZiAoKGdldF90dHlwICgp LT50aS5jX29mbGFnICYgT05PQ1IpICYmIGNvbHVtbiA9PSAwKQorCQkgICAg eworCQkgICAgICBpcHRyKys7CisJCSAgICAgIGNvbnRpbnVlOworCQkgICAg fQorCQkgIGlmIChnZXRfdHR5cCAoKS0+dGkuY19vZmxhZyAmIE9DUk5MKQor CQkgICAgKmlwdHIgPSAnXG4nOworCQkgIGVsc2UKKwkJICAgIGNvbHVtbiA9 IDA7CisJCSAgYnJlYWs7CisJCWNhc2UgJ1xuJzoKKwkJICBpZiAoZ2V0X3R0 eXAgKCktPnRpLmNfb2ZsYWcgJiBPTkxDUikKKwkJICAgIHsKKwkJICAgICAg Km9wdHIrKyA9ICdccic7CisJCSAgICAgIGNvbHVtbiA9IDA7CisJCSAgICB9 CisJCSAgaWYgKGdldF90dHlwICgpLT50aS5jX29mbGFnICYgT05MUkVUKQor CQkgICAgY29sdW1uID0gMDsKKwkJICBicmVhazsKKwkJZGVmYXVsdDoKKwkJ ICBjb2x1bW4rKzsKKwkJICBicmVhazsKKwkJfQorCisJICAgICAgLyogRG9u J3Qgc3RvcmUgZGF0YSBwYXN0IHRoZSBlbmQgb2YgdGhlIHVzZXIncyBidWZm ZXIuICBUaGlzCisJCSBjYW4gaGFwcGVuIGlmIHRoZSB1c2VyIHJlcXVlc3Rz IGEgcmVhZCBvZiAxIGJ5dGUgd2hlbgorCQkgZG9pbmcgXHJcbiBleHBhbnNp b24uICAqLworCSAgICAgIGlmIChvcHRyIC0gYnVmID49IChpbnQpIGxlbikK KwkJeworCQkgIGlmICgqaXB0ciAhPSAnXG4nIHx8IG4gIT0gMCkKKwkJICAg IHN5c3RlbV9wcmludGYgKCJpbnRlcm5hbCBlcnJvcjogJXUgdW5leHBlY3Rl ZCBjaGFyYWN0ZXJzIiwgbik7CisJCSAgbmVlZF9ubCA9IDE7CisJCSAgYnJl YWs7CisJCX0KKworCSAgICAgICpvcHRyKysgPSAqaXB0cisrOworCSAgICB9 CisJfQogICAgICAgcmMgPSBvcHRyIC0gYnVmOwogICAgICAgYnJlYWs7CiAK QEAgLTMzMiw3ICs0MDIsNyBAQCBvdXQ6CiAvKiBwdHkgc2xhdmUgc3R1ZmYg Ki8KIAogZmhhbmRsZXJfcHR5X3NsYXZlOjpmaGFuZGxlcl9wdHlfc2xhdmUg KGludCB1bml0KQotICA6IGZoYW5kbGVyX3B0eV9jb21tb24gKCksIGludXNl IChOVUxMKQorICA6IGZoYW5kbGVyX3B0eV9jb21tb24gKCksIGludXNlIChO VUxMKSwgZnJvbV9zbGF2ZSAoTlVMTCkKIHsKICAgaWYgKHVuaXQgPj0gMCkK ICAgICBkZXYgKCkucGFyc2UgKERFVl9QVFlTX01BSk9SLCB1bml0KTsKQEAg LTM0MSwxMSArNDExLDExIEBAIGZoYW5kbGVyX3B0eV9zbGF2ZTo6ZmhhbmRs ZXJfcHR5X3NsYXZlIChpbnQgdW5pdCkKIGludAogZmhhbmRsZXJfcHR5X3Ns YXZlOjpvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCkKIHsKLSAgSEFORExFIHB0 eV9vd25lciwgZnJvbV9tYXN0ZXJfbG9jYWwsIHRvX21hc3Rlcl9sb2NhbDsK KyAgSEFORExFIHB0eV9vd25lciwgZnJvbV9tYXN0ZXJfbG9jYWwsIHRvX21h c3Rlcl9sb2NhbCwgZnJvbV9zbGF2ZV9sb2NhbDsKICAgSEFORExFICpoYW5k bGVzW10gPQogICB7CiAgICAgJmZyb21fbWFzdGVyX2xvY2FsLCAmaW5wdXRf YXZhaWxhYmxlX2V2ZW50LCAmaW5wdXRfbXV0ZXgsICZpbnVzZSwKLSAgICAm b3V0cHV0X211dGV4LCAmdG9fbWFzdGVyX2xvY2FsLCAmcHR5X293bmVyLAor ICAgICZvdXRwdXRfbXV0ZXgsICZ0b19tYXN0ZXJfbG9jYWwsICZmcm9tX3Ns YXZlX2xvY2FsLCAmcHR5X293bmVyLAogICAgIE5VTEwKICAgfTsKIApAQCAt NDQ3LDYgKzUxNywxNSBAQCBmaGFuZGxlcl9wdHlfc2xhdmU6Om9wZW4gKGlu dCBmbGFncywgbW9kZV90KQogCSAgZXJybXNnID0gImNhbid0IGR1cGxpY2F0 ZSBvdXRwdXQsICVFIjsKIAkgIGdvdG8gZXJyOwogCX0KKyAgICAgIGlmICgh RHVwbGljYXRlSGFuZGxlIChwdHlfb3duZXIsIGdldF90dHlwICgpLT5mcm9t X3NsYXZlICgpLAorCQkJICAgIEdldEN1cnJlbnRQcm9jZXNzICgpLCAmZnJv bV9zbGF2ZV9sb2NhbCwgMCwgVFJVRSwKKwkJCSAgICBEVVBMSUNBVEVfU0FN RV9BQ0NFU1MpKQorCXsKKwkgIHRlcm1pb3NfcHJpbnRmICgiY2FuJ3QgZHVw bGljYXRlIGZyb21fc2xhdmUgZnJvbSAldS8lcCwgJUUiLAorCQkJICBnZXRf dHR5cCAoKS0+bWFzdGVyX3BpZCwgZ2V0X3R0eXAgKCktPmZyb21fc2xhdmUg KCkpOworCSAgX19zZXRlcnJubyAoKTsKKwkgIGdvdG8gZXJyX25vX21zZzsK Kwl9CiAgICAgICBpZiAocHR5X293bmVyICE9IEdldEN1cnJlbnRQcm9jZXNz ICgpKQogCUNsb3NlSGFuZGxlIChwdHlfb3duZXIpOwogICAgIH0KQEAgLTQ2 Nyw3ICs1NDYsOCBAQCBmaGFuZGxlcl9wdHlfc2xhdmU6Om9wZW4gKGludCBm bGFncywgbW9kZV90KQogCX0KICAgICAgIGZyb21fbWFzdGVyX2xvY2FsID0g cmVwbC5mcm9tX21hc3RlcjsKICAgICAgIHRvX21hc3Rlcl9sb2NhbCA9IHJl cGwudG9fbWFzdGVyOwotICAgICAgaWYgKCFmcm9tX21hc3Rlcl9sb2NhbCB8 fCAhdG9fbWFzdGVyX2xvY2FsKQorICAgICAgZnJvbV9zbGF2ZV9sb2NhbCA9 IHJlcGwuZnJvbV9zbGF2ZTsKKyAgICAgIGlmICghZnJvbV9tYXN0ZXJfbG9j YWwgfHwgIXRvX21hc3Rlcl9sb2NhbCB8fCAhZnJvbV9zbGF2ZV9sb2NhbCkK IAl7CiAJICBTZXRMYXN0RXJyb3IgKHJlcGwuZXJyb3IpOwogCSAgZXJybXNn ID0gImVycm9yIGR1cGxpY2F0aW5nIHBpcGVzLCAlRSI7CkBAIC00NzYsMTQg KzU1NiwxOCBAQCBmaGFuZGxlcl9wdHlfc2xhdmU6Om9wZW4gKGludCBmbGFn cywgbW9kZV90KQogICAgIH0KICAgVmVyaWZ5SGFuZGxlIChmcm9tX21hc3Rl cl9sb2NhbCk7CiAgIFZlcmlmeUhhbmRsZSAodG9fbWFzdGVyX2xvY2FsKTsK KyAgVmVyaWZ5SGFuZGxlIChmcm9tX3NsYXZlX2xvY2FsKTsKIAogICB0ZXJt aW9zX3ByaW50ZiAoImR1cGxpY2F0ZWQgZnJvbV9tYXN0ZXIgJXAtPiVwIGZy b20gcHR5X293bmVyIiwKIAkJICBnZXRfdHR5cCAoKS0+ZnJvbV9tYXN0ZXIg KCksIGZyb21fbWFzdGVyX2xvY2FsKTsKICAgdGVybWlvc19wcmludGYgKCJk dXBsaWNhdGVkIHRvX21hc3RlciAlcC0+JXAgZnJvbSBwdHlfb3duZXIiLAog CQkgIGdldF90dHlwICgpLT50b19tYXN0ZXIgKCksIHRvX21hc3Rlcl9sb2Nh bCk7CisgIHRlcm1pb3NfcHJpbnRmICgiZHVwbGljYXRlZCBmcm9tX3NsYXZl ICVwLT4lcCBmcm9tIHB0eV9vd25lciIsCisJCSAgZ2V0X3R0eXAgKCktPmZy b21fbWFzdGVyICgpLCBmcm9tX3NsYXZlX2xvY2FsKTsKIAogICBzZXRfaW9f aGFuZGxlIChmcm9tX21hc3Rlcl9sb2NhbCk7CiAgIHNldF9vdXRwdXRfaGFu ZGxlICh0b19tYXN0ZXJfbG9jYWwpOworICBmcm9tX3NsYXZlID0gZnJvbV9z bGF2ZV9sb2NhbDsKIAogICBmaGFuZGxlcl9jb25zb2xlOjpuZWVkX2ludmlz aWJsZSAoKTsKICAgc2V0X29wZW5fc3RhdHVzICgpOwpAQCAtNTMyLDYgKzYx Niw4IEBAIGZoYW5kbGVyX3B0eV9zbGF2ZTo6Y2xvc2UgKCkKICAgICB0ZXJt aW9zX3ByaW50ZiAoIkNsb3NlSGFuZGxlIChpbnVzZSksICVFIik7CiAgIGlm ICghRm9yY2VDbG9zZUhhbmRsZSAoaW5wdXRfYXZhaWxhYmxlX2V2ZW50KSkK ICAgICB0ZXJtaW9zX3ByaW50ZiAoIkNsb3NlSGFuZGxlIChpbnB1dF9hdmFp bGFibGVfZXZlbnQ8JXA+KSwgJUUiLCBpbnB1dF9hdmFpbGFibGVfZXZlbnQp OworICBpZiAoIUZvcmNlQ2xvc2VIYW5kbGUgKGZyb21fc2xhdmUpKQorICAg IHRlcm1pb3NfcHJpbnRmICgiQ2xvc2VIYW5kbGUgKGZyb21fc2xhdmUpLCAl RSIpOwogICBpZiAoKHVuc2lnbmVkKSBteXNlbGYtPmN0dHkgPT0gRkhERVYg KERFVl9QVFlTX01BSk9SLCBnZXRfbWlub3IgKCkpKQogICAgIGZoYW5kbGVy X2NvbnNvbGU6OmZyZWVfY29uc29sZSAoKTsJLyogYXNzdW1lcyB0aGF0IHdl IGFyZSB0aGUgbGFzdCBwdHkgY2xvc2VyICovCiAgIHJldHVybiBmaGFuZGxl cl9wdHlfY29tbW9uOjpjbG9zZSAoKTsKQEAgLTU4MCw2ICs2NjYsNyBAQCBm aGFuZGxlcl9wdHlfc2xhdmU6OmluaXQgKEhBTkRMRSBoLCBEV09SRCBhLCBt b2RlX3QpCiBzc2l6ZV90IF9fc3RkY2FsbAogZmhhbmRsZXJfcHR5X3NsYXZl Ojp3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogeworICBE V09SRCBuOwogICBzc2l6ZV90IHRvd3JpdGUgPSBsZW47CiAKICAgYmdfY2hl Y2tfdHlwZXMgYmcgPSBiZ19jaGVjayAoU0lHVFRPVSk7CkBAIC01OTAsMTkg KzY3Nyw0NCBAQCBmaGFuZGxlcl9wdHlfc2xhdmU6OndyaXRlIChjb25zdCB2 b2lkICpwdHIsIHNpemVfdCBsZW4pCiAKICAgcHVzaF9wcm9jZXNzX3N0YXRl IHByb2Nlc3Nfc3RhdGUgKFBJRF9UVFlPVSk7CiAKLSAgaWYgKCFwcm9jZXNz X29wb3N0X291dHB1dCAoZ2V0X291dHB1dF9oYW5kbGUgKCksIHB0ciwgdG93 cml0ZSwgZmFsc2UpKQorICB3aGlsZSAobGVuKQogICAgIHsKLSAgICAgIERX T1JEIGVyciA9IEdldExhc3RFcnJvciAoKTsKLSAgICAgIHRlcm1pb3NfcHJp bnRmICgiV3JpdGVGaWxlIGZhaWxlZCwgJUUiKTsKLSAgICAgIHN3aXRjaCAo ZXJyKQorICAgICAgbiA9IE1JTiAoT1VUX0JVRkZFUl9TSVpFLCBsZW4pOwor ICAgICAgY2hhciAqYnVmID0gKGNoYXIgKilwdHI7CisgICAgICBwdHIgPSAo Y2hhciAqKSBwdHIgKyBuOworICAgICAgbGVuIC09IG47CisKKyAgICAgIGlm ICh0YyAoKS0+b3V0cHV0X3N0b3BwZWQgJiYgaXNfbm9uYmxvY2tpbmcgKCkp CisgICAgICAgIHsKKwkgIGlmIChsZW4gPCAoc2l6ZV90KXRvd3JpdGUpCisJ ICAgIHRvd3JpdGUgLT0gbGVuOworCSAgZWxzZQorCSAgICB7CisJICAgICAg c2V0X2Vycm5vKEVBR0FJTik7CisJICAgICAgdG93cml0ZSA9IC0xOworCSAg ICB9CisJICBicmVhazsKKyAgICAgICAgfQorCisgICAgICB3aGlsZSAodGMg KCktPm91dHB1dF9zdG9wcGVkKQorCWN5Z3dhaXQgKDEwKTsKKworICAgICAg Qk9PTCByZXMgPSBXcml0ZUZpbGUgKGdldF9vdXRwdXRfaGFuZGxlICgpLCBi dWYsIG4sICZuLCBOVUxMKTsKKyAgICAgIGlmICghcmVzKQogCXsKLQljYXNl IEVSUk9SX05PX0RBVEE6Ci0JICBlcnIgPSBFUlJPUl9JT19ERVZJQ0U7Ci0J ZGVmYXVsdDoKLQkgIF9fc2V0ZXJybm9fZnJvbV93aW5fZXJyb3IgKGVycik7 CisJICBEV09SRCBlcnIgPSBHZXRMYXN0RXJyb3IgKCk7CisJICB0ZXJtaW9z X3ByaW50ZiAoIldyaXRlRmlsZSBmYWlsZWQsICVFIik7CisJICBzd2l0Y2gg KGVycikKKwkgICAgeworCSAgICBjYXNlIEVSUk9SX05PX0RBVEE6CisJICAg ICAgZXJyID0gRVJST1JfSU9fREVWSUNFOworCSAgICBkZWZhdWx0OgorCSAg ICAgIF9fc2V0ZXJybm9fZnJvbV93aW5fZXJyb3IgKGVycik7CisJICAgIH0K KwkgIHJhaXNlIChTSUdIVVApOwkJLyogRklYTUU6IFNob3VsZCB0aGlzIGJl IFNJR1RUT1U/ICovCisJICB0b3dyaXRlID0gLTE7CisJICBicmVhazsKIAl9 Ci0gICAgICByYWlzZSAoU0lHSFVQKTsJCS8qIEZJWE1FOiBTaG91bGQgdGhp cyBiZSBTSUdUVE9VPyAqLwotICAgICAgdG93cml0ZSA9IC0xOwogICAgIH0K ICAgcmV0dXJuIHRvd3JpdGU7CiB9CkBAIC04NjgsNiArOTgwLDkgQEAgZmhh bmRsZXJfcHR5X3NsYXZlOjp0Y2dldGF0dHIgKHN0cnVjdCB0ZXJtaW9zICp0 KQogaW50CiBmaGFuZGxlcl9wdHlfc2xhdmU6OnRjc2V0YXR0ciAoaW50LCBj b25zdCBzdHJ1Y3QgdGVybWlvcyAqdCkKIHsKKyAgRFdPUkQgbjsKKyAgd2hp bGUgKDo6Ynl0ZXNfYXZhaWxhYmxlIChuLCBmcm9tX3NsYXZlKSAmJiBuKQor ICAgIGN5Z3dhaXQgKDEwKTsKICAgYWNxdWlyZV9vdXRwdXRfbXV0ZXggKElO RklOSVRFKTsKICAgZ2V0X3R0eXAgKCktPnRpID0gKnQ7CiAgIHJlbGVhc2Vf b3V0cHV0X211dGV4ICgpOwpAQCAtMTE0MCw3ICsxMjU1LDcgQEAgZXJyb3V0 OgogZmhhbmRsZXJfcHR5X21hc3Rlcjo6ZmhhbmRsZXJfcHR5X21hc3RlciAo aW50IHVuaXQpCiAgIDogZmhhbmRsZXJfcHR5X2NvbW1vbiAoKSwgcGt0bW9k ZSAoMCksIG1hc3Rlcl9jdGwgKE5VTEwpLAogICAgIG1hc3Rlcl90aHJlYWQg KE5VTEwpLCBmcm9tX21hc3RlciAoTlVMTCksIHRvX21hc3RlciAoTlVMTCks Ci0gICAgZWNob19yIChOVUxMKSwgZWNob193IChOVUxMKSwgZHdQcm9jZXNz SWQgKDApCisgICAgZWNob19yIChOVUxMKSwgZWNob193IChOVUxMKSwgZHdQ cm9jZXNzSWQgKDApLCBjb2x1bW4gKDApLCBuZWVkX25sICgwKQogewogICBp ZiAodW5pdCA+PSAwKQogICAgIGRldiAoKS5wYXJzZSAoREVWX1BUWU1fTUFK T1IsIHVuaXQpOwpAQCAtMTUyMSw2ICsxNjM2LDEzIEBAIGZoYW5kbGVyX3B0 eV9tYXN0ZXI6OnB0eV9tYXN0ZXJfdGhyZWFkICgpCiAJICAgICAgdGVybWlv c19wcmludGYgKCJEdXBsaWNhdGVIYW5kbGUgKHRvX21hc3RlciksICVFIik7 CiAJICAgICAgZ290byByZXBseTsKIAkgICAgfQorCSAgaWYgKCFEdXBsaWNh dGVIYW5kbGUgKEdldEN1cnJlbnRQcm9jZXNzICgpLCBnZXRfaW9faGFuZGxl ICgpLAorCQkJICAgICAgIGNsaWVudCwgJnJlcGwuZnJvbV9zbGF2ZSwKKwkJ CSAgICAgICAwLCBUUlVFLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKQorCSAg ICB7CisJICAgICAgdGVybWlvc19wcmludGYgKCJEdXBsaWNhdGVIYW5kbGUg KGZyb21fc2xhdmUpLCAlRSIpOworCSAgICAgIGdvdG8gcmVwbHk7CisJICAg IH0KIAl9CiByZXBseToKICAgICAgIHJlcGwuZXJyb3IgPSBHZXRMYXN0RXJy b3IgKCk7CkBAIC0xNjQzLDYgKzE3NjUsNyBAQCBmaGFuZGxlcl9wdHlfbWFz dGVyOjpzZXR1cCAoKQogCiAgIHQuc2V0X2Zyb21fbWFzdGVyIChmcm9tX21h c3Rlcik7CiAgIHQuc2V0X3RvX21hc3RlciAodG9fbWFzdGVyKTsKKyAgdC5z ZXRfZnJvbV9zbGF2ZSAoZ2V0X2lvX2hhbmRsZSAoKSk7CiAgIHQud2luc2l6 ZS53c19jb2wgPSA4MDsKICAgdC53aW5zaXplLndzX3JvdyA9IDI1OwogICB0 Lm1hc3Rlcl9waWQgPSBteXNlbGYtPnBpZDsKQEAgLTE2ODEsNiArMTgwNCw3 IEBAIGZoYW5kbGVyX3B0eV9tYXN0ZXI6OmZpeHVwX2FmdGVyX2ZvcmsgKEhB TkRMRSBwYXJlbnQpCiAJewogCSAgdC5zZXRfZnJvbV9tYXN0ZXIgKGFyY2gt PmZyb21fbWFzdGVyKTsKIAkgIHQuc2V0X3RvX21hc3RlciAoYXJjaC0+dG9f bWFzdGVyKTsKKwkgIHQuc2V0X2Zyb21fc2xhdmUgKGFyY2gtPmdldF9pb19o YW5kbGUgKCkpOwogCX0KICAgICAgIGFyY2gtPmR3UHJvY2Vzc0lkID0gd3Bp ZDsKICAgICB9CkBAIC0xNjk3LDkzICsxODIxLDMgQEAgZmhhbmRsZXJfcHR5 X21hc3Rlcjo6Zml4dXBfYWZ0ZXJfZXhlYyAoKQogICBlbHNlCiAgICAgZnJv bV9tYXN0ZXIgPSB0b19tYXN0ZXIgPSBOVUxMOwogfQotCi1CT09MCi1maGFu ZGxlcl9wdHlfY29tbW9uOjpwcm9jZXNzX29wb3N0X291dHB1dCAoSEFORExF IGgsIGNvbnN0IHZvaWQgKnB0ciwgc3NpemVfdCYgbGVuLCBib29sIGlzX2Vj aG8pCi17Ci0gIHNzaXplX3QgdG93cml0ZSA9IGxlbjsKLSAgQk9PTCByZXMg PSBUUlVFOwotICB3aGlsZSAodG93cml0ZSkKLSAgICB7Ci0gICAgICBpZiAo IWlzX2VjaG8pCi0JewotCSAgaWYgKHRjICgpLT5vdXRwdXRfc3RvcHBlZCAm JiBpc19ub25ibG9ja2luZyAoKSkKLQkgICAgewotCSAgICAgIGlmICh0b3dy aXRlIDwgbGVuKQotCQlicmVhazsKLQkgICAgICBlbHNlCi0JCXsKLQkJICBz ZXRfZXJybm8oRUFHQUlOKTsKLQkJICBsZW4gPSAtMTsKLQkJICByZXR1cm4g VFJVRTsKLQkJfQotCSAgICB9Ci0JICB3aGlsZSAodGMgKCktPm91dHB1dF9z dG9wcGVkKQotCSAgICBjeWd3YWl0ICgxMCk7Ci0JfQotCi0gICAgICBpZiAo IShnZXRfdHR5cCAoKS0+dGkuY19vZmxhZyAmIE9QT1NUKSkJLy8gcmF3IG91 dHB1dCBtb2RlCi0JewotCSAgRFdPUkQgbiA9IE1JTiAoT1VUX0JVRkZFUl9T SVpFLCB0b3dyaXRlKTsKLQkgIHJlcyA9IFdyaXRlRmlsZSAoaCwgcHRyLCBu LCAmbiwgTlVMTCk7Ci0JICBpZiAoIXJlcykKLQkgICAgYnJlYWs7Ci0JICBw dHIgPSAoY2hhciAqKSBwdHIgKyBuOwotCSAgdG93cml0ZSAtPSBuOwotCX0K LSAgICAgIGVsc2UJCQkJCS8vIHBvc3QtcHJvY2VzcyBvdXRwdXQKLQl7Ci0J ICBjaGFyIG91dGJ1ZltPVVRfQlVGRkVSX1NJWkUgKyAxXTsKLQkgIGNoYXIg KmJ1ZiA9IChjaGFyICopcHRyOwotCSAgRFdPUkQgbiA9IDA7Ci0JICBzc2l6 ZV90IHJjID0gMDsKLQkgIGFjcXVpcmVfb3V0cHV0X211dGV4IChJTkZJTklU RSk7Ci0JICB3aGlsZSAobiA8IE9VVF9CVUZGRVJfU0laRSAmJiByYyA8IHRv d3JpdGUpCi0JICAgIHsKLQkgICAgICBzd2l0Y2ggKGJ1ZltyY10pCi0JCXsK LQkJY2FzZSAnXHInOgotCQkgIGlmICgoZ2V0X3R0eXAgKCktPnRpLmNfb2Zs YWcgJiBPTk9DUikKLQkJICAgICAgJiYgZ2V0X3R0eXAgKCktPmNvbHVtbiA9 PSAwKQotCQkgICAgewotCQkgICAgICByYysrOwotCQkgICAgICBjb250aW51 ZTsKLQkJICAgIH0KLQkJICBpZiAoZ2V0X3R0eXAgKCktPnRpLmNfb2ZsYWcg JiBPQ1JOTCkKLQkJICAgIHsKLQkJICAgICAgb3V0YnVmW24rK10gPSAnXG4n OwotCQkgICAgICByYysrOwotCQkgICAgfQotCQkgIGVsc2UKLQkJICAgIHsK LQkJICAgICAgb3V0YnVmW24rK10gPSBidWZbcmMrK107Ci0JCSAgICAgIGdl dF90dHlwICgpLT5jb2x1bW4gPSAwOwotCQkgICAgfQotCQkgIGJyZWFrOwot CQljYXNlICdcbic6Ci0JCSAgaWYgKGdldF90dHlwICgpLT50aS5jX29mbGFn ICYgT05MQ1IpCi0JCSAgICB7Ci0JCSAgICAgIG91dGJ1ZltuKytdID0gJ1xy JzsKLQkJICAgICAgZ2V0X3R0eXAgKCktPmNvbHVtbiA9IDA7Ci0JCSAgICB9 Ci0JCSAgaWYgKGdldF90dHlwICgpLT50aS5jX29mbGFnICYgT05MUkVUKQot CQkgICAgZ2V0X3R0eXAgKCktPmNvbHVtbiA9IDA7Ci0JCSAgb3V0YnVmW24r K10gPSBidWZbcmMrK107Ci0JCSAgYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCSAg b3V0YnVmW24rK10gPSBidWZbcmMrK107Ci0JCSAgZ2V0X3R0eXAgKCktPmNv bHVtbisrOwotCQkgIGJyZWFrOwotCQl9Ci0JICAgIH0KLQkgIHJlbGVhc2Vf b3V0cHV0X211dGV4ICgpOwotCSAgcmVzID0gV3JpdGVGaWxlIChoLCBvdXRi dWYsIG4sICZuLCBOVUxMKTsKLQkgIGlmICghcmVzKQotCSAgICBicmVhazsK LQkgIHB0ciA9IChjaGFyICopIHB0ciArIHJjOwotCSAgdG93cml0ZSAtPSBy YzsKLQl9Ci0gICAgfQotICBsZW4gLT0gdG93cml0ZTsKLSAgcmV0dXJuIHJl czsKLX0KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc2VsZWN0LmNjIGIv d2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MKaW5kZXggMTcwNmM4Ny4uMTdhMzJh MyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MKKysrIGIv d2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MKQEAgLTYwNCw2ICs2MDQsMTEgQEAg cGVla19waXBlIChzZWxlY3RfcmVjb3JkICpzLCBib29sIGZyb21fc2VsZWN0 KQogCSAgewogCSAgICBmaGFuZGxlcl9wdHlfbWFzdGVyICpmaG0gPSAoZmhh bmRsZXJfcHR5X21hc3RlciAqKSBmaDsKIAkgICAgZmhtLT5mbHVzaF90b19z bGF2ZSAoKTsKKwkgICAgaWYgKGZobS0+bmVlZF9ubCkKKwkgICAgICB7CisJ CWdvdG9uZSA9IHMtPnJlYWRfcmVhZHkgPSB0cnVlOworCQlnb3RvIG91dDsK KwkgICAgICB9CiAJICB9CiAJICBicmVhazsKIAlkZWZhdWx0OgpkaWZmIC0t Z2l0IGEvd2luc3VwL2N5Z3dpbi90dHkuY2MgYi93aW5zdXAvY3lnd2luL3R0 eS5jYwppbmRleCAzZjEwNzdkLi5hZjYxNmQ2IDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL3R0eS5jYworKysgYi93aW5zdXAvY3lnd2luL3R0eS5jYwpA QCAtMjM3LDcgKzIzNyw2IEBAIHR0eTo6aW5pdCAoKQogICB3YXNfb3BlbmVk ID0gZmFsc2U7CiAgIG1hc3Rlcl9waWQgPSAwOwogICBpc19jb25zb2xlID0g ZmFsc2U7Ci0gIGNvbHVtbiA9IDA7CiB9CiAKIEhBTkRMRQpkaWZmIC0tZ2l0 IGEvd2luc3VwL2N5Z3dpbi90dHkuaCBiL3dpbnN1cC9jeWd3aW4vdHR5LmgK aW5kZXggMjdkNDNmNy4uYzJhMzg3ZSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5 Z3dpbi90dHkuaAorKysgYi93aW5zdXAvY3lnd2luL3R0eS5oCkBAIC05Miwx NiArOTIsMTggQEAgcHVibGljOgogcHJpdmF0ZToKICAgSEFORExFIF9mcm9t X21hc3RlcjsKICAgSEFORExFIF90b19tYXN0ZXI7CisgIEhBTkRMRSBfZnJv bV9zbGF2ZTsKIAogcHVibGljOgogICBIQU5ETEUgZnJvbV9tYXN0ZXIoKSBj b25zdCB7IHJldHVybiBfZnJvbV9tYXN0ZXI7IH0KICAgSEFORExFIHRvX21h c3RlcigpIGNvbnN0IHsgcmV0dXJuIF90b19tYXN0ZXI7IH0KKyAgSEFORExF IGZyb21fc2xhdmUoKSBjb25zdCB7IHJldHVybiBfZnJvbV9zbGF2ZTsgfQog ICB2b2lkIHNldF9mcm9tX21hc3RlciAoSEFORExFIGgpIHsgX2Zyb21fbWFz dGVyID0gaDsgfQogICB2b2lkIHNldF90b19tYXN0ZXIgKEhBTkRMRSBoKSB7 IF90b19tYXN0ZXIgPSBoOyB9CisgIHZvaWQgc2V0X2Zyb21fc2xhdmUgKEhB TkRMRSBoKSB7IF9mcm9tX3NsYXZlID0gaDsgfQogCiAgIGludCByZWFkX3Jl dHZhbDsKICAgYm9vbCB3YXNfb3BlbmVkOwkvKiBUcnVlIGlmIG9wZW5lZCBh dCBsZWFzdCBvbmNlLiAqLwotICBpbnQgY29sdW1uOwkvKiBDdXJyZW50IENv bHVtbiAqLwogCiAgIHZvaWQgaW5pdCAoKTsKICAgSEFORExFIG9wZW5faW51 c2UgKEFDQ0VTU19NQVNLIGFjY2Vzcyk7Cg== --Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t Content-Type: text/plain; charset=us-ascii Content-length: 218 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t--