Re: TOC plugin
"A. Craig West" <[email protected]> Thu, 13 May 2004 16:24:51 -0400 (EDT)
| Newsgroups | gmane.network.everybuddy.devel |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to [email protected] for more info. ---1463811291-116493841-1084479891=:21935 Content-Type: TEXT/PLAIN; charset=US-ASCII On Mon, 10 May 2004, A. Craig West wrote: > As promised, here are my nifty new toc patches relative to the head of > subversion. This change makes all socket connections asyncronous, which works > much better than syncronous now, and it re-organizes the code to more closely > follow the structure of the MSN and Yahoo code. Okay, I finally figured out why I occasionally get flakiness in my connection. For some reason, AIM socket connections occasionally timeout. If, however, the user got tired of waiting for it and closed the connection manually, the input handler set up for the original connect is left hanging around, and eventually detects the timout. The way my toc code is at the moment, this is detected as an error on the new, valid connection, which causes no end of confusion... The solution is to check connection callbacks, and if we have a valid connection already, ignore the callback, seeing as it is most likely a leftover from an earlier attempt. The patch is attached. This patch is made against the current head of subversion, as usual... -- Craig West Ph: (416) 666-1645 | It's not a bug, [email protected] | It's a feature... ---1463811291-116493841-1084479891=:21935 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="toc.patch" Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: PATCH for toc plugin of eb-lite Content-Disposition: attachment; filename="toc.patch" SW5kZXg6IHBsdWdpbnMvdG9jL2xpYnRvYy5oDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQotLS0gcGx1Z2lucy90b2MvbGlidG9jLmgJKHJldmlzaW9uIDM1 NykNCisrKyBwbHVnaW5zL3RvYy9saWJ0b2MuaAkod29ya2luZyBjb3B5KQ0K QEAgLTY1LDggKzY1LDggQEANCiBleHRlcm4gdm9pZCAoKnRvY191c2VyX2lu Zm8pKHRvY19jb25uICAqIGNvbm4sIGNoYXIgKiB1c2VyLCBjaGFyICogbWVz c2FnZSApOw0KIA0KIHZvaWQgdG9jX2NhbGxiYWNrKCB0b2NfY29ubiAqIGNv bm4gKTsNCi10b2NfY29ubiAqIHRvY19zaWdub24oIGNoYXIgKiB1c2VybmFt ZSwgY2hhciAqIHBhc3N3b3JkLA0KLQkJY2hhciAqIHNlcnZlciwgc2hvcnQg cG9ydCwgY2hhciAqIGluZm8gKTsNCit2b2lkIHRvY19zaWdub24oIGNoYXIg KiB1c2VybmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KKwkJY2hhciAqIHNlcnZl ciwgc2hvcnQgcG9ydCwgY2hhciAqIGluZm8sIHZvaWQgKCpjYWxsYmFjayko dm9pZCAqIGRhdGEsIHRvY19jb25uICogY29ubiksIHZvaWQgKiBkYXRhKTsN CiB2b2lkIHRvY19zZW5kX2tlZXBfYWxpdmUoIHRvY19jb25uICogY29ubiAp Ow0KIHZvaWQgdG9jX3NpZ25vZmYoIHRvY19jb25uICogY29ubiApOw0KIHZv aWQgdG9jX3NlbmRfaW0oIHRvY19jb25uICogY29ubiwgY2hhciAqIHVzZXJu YW1lLCBjaGFyICogbWVzc2FnZSApOw0KSW5kZXg6IHBsdWdpbnMvdG9jL3Rv Yy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcGx1Z2lucy90b2Mv dG9jLmMJKHJldmlzaW9uIDM1NykNCisrKyBwbHVnaW5zL3RvYy90b2MuYwko d29ya2luZyBjb3B5KQ0KQEAgLTM1LDYgKzM1LDkgQEANCiANCiBpbnQgZWJf dG9jX2luaXQodm9pZCk7DQogaW50IGViX3RvY19maW5pc2godm9pZCk7DQor dm9pZCBlYl90b2NfbG9naW4oZWJfbG9jYWxfYWNjb3VudCAqIGVsYSk7DQor dm9pZCBlYl90b2NfbG9nb3V0KGViX2xvY2FsX2FjY291bnQgKiBlbGEpOw0K K3ZvaWQgZWJfdG9jX2Rpc2Nvbm5lY3QgKHRvY19jb25uICogY29ubik7DQog DQogZWJfcGx1Z2luX2luZm8gdG9jX0xUWF9wbHVnaW5faW5mbz17IkFJTS9J Q1EgdmlhIFRPQyIsICJUb3JyZXkgU2VhcmxlJ3MgbGlidG9jIiwgIldobyBr bm93cz8iLCAiV2hvIGNhcmVzPyIsIGViX3RvY19pbml0LCBlYl90b2NfZmlu aXNofTsNCiANCkBAIC05NCw4NSArOTcsMTUyIEBADQogdm9pZCBlYl90b2Nf c2V0X3N0YXRlKGViX2xvY2FsX2FjY291bnQgKiBlbGEsIGNoYXIgKiBzdGF0 ZSkNCiB7DQogICBlYl90b2NfbGFkICogbGFkPUdFVF9MQUQoZWxhKTsNCisg IGNoYXIgKiBzdF9zdHIgPSBOVUxMOw0KIA0KLSAgaWYoIXN0cmNtcChzdGF0 ZSwgIk9ubGluZSIpIHx8ICFzdHJjbXAoc3RhdGUsICJBd2F5IikpDQorICBp Zighc3RyY21wKHN0YXRlLCAiT2ZmbGluZSIpKQ0KICAgew0KLSAgICBpZihl bGEtPmNvbm5lY3RlZCkNCisgICAgZWJfdG9jX2xvZ291dChlbGEpOw0KKyAg ICByZXR1cm47DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIENoZWNr IGlmIHdlIGFyZSBjb25uZWN0ZWQgeWV0ICovDQorICAgIGlmICghZWxhLT5j b25uZWN0ZWQpDQogICAgIHsNCi0gICAgICBpZihlbGEtPnJlYWR5ICYmIHN0 YXRlWzBdPT0nQScgJiYgIWxhZC0+YXdheSkNCisgICAgICAvKiBjb25uZWN0 IHRvIHRoZSBzZXJ2ZXIgKi8NCisgICAgICBlYl90b2NfbG9naW4oZWxhKTsN CisgICAgfQ0KKyAgICBlbHNlIGlmIChlbGEtPnJlYWR5KQ0KKyAgICB7DQor ICAgICAgLyogT25seSBzZXQgdGhlIGF3YXkgbWVzc2FnZSBpZiB0aGUgY29u bmVjdGlvbiBpcyByZWFkeSAqLw0KKw0KKyAgICAgIGlmKCFzdHJjbXAoc3Rh dGUsICJPbmxpbmUiKSkNCiAgICAgICB7DQotICAgICAgICB0b2Nfc2V0X2F3 YXkobGFkLT5jb25uLCAiVGhpcyB1c2VyIGlzIGF3YXkuIik7DQotICAgICAg ICBsYWQtPmF3YXk9MTsNCi0gICAgICAgIGZyZWUoZWxhLT5zdGF0dXNfc3Ry aW5nKTsNCi0gICAgICAgIGVsYS0+c3RhdHVzX3N0cmluZz1zdHJkdXAoIkF3 YXkiKTsNCisJaWYgKGxhZC0+YXdheSkNCisJew0KKwkgIHRvY19zZXRfYXdh eShsYWQtPmNvbm4sIE5VTEwpOw0KKwkgIGxhZC0+YXdheSA9IDA7DQorCX0N CiAgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisJLyogd2hlbiBj aGFuZ2luZyB0aGUgYXdheSBtZXNzYWdlLCBuZWVkIHRvIGNoYW5nZSB0byBu b3QgYXdheSBmaXJzdCAqLw0KKyAgICAgICAgaWYgKGxhZC0+YXdheSkNCisJ ew0KKwkgIHRvY19zZXRfYXdheShsYWQtPmNvbm4sIE5VTEwpOw0KKwl9DQor CWVsc2UNCisJew0KKwkgIGxhZC0+YXdheSA9IDE7DQorCX0NCiANCi0gICAg ICBpZihlbGEtPnJlYWR5ICYmIHN0YXRlWzBdPT0nTycgJiYgbGFkLT5hd2F5 KQ0KLSAgICAgIHsNCi0gICAgICAgIHRvY19zZXRfYXdheShsYWQtPmNvbm4s IE5VTEwpOw0KLSAgICAgICAgbGFkLT5hd2F5PTA7DQotICAgICAgICBmcmVl KGVsYS0+c3RhdHVzX3N0cmluZyk7DQotICAgICAgICBlbGEtPnN0YXR1c19z dHJpbmc9c3RyZHVwKCJPbmxpbmUiKTsNCisJaWYoIXN0cmNtcChzdGF0ZSwg IkF3YXkiKSkNCisJew0KKwkgIHRvY19zZXRfYXdheShsYWQtPmNvbm4sICJU aGlzIHVzZXIgaXMgYXdheS4iKTsNCisJfQ0KKwllbHNlDQorCXsNCisJICB0 b2Nfc2V0X2F3YXkobGFkLT5jb25uLCBzdGF0ZSk7DQorCX0NCiAgICAgICB9 DQogDQorICAgICAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0KKyAgICAg IGVsYS0+c3RhdHVzX3N0cmluZyA9IHN0cmR1cChzdGF0ZSk7DQogICAgICAg ZWJfbG9jYWxfYWNjb3VudF91cGRhdGUoZWxhKTsNCi0gICAgICByZXR1cm47 DQogICAgIH0NCisgIH0NCit9DQogDQotICAgIGVsYS0+Y29ubmVjdGVkPTE7 DQotICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQordm9pZCBl Yl90b2Nfc2lnbm9uX2NiKHZvaWQgKiBkYXRhLCB0b2NfY29ubiAqIGNvbm4p DQorew0KKyAgZWJfbG9jYWxfYWNjb3VudCAqIGVsYSA9IGRhdGE7DQogDQot ICAgIGxhZC0+Y29ubj10b2Nfc2lnbm9uKGVsYS0+aGFuZGxlLCBlYl9nZXRf dmFsdWUoZWxhLT5jb25maWdfa2V5LCAicGFzc3dvcmQiKSwNCi0gICAgICBl Yl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidG9jL3NlcnZlciIpLCBh dG9pKGViX2dldF92YWx1ZShlbGEtPmNvbmZpZ19rZXksICJ0b2MvcG9ydCIp KSwNCi0gICAgICBlYl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidXNl cl9pbmZvIikpOw0KKyAgZWJfdG9jX2xhZCAqIGxhZCA9IEdFVF9MQUQoZWxh KTsNCiANCi0gICAgaWYobGFkLT5jb25uPT1OVUxMKQ0KLSAgICB7DQotICAg ICAgZWJfc2hvd19lcnJvcigiQ291bGQgbm90IGxvZyBpbnRvIFRPQyBzZXJ2 ZXIuIENoZWNrIHlvdXIgcHJlZmVyZW5jZXMgYW5kIHRyeSBhZ2Fpbi4iLCAi Q29ubmVjdGlvbiBmYWlsZWQiKTsNCi0gICAgICBlbGEtPmNvbm5lY3RlZD0w Ow0KLSAgICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQotICAg ICAgcmV0dXJuOw0KLSAgICB9DQorICBpZiAobGFkID09IE5VTEwpDQorICB7 DQorICAgIGlmIChjb25uKQ0KKyAgICAgIGZyZWUoY29ubik7DQorICAgIHJl dHVybjsNCisgIH0NCiANCi0gICAgbGFkLT5mZF90YWc9ZWJfaW5wdXRfYWRk KGxhZC0+Y29ubi0+ZmQsIEVCX0lOUFVUX1JFQUR8RUJfSU5QVVRfRVhDRVBU SU9OLCBlYl90b2NfY2FsbGJhY2ssIGxhZC0+Y29ubik7DQorICBpZiAoZWxh LT5yZWFkeSB8fCBsYWQtPmNvbm4pDQorICB7DQorICAgIC8vIEV4dHJhIGNv bm5lY3QgY2FsbGJhY2ssIHByb2JhYmx5IGZyb20gYSBwcmV2aW91cyBhdHRl bXB0DQorICAgIGlmIChjb25uKQ0KKyAgICAgIGZyZWUoY29ubik7DQorICAg IHJldHVybjsNCisgIH0NCiANCi0gICAgbGFkLT5jb25uLT5hY2NvdW50PWVs YTsNCi0NCi0gICAgZWxhLT5yZWFkeT0xOw0KLSAgICBpZihzdGF0ZVswXT09 J0EnKQ0KLSAgICB7DQotICAgICAgdG9jX3NldF9hd2F5KGxhZC0+Y29ubiwg IlRoaXMgdXNlciBpcyBhd2F5Iik7DQotICAgICAgbGFkLT5hd2F5PTE7DQot ICAgICAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0KLSAgICAgIGVsYS0+ c3RhdHVzX3N0cmluZz1zdHJkdXAoIkF3YXkiKTsNCi0gICAgfSBlbHNlIHsN Ci0gICAgICBmcmVlKGVsYS0+c3RhdHVzX3N0cmluZyk7DQotICAgICAgZWxh LT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiT25saW5lIik7DQotICAgIH0NCisg IGlmIChjb25uID09IE5VTEwpDQorICB7DQorICAgIGViX3Nob3dfZXJyb3Io IkNvdWxkIG5vdCBsb2cgaW50byBUT0Mgc2VydmVyLiBDaGVjayB5b3VyIHBy ZWZlcmVuY2VzIGFuZCB0cnkgYWdhaW4uIiwgIkNvbm5lY3Rpb24gZmFpbGVk Iik7DQorICAgIGVsYS0+Y29ubmVjdGVkID0gZWxhLT5yZWFkeSA9IDA7DQog ICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQogICAgIHJldHVy bjsNCiAgIH0NCiANCi0gIGlmKCFzdHJjbXAoc3RhdGUsICJPZmZsaW5lIikp DQotICB7DQotICAgIGlmKCFlbGEtPmNvbm5lY3RlZCkgeyByZXR1cm47IH0N CisgIGxhZC0+Y29ubiA9IGNvbm47DQogDQotICAgIHRvY19zaWdub2ZmKGxh ZC0+Y29ubik7DQotICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7 DQotICB9DQorICBsYWQtPmNvbm4tPmFjY291bnQgPSBlbGE7DQorDQorICBs YWQtPmZkX3RhZyA9IGViX2lucHV0X2FkZChsYWQtPmNvbm4tPmZkLCBFQl9J TlBVVF9SRUFEfEVCX0lOUFVUX0VYQ0VQVElPTiwgZWJfdG9jX2NhbGxiYWNr LCBsYWQtPmNvbm4pOw0KKw0KKyAgZWxhLT5yZWFkeSA9IDE7DQorICBlYl90 b2Nfc2V0X3N0YXRlKGVsYSwgIk9ubGluZSIpOw0KIH0NCiANCiB2b2lkIGVi X3RvY19sb2dpbihlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KIHsNCi0gIGlm KGF0b2koZWJfZ2V0X3ZhbHVlKGVsYS0+Y29uZmlnX2tleSwgImV4Y2xfc29h IikpKQ0KKyAgZWJfdG9jX2xhZCAqIGxhZCA9IEdFVF9MQUQoZWxhKTsNCisN CisgIGlmIChhdG9pKGViX2dldF92YWx1ZShlbGEtPmNvbmZpZ19rZXksICJl eGNsX3NvYSIpKSkNCiAgIHsgcmV0dXJuOyB9DQogDQotICBlYl90b2Nfc2V0 X3N0YXRlKGVsYSwgIk9ubGluZSIpOw0KKyAgZWxhLT5jb25uZWN0ZWQgPSAx Ow0KKyAgZWxhLT5yZWFkeSA9IDA7DQorICBlYl9sb2NhbF9hY2NvdW50X3Vw ZGF0ZShlbGEpOw0KKw0KKyAgaWYgKGxhZC0+Y29ubiAhPSBOVUxMKQ0KKyAg ew0KKyAgICBlYl90b2NfZGlzY29ubmVjdChsYWQtPmNvbm4pOw0KKyAgfQ0K Kw0KKyAgdG9jX3NpZ25vbihlbGEtPmhhbmRsZSwgZWJfZ2V0X3ZhbHVlKGVs YS0+Y29uZmlnX2tleSwgInBhc3N3b3JkIiksDQorICAgIGViX2dldF92YWx1 ZShlbGEtPmNvbmZpZ19rZXksICJ0b2Mvc2VydmVyIiksIGF0b2koZWJfZ2V0 X3ZhbHVlKGVsYS0+Y29uZmlnX2tleSwgInRvYy9wb3J0IikpLA0KKyAgICBl Yl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidXNlcl9pbmZvIiksIGVi X3RvY19zaWdub25fY2IsIGVsYSk7DQogfQ0KIA0KIHZvaWQgZWJfdG9jX2xv Z291dChlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KIHsNCi0gIGViX3RvY19z ZXRfc3RhdGUoZWxhLCAiT2ZmbGluZSIpOw0KKyAgRUxpc3QgKiBlbjsNCisg IGViX3RvY19sYWQgKiBsYWQgPSBHRVRfTEFEKGVsYSk7DQorDQorICBpZiAo IWVsYS0+Y29ubmVjdGVkKQ0KKyAgICByZXR1cm47DQorDQorICBmb3IgKGVu ID0gZWxhLT5idWRkaWVzOyBlbiAhPSBOVUxMOyBlbiA9IGVuLT5uZXh0KQ0K KyAgew0KKyAgICBlYl9hY2NvdW50ICogYWNjID0gKGViX2FjY291bnQgKill bi0+ZGF0YTsNCisgICAgaWYgKGFjYy0+c3RhdHVzICE9IEVCX0FDQ09VTlRf T0ZGTElORSkNCisgICAgew0KKyAgICAgIGZyZWUoYWNjLT5zdGF0dXNfc3Ry aW5nKTsNCisgICAgICBhY2MtPnN0YXR1c19zdHJpbmcgPSBzdHJkdXAoIk9m ZmxpbmUiKTsNCisgICAgICBhY2MtPnN0YXR1cyA9IEVCX0FDQ09VTlRfT0ZG TElORTsNCisgICAgICBlYl9idWRkeV91cGRhdGVfc3RhdHVzKGFjYyk7DQor ICAgICAgZWJfYnVkZHlfbG9nb3V0KGFjYyk7DQorICAgIH0NCisgIH0NCisN CisgIGZyZWUoZWxhLT5zdGF0dXNfc3RyaW5nKTsNCisgIGVsYS0+c3RhdHVz X3N0cmluZyA9IHN0cmR1cCgiT2ZmbGluZSIpOw0KKyAgZWxhLT5yZWFkeSA9 IGVsYS0+Y29ubmVjdGVkID0gMDsNCisgIGViX2xvY2FsX2FjY291bnRfdXBk YXRlKGVsYSk7DQorICBpZiAobGFkLT5jb25uICE9IE5VTEwpDQorICB7DQor ICAgIGViX3RvY19kaXNjb25uZWN0KGxhZC0+Y29ubik7DQorICB9DQorICBs YWQtPmF3YXk9MDsNCiB9DQogDQogdm9pZCBlYl90b2Nfc2V0dXBfbG9jYWxf YWNjb3VudChlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KQEAgLTI3MywzMyAr MzQzLDEyIEBADQogDQogdm9pZCBlYl90b2Nfc2V0X2F3YXkoZWJfbG9jYWxf YWNjb3VudCAqIGVsYSwgY2hhciAqIHNob3J0X21zZywgY2hhciAqIGxvbmdf bXNnKQ0KIHsNCi0gIGViX3RvY19sYWQgKiBsYWQ9R0VUX0xBRChlbGEpOw0K LQ0KLSAgaWYobGFkLT5hd2F5KQ0KLSAgeyB0b2Nfc2V0X2F3YXkobGFkLT5j b25uLCBOVUxMKTsgfQ0KLQ0KLSAgdG9jX3NldF9hd2F5KGxhZC0+Y29ubiwg bG9uZ19tc2cpOw0KLQ0KLSAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0K LSAgZWxhLT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiQXdheSIpOw0KLSAgZWJf bG9jYWxfYWNjb3VudF91cGRhdGUoZWxhKTsNCi0NCi0gIGxhZC0+YXdheT0x Ow0KKyAgZWJfdG9jX3NldF9zdGF0ZShlbGEsIGxvbmdfbXNnKTsNCiB9DQog DQogdm9pZCBlYl90b2NfdW5zZXRfYXdheShlYl9sb2NhbF9hY2NvdW50ICog ZWxhKQ0KIHsNCi0gIGViX3RvY19sYWQgKiBsYWQ9R0VUX0xBRChlbGEpOw0K LQ0KLSAgaWYobGFkLT5hd2F5KQ0KLSAgew0KLSAgICB0b2Nfc2V0X2F3YXko bGFkLT5jb25uLCBOVUxMKTsNCi0gICAgbGFkLT5hd2F5PTA7DQotDQotICAg IGZyZWUoZWxhLT5zdGF0dXNfc3RyaW5nKTsNCi0gICAgZWxhLT5zdGF0dXNf c3RyaW5nPXN0cmR1cCgiT25saW5lIik7DQotICAgIGViX2xvY2FsX2FjY291 bnRfdXBkYXRlKGVsYSk7DQotICB9DQorICBlYl90b2Nfc2V0X3N0YXRlKGVs YSwgIk9ubGluZSIpOw0KIH0NCiANCiB2b2lkIGViX3RvY19qb2luX2dyb3Vw X2NoYXQoZWJfbG9jYWxfYWNjb3VudCAqIGVsYSwgY2hhciAqIG5hbWUpDQpA QCAtNDI3LDU0ICs0NzYsODQgQEANCiB2b2lkIGViX3RvY191cGRhdGVfdXNl cl9zdGF0dXMgKHRvY19jb25uICogY29ubiwgY2hhciAqIHVzZXIsIGludCBv bmxpbmUsIHRpbWVfdCBpZGxlLCBpbnQgZXZpbCwgaW50IHVuYXZhaWxhYmxl ICkNCiB7DQogICBlYl9sb2NhbF9hY2NvdW50ICogZWxhPUdFVF9FTEEoY29u bik7DQotICBlYl9hY2NvdW50ICogYWNjPWViX3RvY19nZXRfYWNjb3VudChl bGEsIHVzZXIpOw0KKyAgZWJfYWNjb3VudCAqIGFjYzsNCiAgIGNoYXIgYnVm WzY0XTsNCi0gIGNoYXIgYnVmMlszMl07DQorICBjaGFyIGJ1ZjJbNjRdOw0K KyAgaW50IGRvX2xvZ2luID0gMDsNCisgIGludCBkb19sb2dvdXQgPSAwOw0K IA0KLSAgaWYoYWNjPT1OVUxMKQ0KKyAgaWYgKGVsYSA9PSBOVUxMKQ0KICAg ew0KICAgICBwcmludGYoIk1hcnRpYW4gYnVkZHkgdXBkYXRlICglcylcbiIs IHVzZXIpOw0KICAgICByZXR1cm47DQogICB9DQogDQotICBpZihhY2MtPnN0 YXR1cyE9RUJfQUNDT1VOVF9PRkZMSU5FICYmICFvbmxpbmUpDQotICB7IGVi X2J1ZGR5X2xvZ291dChhY2MpOyByZXR1cm47IH0NCisgIGFjYyA9IGViX3Rv Y19nZXRfYWNjb3VudChlbGEsIHVzZXIpOw0KKyAgaWYgKGFjYyA9PSBOVUxM KQ0KKyAgew0KKyAgICBhY2MgPSBlYl9hZGRfYWNjb3VudF9wbHVzKCJVbmtu b3duIiwgdXNlciwgZWxhLCB1c2VyKTsNCisgIH0NCiANCi0gIGlmKGFjYy0+ c3RhdHVzPT1FQl9BQ0NPVU5UX09GRkxJTkUgJiYgb25saW5lKQ0KLSAgeyBl Yl9idWRkeV9sb2dpbihhY2MpOyB9DQorICBpZiAoYWNjLT5zdGF0dXMgPT0g RUJfQUNDT1VOVF9PRkZMSU5FKQ0KKyAgew0KKyAgICBkb19sb2dpbiA9IDE7 DQorICB9DQogDQotICBidWZbMF09J1wwJzsNCi0gIGlmKGlkbGU+MCkNCisg IGZyZWUoYWNjLT5zdGF0dXNfc3RyaW5nKTsNCisgIGlmIChvbmxpbmUpDQog ICB7DQotICAgIGludCBtaW5zPSh0aW1lKE5VTEwpLWlkbGUpLzYwOw0KLSAg ICBidWZbMF09JygnOw0KLSAgICBidWZbMV09J1wwJzsNCisgICAgaWYgKHVu YXZhaWxhYmxlKQ0KKyAgICB7DQorICAgICAgYWNjLT5zdGF0dXMgPSBFQl9B Q0NPVU5UX0FXQVk7DQorICAgICAgc3ByaW50ZihidWYsICJBd2F5Iik7DQor ICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgYWNjLT5zdGF0dXMg PSBFQl9BQ0NPVU5UX09OTElORTsNCisgICAgICBzcHJpbnRmKGJ1ZiwgIiIp Ow0KKyAgICB9DQogDQotICAgIGlmKG1pbnMvKDYwKjI0KSkNCisgICAgaWYg KGlkbGUgPiAwKQ0KICAgICB7DQotICAgICAgc3ByaW50ZihidWYyLCAiJWQ6 IiwgbWlucy8oNjAqMjQpKTsNCisgICAgICBpbnQgbWlucyA9ICh0aW1lKE5V TEwpIC0gaWRsZSkgLyA2MDsNCisgICAgICBzdHJjYXQoYnVmLCAiKCIpOw0K Kw0KKyAgICAgIGlmIChtaW5zIC8gKDYwICogMjQpKQ0KKyAgICAgIHsNCisJ c3ByaW50ZihidWYyLCAiJWQ6IiwgbWlucyAvICg2MCAqIDI0KSk7DQorCXN0 cmNhdChidWYsIGJ1ZjIpOw0KKwltaW5zICU9ICg2MCAqIDI0KTsNCisgICAg ICB9DQorDQorICAgICAgc3ByaW50ZihidWYyLCAiJWQ6JTAyZCkiLCBtaW5z IC8gNjAsIG1pbnMgJSA2MCk7DQogICAgICAgc3RyY2F0KGJ1ZiwgYnVmMik7 DQotICAgICAgbWlucyU9KDYwKjI0KTsNCiAgICAgfQ0KIA0KLSAgICBzcHJp bnRmKGJ1ZjIsICIlZDolMDJkKSIsIG1pbnMvNjAsIG1pbnMlNjApOw0KLSAg ICBzdHJjYXQoYnVmLCBidWYyKTsNCisgICAgaWYgKGV2aWwpDQorICAgIHsN CisgICAgICBzcHJpbnRmKGJ1ZjIsICIgWyVkJSVdIiwgZXZpbCk7DQorICAg ICAgc3RyY2F0KGJ1ZiwgYnVmMik7DQorICAgIH0NCisNCisgICAgYWNjLT5z dGF0dXNfc3RyaW5nID0gc3RyZHVwKGJ1Zik7DQogICB9DQorICBlbHNlDQor ICB7DQorICAgIGFjYy0+c3RhdHVzID0gRUJfQUNDT1VOVF9PRkZMSU5FOw0K KyAgICBhY2MtPnN0YXR1c19zdHJpbmcgPSBzdHJkdXAoIk9mZmxpbmUiKTsN CisgICAgZG9fbG9naW4gPSAwOw0KKyAgICBkb19sb2dvdXQgPSAxOw0KKyAg fQ0KIA0KLSAgaWYoZXZpbCkNCisgIGlmIChkb19sb2dpbikNCiAgIHsNCi0g ICAgY2hhciBidWYyWzMyXTsNCi0gICAgc3ByaW50ZihidWYyLCAiIFslZCUl XSIsIGV2aWwpOw0KLSAgICBzdHJjYXQoYnVmLCBidWYyKTsNCisgICAgZWJf YnVkZHlfbG9naW4oYWNjKTsNCiAgIH0NCi0NCi0gIGlmKHVuYXZhaWxhYmxl KQ0KLSAgeyBhY2MtPnN0YXR1cz1FQl9BQ0NPVU5UX0FXQVk7IH0gZWxzZSB7 IGFjYy0+c3RhdHVzPUVCX0FDQ09VTlRfT05MSU5FOyB9DQotDQotICBmcmVl KGFjYy0+c3RhdHVzX3N0cmluZyk7DQotICBhY2MtPnN0YXR1c19zdHJpbmc9 c3RyZHVwKGJ1Zik7DQotDQogICBlYl9idWRkeV91cGRhdGVfc3RhdHVzKGFj Yyk7DQorICBpZiAoZG9fbG9nb3V0KQ0KKyAgew0KKyAgICBlYl9idWRkeV9s b2dvdXQoYWNjKTsNCisgIH0NCiB9DQogDQogdm9pZCBlYl90b2NfZXJyb3Jf bWVzc2FnZShjaGFyICogbWVzc2FnZSkNCkBAIC00ODUsMzYgKzU2NCwyOCBA QA0KIHZvaWQgZWJfdG9jX2Rpc2Nvbm5lY3QgKHRvY19jb25uICogY29ubikN CiB7DQogICBlYl9sb2NhbF9hY2NvdW50ICogZWxhPUdFVF9FTEEoY29ubik7 DQorICBlYl90b2NfbGFkICogbGFkOw0KICAgRUxpc3QgKiBuOw0KIA0KLSAg aWYoZWxhPT1OVUxMKSB7IHJldHVybjsgfQ0KKyAgaWYgKGNvbm4gPT0gTlVM TCkNCisgICAgcmV0dXJuOw0KIA0KLSAgaWYoZWxhLT5jb25uZWN0ZWQpDQor ICBpZiAoZWxhID09IE5VTEwpDQogICB7DQotICAgIGVsYS0+Y29ubmVjdGVk PTA7DQotICAgIHRvY19zaWdub2ZmKGNvbm4pOw0KICAgfSBlbHNlIHsNCi0g ICAgcHJpbnRmKCJJJ20gZ29pbmcgYWxsIGxvb3B5Li4uXG4iKTsNCi0gIH0N CisgICAgbGFkPUdFVF9MQUQoZWxhKTsNCiANCi0gIEdFVF9MQUQoZWxhKS0+ YXdheT0wOw0KKyAgICBsYWQtPmNvbm4gPSBOVUxMOyAvKiBNYWtlIHN1cmUg dGhhdCBsb2dvdXQgZG9lc24ndCB0cnkgdG8gY2FsbCB1cyAqLw0KIA0KLSAg ZWxhLT5jb25uZWN0ZWQ9MDsNCi0gIGVsYS0+cmVhZHk9MDsNCi0gIEdFVF9M QUQoZWxhKS0+Y29ubj1OVUxMOw0KLSAgZnJlZShlbGEtPnN0YXR1c19zdHJp bmcpOw0KLSAgZWxhLT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiT2ZmbGluZSIp Ow0KLSAgZWJfaW5wdXRfcmVtb3ZlKEdFVF9MQUQoZWxhKS0+ZmRfdGFnKTsN Ci0NCi0gIGZvcihuPWVsYS0+YnVkZGllczsgbiE9TlVMTDsgbj1uLT5uZXh0 KQ0KLSAgew0KLSAgICBlYl9hY2NvdW50ICogYT0oZWJfYWNjb3VudCAqKW4t PmRhdGE7DQotDQotICAgIGlmKGEtPnN0YXR1cyE9RUJfQUNDT1VOVF9PRkZM SU5FKQ0KLSAgICB7IGViX2J1ZGR5X2xvZ291dChhKTsgfQ0KKyAgICBpZihl bGEtPmNvbm5lY3RlZCkNCisgICAgew0KKyAgICAgIGViX3RvY19sb2dvdXQo ZWxhKTsNCisgICAgfQ0KKyAgICBlYl9pbnB1dF9yZW1vdmUobGFkLT5mZF90 YWcpOw0KICAgfQ0KIA0KLSAgZWJfbG9jYWxfYWNjb3VudF91cGRhdGUoZWxh KTsNCisgIHRvY19zaWdub2ZmKGNvbm4pOw0KKyAgZnJlZShjb25uKTsNCiB9 DQogDQogdm9pZCBlYl90b2Nfam9pbl9hY2sgKHRvY19jb25uICogY29ubiwg Y2hhciAqIGlkLCBjaGFyICogbmFtZSkNCkluZGV4OiBwbHVnaW5zL3RvYy9s aWJ0b2MuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHBsdWdpbnMv dG9jL2xpYnRvYy5jCShyZXZpc2lvbiAzNTcpDQorKysgcGx1Z2lucy90b2Mv bGlidG9jLmMJKHdvcmtpbmcgY29weSkNCkBAIC01MDEsMTE5ICs1MDEsMTQy IEBADQogCX0NCiB9DQogDQotdm9pZCB0b2NfZ2V0X2ZpbGUoIGNoYXIgKiBp cCwgc2hvcnQgcG9ydCwgY2hhciAqIGNvb2tpZSwgY2hhciAqIGZpbGVuYW1l ICkNCitzdHJ1Y3QgZ2V0X2ZpbGVfY2FsbGJhY2tfZGF0YQ0KIHsNCi0JCWlu dCBmZDsNCi0JCWNoYXIgYnVmZlsyMDQ4XTsNCi0JCWNoYXIgYnVmZjJbN107 DQorCWNoYXIgKmNvb2tpZTsNCisJY2hhciAqZmlsZW5hbWU7DQorfTsNCiAN Ci0JCUZJTEUgKiBmaWxlOw0KK3ZvaWQgdG9jX2dldF9maWxlX2NhbGxiYWNr KGludCBmZCwgdm9pZCAqZGF0YSkNCit7DQorCXN0cnVjdCBnZXRfZmlsZV9j YWxsYmFja19kYXRhICogY2JkID0gZGF0YTsNCisJY2hhciBidWZmWzIwNDhd Ow0KKwljaGFyIGJ1ZmYyWzddOw0KKwlGSUxFICogZmlsZTsNCisJdG9jX2Zp bGVfY29ubiAqIGNvbm4gPSBuZXcwKCB0b2NfZmlsZV9jb25uLCAxICk7DQog DQotCQl0b2NfZmlsZV9jb25uICogY29ubiA9IG5ldzAoIHRvY19maWxlX2Nv bm4sIDEgKTsNCisJdHlwZWRlZiBzdHJ1Y3QgX2ZpbGVfaGVhZGVyDQorCXsN CisJCXNob3J0IG1hZ2ljOw0KKwkJY2hhciBjb29raWVbOF07DQorCQlzaG9y dCBlbmNyeXB0aW9uOw0KKwkJc2hvcnQgY29tcHJlc3Npb247DQorCQlzaG9y dCB0b3RhbF9udW1fZmlsZXM7DQorCQlzaG9ydCB0b3RhbF9udW1fZmlsZXNf bGVmdDsNCisJCXNob3J0IHRvdGFsX251bV9wYXJ0czsNCisJCXNob3J0IHRv dGFsX251bV9wYXJ0c19sZWZ0Ow0KKwkJbG9uZyB0b3RhbF9maWxlX3NpemU7 DQorCQlsb25nIGZpbGVfc2l6ZTsNCisJCWxvbmcgbW9kaWZpZWRfdGltZTsN CisJCWxvbmcgY2hlY2tzdW07DQorCQlsb25nIHJlc19mb3JrX2NoZWNrc3Vt Ow0KKwkJbG9uZyByZXNfZm9ya19zaXplOw0KKwkJbG9uZyBjcmVhdGlvbl90 aW1lOw0KKwkJbG9uZyByZXNfZm9ya19jaGVja3N1bTI7DQorCQlsb25nIG51 bV9yZWNpZXZlZDsNCisJCWxvbmcgcmVjaWV2ZWRfY2hlY2tzdW07DQorCQlj aGFyIGlkX3N0cmluZ1szMl07DQorCQljaGFyIGZsYWdzOw0KKwkJY2hhciBs aXN0X25hbWVfb2Zmc2V0Ow0KKwkJY2hhciBsaXN0X3NpemVfb2Zmc2V0Ow0K KwkJY2hhciBkdW1teVs2OV07DQorCQljaGFyIG1hY19maWxlX2luZm9bMTZd Ow0KKwkJc2hvcnQgbmFtZV9lbmNvZGluZzsNCisJCXNob3J0IG5hbWVfbGFu Z3VhZ2U7DQorCX0gZmlsZV9oZWFkZXI7DQogDQorCWZpbGVfaGVhZGVyICog ZmggPSAoZmlsZV9oZWFkZXIgKilidWZmOw0KKwlzaG9ydCBoZWFkZXJfc2l6 ZTsNCisJY2hhciAqIGNvb2tpZTIgPSBiYXNlNjRfZGVjb2RlKGNiZC0+Y29v a2llKTsNCiANCi0JCXR5cGVkZWYgc3RydWN0IF9maWxlX2hlYWRlcg0KLQkJ ew0KLQkJCXNob3J0IG1hZ2ljOw0KLQkJCWNoYXIgY29va2llWzhdOw0KLQkJ CXNob3J0IGVuY3J5cHRpb247DQotCQkJc2hvcnQgY29tcHJlc3Npb247DQot CQkJc2hvcnQgdG90YWxfbnVtX2ZpbGVzOw0KLQkJCXNob3J0IHRvdGFsX251 bV9maWxlc19sZWZ0Ow0KLQkJCXNob3J0IHRvdGFsX251bV9wYXJ0czsNCi0J CQlzaG9ydCB0b3RhbF9udW1fcGFydHNfbGVmdDsNCi0JCQlsb25nIHRvdGFs X2ZpbGVfc2l6ZTsNCi0JCQlsb25nIGZpbGVfc2l6ZTsNCi0JCQlsb25nIG1v ZGlmaWVkX3RpbWU7DQotCQkJbG9uZyBjaGVja3N1bTsNCi0JCQlsb25nIHJl c19mb3JrX2NoZWNrc3VtOw0KLQkJCWxvbmcgcmVzX2Zvcmtfc2l6ZTsNCi0J CQlsb25nIGNyZWF0aW9uX3RpbWU7DQotCQkJbG9uZyByZXNfZm9ya19jaGVj a3N1bTI7DQotCQkJbG9uZyBudW1fcmVjaWV2ZWQ7DQotCQkJbG9uZyByZWNp ZXZlZF9jaGVja3N1bTsNCi0JCQljaGFyIGlkX3N0cmluZ1szMl07DQotCQkJ Y2hhciBmbGFnczsNCi0JCQljaGFyIGxpc3RfbmFtZV9vZmZzZXQ7DQotCQkJ Y2hhciBsaXN0X3NpemVfb2Zmc2V0Ow0KLQkJCWNoYXIgZHVtbXlbNjldOw0K LQkJCWNoYXIgbWFjX2ZpbGVfaW5mb1sxNl07DQotCQkJc2hvcnQgbmFtZV9l bmNvZGluZzsNCi0JCQlzaG9ydCBuYW1lX2xhbmd1YWdlOw0KLQkJfSBmaWxl X2hlYWRlcjsNCi0NCi0JCWZpbGVfaGVhZGVyICogZmggPSAoZmlsZV9oZWFk ZXIgKilidWZmOw0KLQkJc2hvcnQgaGVhZGVyX3NpemU7DQotCQljaGFyICog Y29va2llMiA9IGJhc2U2NF9kZWNvZGUoY29va2llKTsNCi0JCWludCBpOw0K LQ0KLQkJZm9yKCBpID0gMDsgKGZkID0gZWJfY29ubmVjdF9zeW5jX3NvY2tl dChpcCwgcG9ydCkpIDwgMCAmJiBpIDwgMTA7IGkrKyApOw0KLQ0KLQ0KKwlp ZiAoZmQgPCAwKQ0KKwl7DQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0 ZGVyciwgImNvbm5lY3RlZCB0byAlc1xuIiwgaXAgKTsNCisJCWZwcmludGYo c3RkZXJyLCAiZXJyb3IgY29ubmVjdGluZyB0byBnZXQgZmlsZTogJXNcbiIs IGNiZC0+ZmlsZW5hbWUpOw0KICNlbmRpZg0KKwkJZnJlZShjYmQtPmNvb2tp ZSk7DQorCQlmcmVlKGNiZC0+ZmlsZW5hbWUpOw0KKwkJZnJlZShjYmQpOw0K IA0KLQkJcmVjdiggZmQsIGJ1ZmYyLCA2LCAwICk7DQotCQlidWZmMls2XSA9 ICdcMCc7DQotCQloZWFkZXJfc2l6ZSA9bnRvaHMoKigoc2hvcnQqKShidWZm Mis0KSkpOw0KKwkJcmV0dXJuOw0KKwl9DQogDQorCXJlY3YoZmQsIGJ1ZmYy LCA2LCAwKTsNCisJYnVmZjJbNl0gPSAnXDAnOw0KKwloZWFkZXJfc2l6ZSA9 IG50b2hzKCooKHNob3J0KikoYnVmZjIrNCkpKTsNCisNCiAjaWZkZWYgREVC VUcNCi0JCWZwcmludGYoc3RkZXJyLCAiaGVhZGVyX3NpemUgPSAlZFxuIiwg aGVhZGVyX3NpemUgKTsNCisJZnByaW50ZihzdGRlcnIsICJoZWFkZXJfc2l6 ZSA9ICVkXG4iLCBoZWFkZXJfc2l6ZSk7DQogI2VuZGlmDQogDQotCQlyZWN2 KCBmZCwgYnVmZiwgaGVhZGVyX3NpemUgLSA2LCAwICk7DQorCXJlY3YoZmQs IGJ1ZmYsIGhlYWRlcl9zaXplIC0gNiwgMCk7DQogDQotCQlpZiggZmgtPm1h Z2ljICE9IDB4MDEwMSApDQotCQl7DQorCWlmIChmaC0+bWFnaWMgIT0gMHgw MTAxKQ0KKwl7DQogI2lmZGVmIERFQlVHDQotCQkJZnByaW50ZihzdGRlcnIs ICJiYWQgbWFnaWMgbnVtYmVyICV4XG4iLCBmaC0+bWFnaWMgKTsNCisJCWZw cmludGYoc3RkZXJyLCAiYmFkIG1hZ2ljIG51bWJlciAleFxuIiwgZmgtPm1h Z2ljKTsNCiAjZW5kaWYNCi0JCQljbG9zZShmZCk7DQotCQkJcmV0dXJuOw0K LQkJfQ0KKwkJY2xvc2UoZmQpOw0KKwkJZnJlZShjYmQtPmNvb2tpZSk7DQor CQlmcmVlKGNiZC0+ZmlsZW5hbWUpOw0KKwkJZnJlZShjYmQpOw0KKwkJcmV0 dXJuOw0KKwl9DQogDQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKCBzdGRl cnIsICJtYWdpYyA9ICUwNHhcbiIsIGZoLT5tYWdpYyApOw0KKwlmcHJpbnRm KHN0ZGVyciwgIm1hZ2ljID0gJTA0eFxuIiwgZmgtPm1hZ2ljKTsNCiAjZW5k aWYNCiANCi0JCWZoLT5tYWdpYyA9IGh0b25zKDB4MDIwMik7DQotCQltZW1j cHkoZmgtPmNvb2tpZSwgY29va2llMiwgOCk7DQotCQlmcmVlKGNvb2tpZTIp Ow0KKwlmaC0+bWFnaWMgPSBodG9ucygweDAyMDIpOw0KKwltZW1jcHkoZmgt PmNvb2tpZSwgY29va2llMiwgOCk7DQorCWZyZWUoY29va2llMik7DQogI2lm ZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0ZGVyciwgImlkX3N0cmluZyA9ICVz XG4iLCBidWZmICsgNjIgKTsNCi0JCWZwcmludGYoc3RkZXJyLCAiZmlsZV9u YW1lID0gJXNcbiIsIGJ1ZmYgKyAxODYgKTsNCisJZnByaW50ZihzdGRlcnIs ICJpZF9zdHJpbmcgPSAlc1xuIiwgYnVmZiArIDYyKTsNCisJZnByaW50Zihz dGRlcnIsICJmaWxlX25hbWUgPSAlc1xuIiwgYnVmZiArIDE4Nik7DQogI2Vu ZGlmDQotCQltZW1zZXQoYnVmZiArIDYyLCAwLCAzMik7DQotCQlzdHJjcHko YnVmZiArIDYyLCAiVElLIik7DQotCQlmaC0+ZW5jcnlwdGlvbiA9IDA7DQot CQlmaC0+Y29tcHJlc3Npb24gPSAwOw0KLQkJZmgtPnRvdGFsX251bV9wYXJ0 cyA9IGh0b25zKDEpOw0KLQkJZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0ID0g aHRvbnMoMSk7DQorCW1lbXNldChidWZmICsgNjIsIDAsIDMyKTsNCisJc3Ry Y3B5KGJ1ZmYgKyA2MiwgIlRJSyIpOw0KKwlmaC0+ZW5jcnlwdGlvbiA9IDA7 DQorCWZoLT5jb21wcmVzc2lvbiA9IDA7DQorCWZoLT50b3RhbF9udW1fcGFy dHMgPSBodG9ucygxKTsNCisJZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0ID0g aHRvbnMoMSk7DQogDQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0ZGVy ciwgInRvdGFsX251bV9wYXJ0cyA9ICUwNHggdG90YWxfbnVtX3BhcnRzX2xl ZnQgPSAlMDR4IGZpbGVfc2l6ZSA9ICVsZFxuIiwNCi0JCWZoLT50b3RhbF9u dW1fcGFydHMsIGZoLT50b3RhbF9udW1fcGFydHNfbGVmdCwgbnRvaGwoKigo bG9uZyopKGJ1ZmYrMjIpKSkpOw0KKwlmcHJpbnRmKHN0ZGVyciwgInRvdGFs X251bV9wYXJ0cyA9ICUwNHggdG90YWxfbnVtX3BhcnRzX2xlZnQgPSAlMDR4 IGZpbGVfc2l6ZSA9ICVsZFxuIiwNCisJZmgtPnRvdGFsX251bV9wYXJ0cywg ZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0LCBudG9obCgqKChsb25nKikoYnVm ZisyMikpKSk7DQogDQogI2VuZGlmDQogDQotCQlzZW5kKCBmZCwgYnVmZjIs IDYsIDAgKTsNCi0JCXNlbmQoIGZkLCBidWZmLCBoZWFkZXJfc2l6ZSAtIDYs IDAgKTsNCisJc2VuZChmZCwgYnVmZjIsIDYsIDApOw0KKwlzZW5kKGZkLCBi dWZmLCBoZWFkZXJfc2l6ZSAtIDYsIDApOw0KIA0KLQkJZmlsZSA9IGZvcGVu KCBmaWxlbmFtZSwgInciICk7DQorCWZpbGUgPSBmb3BlbihjYmQtPmZpbGVu YW1lLCAidyIpOw0KIA0KLQkJbWVtY3B5KGNvbm4tPmhlYWRlcjEsIGJ1ZmYy LCA3ICk7DQotCQltZW1jcHkoY29ubi0+aGVhZGVyMiwgYnVmZiwgMjA0OCAp Ow0KLQkJY29ubi0+ZmQgPSBmZDsNCi0JCWNvbm4tPmFtb3VudCA9IDA7DQot CQljb25uLT5maWxlID0gZmlsZTsNCisJbWVtY3B5KGNvbm4tPmhlYWRlcjEs IGJ1ZmYyLCA3ICk7DQorCW1lbWNweShjb25uLT5oZWFkZXIyLCBidWZmLCAy MDQ4ICk7DQorCWNvbm4tPmZkID0gZmQ7DQorCWNvbm4tPmFtb3VudCA9IDA7 DQorCWNvbm4tPmZpbGUgPSBmaWxlOw0KIA0KLQkJY29ubi0+cHJvZ3Jlc3Mg PSB0b2NfYmVnaW5fZmlsZV9yZWNpZXZlKCBmaWxlbmFtZSwgIG50b2hsKCoo KGxvbmcqKShidWZmKzIyKSkpICk7DQorCWNvbm4tPnByb2dyZXNzID0gdG9j X2JlZ2luX2ZpbGVfcmVjaWV2ZShjYmQtPmZpbGVuYW1lLCAgbnRvaGwoKigo bG9uZyopKGJ1ZmYrMjIpKSkpOw0KIA0KLQkJY29ubi0+aGFuZGxlID0gZWJf aW5wdXRfYWRkKGZkLCBFQl9JTlBVVF9SRUFELCB0b2NfZ2V0X2ZpbGVfZGF0 YSwgY29ubik7DQorCWNvbm4tPmhhbmRsZSA9IGViX2lucHV0X2FkZChmZCwg RUJfSU5QVVRfUkVBRCwgdG9jX2dldF9maWxlX2RhdGEsIGNvbm4pOw0KIA0K KwlmcmVlKGNiZC0+Y29va2llKTsNCisJZnJlZShjYmQtPmZpbGVuYW1lKTsN CisJZnJlZShjYmQpOw0KIH0NCiANCit2b2lkIHRvY19nZXRfZmlsZShjaGFy ICogaXAsIHNob3J0IHBvcnQsIGNoYXIgKiBjb29raWUsIGNoYXIgKiBmaWxl bmFtZSkNCit7DQorCWludCBmZDsNCisJc3RydWN0IGdldF9maWxlX2NhbGxi YWNrX2RhdGEgKiBjYmQgPSBuZXcwKHN0cnVjdCBnZXRfZmlsZV9jYWxsYmFj a19kYXRhLCAxKTsNCisJY2JkLT5jb29raWUgPSBzdHJkdXAoY29va2llKTsN CisJY2JkLT5maWxlbmFtZSA9IHN0cmR1cChmaWxlbmFtZSk7DQorDQorCWZk ID0gZWJfY29ubmVjdF9zb2NrZXQoaXAsIHBvcnQsIHRvY19nZXRfZmlsZV9j YWxsYmFjaywgY2JkKTsNCit9DQorDQogdm9pZCB0b2NfZ2V0X3RhbGsoIGNo YXIgKiBpcCwgc2hvcnQgcG9ydCwgY2hhciAqIGNvb2tpZSApDQogew0KIC8v CQlpbnQgZmQ7DQpAQCAtMTIxMiwxNCArMTIzNSwyNCBAQA0KIAlyZXR1cm4g YyAtIGEgKyBiICsgNzE2NjUxNTI7DQogfQ0KIA0KK3N0cnVjdCBjb25uZWN0 ZWRfZGF0YQ0KK3sNCisJdm9pZCAoKmNhbGxiYWNrKSh2b2lkICogZGF0YSwg dG9jX2Nvbm4gKiBjb25uKTsNCisJdm9pZCAqIGNhbGxiYWNrX2RhdGE7DQor CWNoYXIgKiB1c2VybmFtZTsNCisJY2hhciAqIHBhc3N3b3JkOw0KKwljaGFy ICogc2VydmVyOw0KKwlzaG9ydCBwb3J0Ow0KKwljaGFyICogdGluZm87DQog DQorfTsNCiANCi10b2NfY29ubiAqIHRvY19zaWdub24oIGNoYXIgKiB1c2Vy bmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KLQkJICAgIGNoYXIgKiBzZXJ2ZXIs IHNob3J0IHBvcnQsIGNoYXIgKiB0aW5mbyApDQordm9pZCB0b2NfY29ubmVj dGVkKGludCBmZCwgdm9pZCAqZGF0YSkNCiB7DQorCXN0cnVjdCBjb25uZWN0 ZWRfZGF0YSAqIGNkID0gZGF0YTsNCiAJZmRfc2V0IGZzOw0KKwljaGFyICpm bGFwX3Jlc3VsdCA9IE5VTEw7DQogCXRvY19jb25uICogY29ubiA9IG5ldzAo dG9jX2Nvbm4sIDEpOw0KLQljaGFyICpmbGFwX3Jlc3VsdD1OVUxMOw0KIA0K IAkvKg0KIAkgKiAgICAgNCBieXRlIEZMQVAgdmVyc2lvbiAoMSkNCkBAIC0x MjMxLDQ4ICsxMjY0LDYxIEBADQogCWNoYXIgYnVmZlsyMDQ4XTsNCiANCiAN Ci0JY2hhciAqIG5vcm1hbGl6ZWRfdXNlcm5hbWUgPSBhaW1fbm9ybWFsaXpl KHVzZXJuYW1lKTsNCisJY2hhciAqIG5vcm1hbGl6ZWRfdXNlcm5hbWUgPSBh aW1fbm9ybWFsaXplKGNkLT51c2VybmFtZSk7DQogCXVuc2lnbmVkIHNob3J0 IHVzZXJuYW1lX2xlbmd0aCA9IGh0b25zKHN0cmxlbihub3JtYWxpemVkX3Vz ZXJuYW1lKSk7DQogLy8JY2hhciAqIGM7DQogDQogCWZsYXBfaGVhZGVyIGZo Ow0KIA0KKwlpZiAoZmQgPCAwKSAvLyBlcnJvciBjb25uZWN0aW5nDQorCXsN CisJCShjZC0+Y2FsbGJhY2spKGNkLT5jYWxsYmFja19kYXRhLCBOVUxMKTsg Ly8gU2lnbmFsIGVycm9yDQorCQlmcmVlKGNkLT51c2VybmFtZSk7DQorCQlm cmVlKGNkLT5wYXNzd29yZCk7DQorCQlmcmVlKGNkLT5zZXJ2ZXIpOw0KKwkJ ZnJlZShjZC0+dGluZm8pOw0KKwkJZnJlZShjZCk7DQorCQlmcmVlKGNvbm4p Ow0KKw0KKwkJcmV0dXJuOw0KKwl9DQorDQogICAgICAgICAvLyBIQUNLIEFM RVJUIGJlZ2luIHVzZXIgaW5mbyBoYWNrDQotICAgICAgICBpbmZvPXN0cmR1 cCh0aW5mbyk7DQorICAgICAgICBpbmZvPXN0cmR1cChjZC0+dGluZm8pOw0K ICAgICAgICAgLy8gZW5kIGhhY2sgKHVzZXIgaW5mbykNCiANCi0Jc3RyY3B5 KGNvbm4tPnNlcnZlciwgc2VydmVyKTsNCi0JY29ubi0+cG9ydCA9IHBvcnQ7 DQorCXN0cm5jcHkoY29ubi0+c2VydmVyLCBjZC0+c2VydmVyLCBzaXplb2Yo Y29ubi0+c2VydmVyKSk7DQorCWNvbm4tPnNlcnZlcltzaXplb2YoY29ubi0+ c2VydmVyKSAtIDFdID0gJ1wwJzsNCisJY29ubi0+cG9ydCA9IGNkLT5wb3J0 Ow0KKwljb25uLT5mZCA9IGZkOw0KIA0KLQ0KLQljb25uLT5mZCA9IGViX2Nv bm5lY3Rfc3luY19zb2NrZXQoc2VydmVyLCBwb3J0KTsNCi0NCi0JaWYgKCBj b25uLT5mZCA8PSAwICkNCi0Jew0KLQkJZnJlZShjb25uKTsNCi0JCXJldHVy biBOVUxMOw0KLQl9DQotDQogCS8qIENsaWVudCBzZW5kcyAiRkxBUE9OXHJc blxyXG4iICovDQogDQotCXdyaXRlKGNvbm4tPmZkLCAiRkxBUE9OXHJcblxu XDAiLCAxMCk7DQorCXdyaXRlKGZkLCAiRkxBUE9OXHJcblxuXDAiLCAxMCk7 DQogDQogCS8qIFRPQyBzZW5kcyBDbGllbnQgRkxBUCBTSUdOT04gKi8NCiAN CiAJRkRfWkVSTygmZnMpOw0KLQlGRF9TRVQoY29ubi0+ZmQsICZmcyk7DQor CUZEX1NFVChmZCwgJmZzKTsNCiANCi0JLy9zZWxlY3QoY29ubi0+ZmQrMSwg JmZzLCBOVUxMLCBOVUxMLCBOVUxMICk7DQorCS8vc2VsZWN0KGZkKzEsICZm cywgTlVMTCwgTlVMTCwgTlVMTCApOw0KIA0KLQlmbGFwX3Jlc3VsdD1nZXRf ZmxhcChjb25uKTsNCi0JaWYoZmxhcF9yZXN1bHQpDQotCQltZW1jcHkoIGJ1 ZmYsIGZsYXBfcmVzdWx0LDEwKTsNCisJZmxhcF9yZXN1bHQgPSBnZXRfZmxh cChjb25uKTsNCisJaWYgKGZsYXBfcmVzdWx0KQ0KKwkJbWVtY3B5KGJ1ZmYs IGZsYXBfcmVzdWx0LCAxMCk7DQogCWVsc2UNCiAJew0KICNpZmRlZiBERUJV Rw0KIAkJZnByaW50ZihzdGRlcnIsICJFcnJvciEgIGdldF9mbGFwIGZhaWxl ZFxuIik7DQogI2VuZGlmDQotCQlyZXR1cm4gTlVMTDsNCisJCShjZC0+Y2Fs bGJhY2spKGNkLT5jYWxsYmFja19kYXRhLCBOVUxMKTsgLy8gU2lnbmFsIGVy cm9yDQorCQlmcmVlKGNkLT51c2VybmFtZSk7DQorCQlmcmVlKGNkLT5wYXNz d29yZCk7DQorCQlmcmVlKGNkLT5zZXJ2ZXIpOw0KKwkJZnJlZShjZC0+dGlu Zm8pOw0KKwkJZnJlZShjZCk7DQorDQorCQlyZXR1cm47DQogCX0NCiANCiAJ YnVmZlsxMF0gPSAwOw0KQEAgLTEyODMsMTQgKzEzMjksMTQgQEANCiAJZmgu YXN0ID0gJyonOw0KIAlmaC50eXBlID0gMTsNCiAJZmguc2VxID0gaHRvbnMo Y29ubi0+c2VxX251bSsrKTsNCi0JZmgubGVuID0gaHRvbnMoKHNob3J0KShz dHJsZW4obm9ybWFsaXplZF91c2VybmFtZSkrOCkpOw0KKwlmaC5sZW4gPSBo dG9ucygoc2hvcnQpKHN0cmxlbihub3JtYWxpemVkX3VzZXJuYW1lKSArIDgp KTsNCiANCiAJbWVtY3B5KGJ1ZmYsICZmaCwgc2l6ZW9mKGZsYXBfaGVhZGVy KSk7DQotCW1lbWNweShidWZmKzYsIHNmbGFwX2hlYWRlciwgNik7DQotCW1l bWNweShidWZmKzEyLCZ1c2VybmFtZV9sZW5ndGgsMik7DQotCW1lbWNweShi dWZmKzE0LG5vcm1hbGl6ZWRfdXNlcm5hbWUsIHN0cmxlbihub3JtYWxpemVk X3VzZXJuYW1lKSk7DQorCW1lbWNweShidWZmICsgNiwgc2ZsYXBfaGVhZGVy LCA2KTsNCisJbWVtY3B5KGJ1ZmYgKyAxMiwgJnVzZXJuYW1lX2xlbmd0aCwg Mik7DQorCW1lbWNweShidWZmICsgMTQsIG5vcm1hbGl6ZWRfdXNlcm5hbWUs IHN0cmxlbihub3JtYWxpemVkX3VzZXJuYW1lKSk7DQogDQotCXdyaXRlKGNv bm4tPmZkLCBidWZmLCBzdHJsZW4obm9ybWFsaXplZF91c2VybmFtZSkrMTQp Ow0KKwl3cml0ZShmZCwgYnVmZiwgc3RybGVuKG5vcm1hbGl6ZWRfdXNlcm5h bWUpICsgMTQpOw0KIA0KIAkvKiBDbGllbnQgc2VuZHMgVE9DICJ0b2Nfc2ln bm9uIiBtZXNzYWdlICovDQogDQpAQCAtMTMwMSwyMSArMTM0Nyw0MSBAQA0K IAkgKi8NCiANCiAJc25wcmludGYoYnVmZiwgMjA0OCwgInRvYzJfc2lnbm9u ICVzICVkICVzICVzICVzIFwiJXNcIiAxNjAgJWQiLA0KLQkJCSJsb2dpbi5v c2Nhci5hb2wuY29tIiwgMjk5OTksIG5vcm1hbGl6ZWRfdXNlcm5hbWUsIHJv YXN0X3Bhc3N3b3JkKHBhc3N3b3JkKSwNCisJCQkibG9naW4ub3NjYXIuYW9s LmNvbSIsIDI5OTk5LCBub3JtYWxpemVkX3VzZXJuYW1lLCByb2FzdF9wYXNz d29yZChjZC0+cGFzc3dvcmQpLA0KIAkJCSJlbmdsaXNoLVVTIiwgUkVWSVNJ T04sDQotCQkJZ2VuZXJhdGVfY29kZShub3JtYWxpemVkX3VzZXJuYW1lLCBw YXNzd29yZCkgKTsNCisJCQlnZW5lcmF0ZV9jb2RlKG5vcm1hbGl6ZWRfdXNl cm5hbWUsIGNkLT5wYXNzd29yZCkpOw0KIA0KLQlzZW5kX2ZsYXAoY29ubiwg REFUQSwgYnVmZiApOw0KKwlzZW5kX2ZsYXAoY29ubiwgREFUQSwgYnVmZik7 DQogDQogI2lmZGVmIERFQlVHDQotCXByaW50ZiggInRvY19zaWdub24gQUZU RVIgJWQgJWRcbiIsIGNvbm4tPmZkLCBjb25uLT5zZXFfbnVtICk7DQorCXBy aW50ZigidG9jX3NpZ25vbiBBRlRFUiAlZCAlZFxuIiwgZmQsIGNvbm4tPnNl cV9udW0pOw0KICNlbmRpZg0KIA0KLQlyZXR1cm4gY29ubjsNCisJKGNkLT5j YWxsYmFjaykoY2QtPmNhbGxiYWNrX2RhdGEsIGNvbm4pOyAvLyBTaWduYWwg Y29tcGxldGlvbg0KIA0KKwlmcmVlKGNkLT51c2VybmFtZSk7DQorCWZyZWUo Y2QtPnBhc3N3b3JkKTsNCisJZnJlZShjZC0+c2VydmVyKTsNCisJZnJlZShj ZC0+dGluZm8pOw0KKwlmcmVlKGNkKTsNCiB9DQogDQordm9pZCB0b2Nfc2ln bm9uKGNoYXIgKiB1c2VybmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KKwkJICAg IGNoYXIgKiBzZXJ2ZXIsIHNob3J0IHBvcnQsIGNoYXIgKiB0aW5mbywgdm9p ZCAoKmNhbGxiYWNrKSh2b2lkICogZGF0YSwgdG9jX2Nvbm4gKiBjb25uKSwg dm9pZCAqIGRhdGEpDQorew0KKwlpbnQgZmQ7DQorCXN0cnVjdCBjb25uZWN0 ZWRfZGF0YSAqIGNkID0gbmV3MChzdHJ1Y3QgY29ubmVjdGVkX2RhdGEsIDEp Ow0KKwljZC0+Y2FsbGJhY2sgPSBjYWxsYmFjazsNCisJY2QtPmNhbGxiYWNr X2RhdGEgPSBkYXRhOw0KKwljZC0+dXNlcm5hbWUgPSBzdHJkdXAodXNlcm5h bWUpOw0KKwljZC0+cGFzc3dvcmQgPSBzdHJkdXAocGFzc3dvcmQpOw0KKwlj ZC0+c2VydmVyID0gc3RyZHVwKHNlcnZlcik7DQorCWNkLT5wb3J0ID0gcG9y dDsNCisJY2QtPnRpbmZvID0gc3RyZHVwKHRpbmZvKTsNCiANCisJZmQgPSBl Yl9jb25uZWN0X3NvY2tldChzZXJ2ZXIsIHBvcnQsIHRvY19jb25uZWN0ZWQs IGNkKTsNCit9DQorDQogdm9pZCB0b2Nfc2lnbm9mZiggdG9jX2Nvbm4gKiBj b25uICkNCiB7DQogCWlmICghY29ubikNCg== ---1463811291-116493841-1084479891=:21935 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Everybuddy-Dev mailing list [email protected] http://lists.spine.cx/listinfo/everybuddy-dev ---1463811291-116493841-1084479891=:21935--