delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2015/04/17/07:28:02

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:in-reply-to
:references:mime-version:content-type; q=dns; s=default; b=vQgmR
RaYvAGQe/Tp8ya7CTiWsS9+CTPEiaIgGE2vourCxXwoFmPcicOVudfQ3Dm85NFG8
GWNNmetsRqpYCXbfkp+nxghU+OYvc8xO7b1EJkhWkS1gdpoP39XdIqMNakIeHA2J
k4cihewoWzwmZ0JtYg6ZImQd8AP2+66I1Aghrw=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:in-reply-to
:references:mime-version:content-type; s=default; bh=49RROI0OY7y
buFKnfjr3BjJW1o0=; b=fe12OxeCThmhnMakuZpuUTlO/lvhkgFt7rNfvrwaRFt
BNe7gXSgzLlxj1f0wAhEkXJYzAAHli99X6hUYw+dASci6PzBcwWcdurYs4vM66gZ
1KuHOBt3UyPP5npGgqP+4FRHGQE8cmdXhNbMyppIjVqLK3V46lxtw5QnZAZxXl9E
=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
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
X-Nifty-SrcIP: [121.93.68.199]
Date: Fri, 17 Apr 2015 20:27:46 +0900
From: Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>
To: cygwin AT cygwin DOT 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 DOT GX3213 AT calimero DOT vinschen DOT de> <20150403130735 DOT d04e41875f7defd0e6c2d8d0 AT nifty DOT ne DOT jp> <20150403113226 DOT GP13285 AT calimero DOT vinschen DOT de> <20150404155520 DOT 8564347f1d42b3c709718aad AT nifty DOT ne DOT jp> <20150404084354 DOT GX13285 AT calimero DOT vinschen DOT de> <20150405205504 DOT cda3df2cc76f7bca7c3d21fb AT nifty DOT ne DOT jp> <20150407091113 DOT GB2819 AT calimero DOT vinschen DOT de> <20150413193100 DOT a393612bde79a4ae57b8c7d9 AT nifty DOT ne DOT jp> <20150414073456 DOT GY7343 AT calimero DOT vinschen DOT de> <20150416092618 DOT 9975c0e29b8703dbd8d4aa6a AT nifty DOT ne DOT jp> <20150416090533 DOT GB3657 AT calimero DOT vinschen DOT de>
Mime-Version: 1.0
X-IsSubscribed: yes

--Multipart=_Fri__17_Apr_2015_20_27_46_+0900_q5Maze=eeRnRg72t
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hi Corinna,

On Thu, 16 Apr 2015 11:05:33 +0200
Corinna Vinschen <corinna-cygwin AT cygwin DOT com> 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  <takashi DOT yano AT nifty DOT ne DOT jp>

	* 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 <takashi DOT yano AT nifty DOT ne DOT jp>

--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

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

--
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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019