Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:27471 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 34942 invoked by uid 1010); 15 Jan 2007 22:31:32 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 34926 invoked from network); 15 Jan 2007 22:31:32 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 15 Jan 2007 22:31:32 -0000 Authentication-Results: pb1.pair.com smtp.mail=helly@php.net; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=helly@php.net; sender-id=unknown Received-SPF: error (pb1.pair.com: domain php.net from 81.169.182.136 cause and error) X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 81.169.182.136 ajaxatwork.net Linux 2.4/2.6 Received: from [81.169.182.136] ([81.169.182.136:44827] helo=strato.aixcept.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 46/63-33655-1C00CA54 for ; Mon, 15 Jan 2007 17:31:30 -0500 Received: from baumbart.mbo (dslb-084-063-029-203.pools.arcor-ip.net [84.63.29.203]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by strato.aixcept.de (Postfix) with ESMTP id A572C35C1E0 for ; Mon, 15 Jan 2007 23:31:26 +0100 (CET) Date: Mon, 15 Jan 2007 23:31:31 +0100 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <287851093.20070115233131@marcus-boerger.de> To: internals@lists.php.net MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------EF1B820B1F0B200C" Subject: [RFC] Help debugging overloaded objects From: helly@php.net (Marcus Boerger) ------------EF1B820B1F0B200C Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello internals, the attached patch introduces a new handler to the engine that is supposed to help debugging overloaded objects. It allows to return a temporary hash rather then the object properties. This way an extension can show non properties in var_dump() and print_r(). It will be used in extensions like SimpleXML. To show how it will look like the changes for said extension are alsopresent. Last but not least the handler can be NULL in which case the old behavior is maintained. If noone objects I will commit this by the end of the week. Any comments? Best regards, Marcus ------------EF1B820B1F0B200C Content-Type: text/plain; name="ze3-debug-hash-20070115.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ze3-debug-hash-20070115.diff.txt" SW5kZXg6IFplbmQvemVuZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L1plbmRFbmdpbmUyL3plbmQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOTEKZGlmZiAt dSAtcCAtZCAtcjEuMzkxIHplbmQuYwotLS0gWmVuZC96ZW5kLmMJMTIgSmFuIDIwMDcgMTQ6 Mzg6MDcgLTAwMDAJMS4zOTEKKysrIFplbmQvemVuZC5jCTE1IEphbiAyMDA3IDIyOjIzOjE2 IC0wMDAwCkBAIC0xNyw3ICsxNyw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICovCiAK LS8qICRJZDogemVuZC5jLHYgMS4zOTEgMjAwNy8wMS8xMiAxNDozODowNyBkbWl0cnkgRXhw ICQgKi8KKy8qICRJZDogemVuZC5jLHYgMS4zOTAgMjAwNy8wMS8xMSAxNjo0Nzo0NiBkbWl0 cnkgRXhwICQgKi8KIAogI2luY2x1ZGUgInplbmQuaCIKICNpbmNsdWRlICJ6ZW5kX2V4dGVu c2lvbnMuaCIKQEAgLTU4MSw2ICs1ODEsNyBAQCBaRU5EX0FQSSB2b2lkIHplbmRfcHJpbnRf enZhbF9yX2V4KHplbmRfCiAJCQkJSGFzaFRhYmxlICpwcm9wZXJ0aWVzID0gTlVMTDsKIAkJ CQl6c3RyIGNsYXNzX25hbWUgPSBOVUxMX1pTVFI7CiAJCQkJemVuZF91aW50IGNsZW47CisJ CQkJaW50IGlzX3RlbXA7CiAKIAkJCQlpZiAoWl9PQkpfSEFORExFUl9QKGV4cHIsIGdldF9j bGFzc19uYW1lKSkgewogCQkJCQlaX09CSl9IQU5ETEVSX1AoZXhwciwgZ2V0X2NsYXNzX25h bWUpKGV4cHIsICZjbGFzc19uYW1lLCAmY2xlbiwgMCBUU1JNTFNfQ0MpOwpAQCAtNTkzLDgg KzU5NCwxMSBAQCBaRU5EX0FQSSB2b2lkIHplbmRfcHJpbnRfenZhbF9yX2V4KHplbmRfCiAJ CQkJaWYgKGNsYXNzX25hbWUudikgewogCQkJCQllZnJlZShjbGFzc19uYW1lLnYpOwogCQkJ CX0KLQkJCQlpZiAoWl9PQkpfSEFORExFUl9QKGV4cHIsIGdldF9wcm9wZXJ0aWVzKSkgewor CQkJCWlmIChaX09CSl9IQU5ETEVSX1AoZXhwciwgZ2V0X2RlYnVnX2luZm8pKSB7CisJCQkJ CXByb3BlcnRpZXMgPSBaX09CSl9IQU5ETEVSX1AoZXhwciwgZ2V0X2RlYnVnX2luZm8pKGV4 cHIsICZpc190ZW1wIFRTUk1MU19DQyk7CisJCQkJfSBlbHNlIGlmIChaX09CSl9IQU5ETEVS X1AoZXhwciwgZ2V0X3Byb3BlcnRpZXMpKSB7CiAJCQkJCXByb3BlcnRpZXMgPSBaX09CSlBS T1BfUChleHByKTsKKwkJCQkJaXNfdGVtcCA9IDA7CiAJCQkJfQogCQkJCWlmIChwcm9wZXJ0 aWVzKSB7CiAJCQkJCWlmICgrK3Byb3BlcnRpZXMtPm5BcHBseUNvdW50PjEpIHsKQEAgLTYw NCw2ICs2MDgsMTAgQEAgWkVORF9BUEkgdm9pZCB6ZW5kX3ByaW50X3p2YWxfcl9leCh6ZW5k XwogCQkJCQl9CiAJCQkJCXByaW50X2hhc2gocHJvcGVydGllcywgaW5kZW50LCAxIFRTUk1M U19DQyk7CiAJCQkJCXByb3BlcnRpZXMtPm5BcHBseUNvdW50LS07CisJCQkJCWlmIChpc190 ZW1wKSB7CisJCQkJCQl6ZW5kX2hhc2hfZGVzdHJveShwcm9wZXJ0aWVzKTsKKwkJCQkJCWVm cmVlKHByb3BlcnRpZXMpOworCQkJCQl9CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJfQpJbmRl eDogWmVuZC96ZW5kX29iamVjdF9oYW5kbGVycy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3plbmRfb2JqZWN0X2hhbmRsZXJzLmMsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMTgyCmRpZmYgLXUgLXAgLWQgLXIxLjE4MiB6ZW5kX29iamVj dF9oYW5kbGVycy5jCi0tLSBaZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmMJMTAgSmFuIDIw MDcgMTU6NTk6NTUgLTAwMDAJMS4xODIKKysrIFplbmQvemVuZF9vYmplY3RfaGFuZGxlcnMu YwkxNSBKYW4gMjAwNyAyMjoyMzoxNyAtMDAwMApAQCAtNDksMTMgKzQ5LDE5IEBACiAgIGNh bGxlZCwgd2UgY2FsIF9fY2FsbCBoYW5kbGVyLgogKi8KIAotc3RhdGljIEhhc2hUYWJsZSAq emVuZF9zdGRfZ2V0X3Byb3BlcnRpZXMoenZhbCAqb2JqZWN0IFRTUk1MU19EQykKK1pFTkRf QVBJIEhhc2hUYWJsZSAqemVuZF9zdGRfZ2V0X3Byb3BlcnRpZXMoenZhbCAqb2JqZWN0IFRT Uk1MU19EQykKIHsKIAl6ZW5kX29iamVjdCAqem9iajsKIAl6b2JqID0gWl9PQkpfUChvYmpl Y3QpOwogCXJldHVybiB6b2JqLT5wcm9wZXJ0aWVzOwogfQogCitaRU5EX0FQSSBIYXNoVGFi bGUgKnplbmRfc3RkX2dldF9kZWJ1Z19pbmZvKHp2YWwgKm9iamVjdCwgaW50ICppc190ZW1w IFRTUk1MU19EQykKK3sKKwkqaXNfdGVtcCA9IDA7CisJcmV0dXJuIHplbmRfc3RkX2dldF9w cm9wZXJ0aWVzKG9iamVjdCBUU1JNTFNfQ0MpOworfQorCiBzdGF0aWMgenZhbCAqemVuZF9z dGRfY2FsbF9nZXR0ZXIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIgVFNSTUxTX0RDKQog ewogCXp2YWwgKnJldHZhbCA9IE5VTEw7CkBAIC0xMTg2LDYgKzExOTIsNyBAQCBaRU5EX0FQ SSB6ZW5kX29iamVjdF9oYW5kbGVycyBzdGRfb2JqZWN0CiAJemVuZF9zdGRfY29tcGFyZV9v YmplY3RzLAkJCQkvKiBjb21wYXJlX29iamVjdHMgKi8KIAl6ZW5kX3N0ZF9jYXN0X29iamVj dF90b3N0cmluZywJCQkvKiBjYXN0X29iamVjdCAqLwogCU5VTEwsCQkJCQkJCQkJLyogY291 bnRfZWxlbWVudHMgKi8KKwlOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogZ2V0X2RlYnVnX2luZm8gKi8KIH07CiAKIC8qCkluZGV4OiBaZW5kL3plbmRfb2Jq ZWN0X2hhbmRsZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVu ZEVuZ2luZTIvemVuZF9vYmplY3RfaGFuZGxlcnMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS42MQpkaWZmIC11IC1wIC1kIC1yMS42MSB6ZW5kX29iamVjdF9oYW5kbGVycy5oCi0tLSBa ZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmgJMSBKYW4gMjAwNyAwOToyOToyMSAtMDAwMAkx LjYxCisrKyBaZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmgJMTUgSmFuIDIwMDcgMjI6MjM6 MTcgLTAwMDAKQEAgLTgwLDYgKzgwLDggQEAgdHlwZWRlZiB2b2lkICgqemVuZF9vYmplY3Rf dW5zZXRfZGltZW5zaQogLyogVXNlZCB0byBnZXQgaGFzaCBvZiB0aGUgcHJvcGVydGllcyBv ZiB0aGUgb2JqZWN0LCBhcyBoYXNoIG9mIHp2YWwncyAqLwogdHlwZWRlZiBIYXNoVGFibGUg KigqemVuZF9vYmplY3RfZ2V0X3Byb3BlcnRpZXNfdCkoenZhbCAqb2JqZWN0IFRTUk1MU19E Qyk7CiAKK3R5cGVkZWYgSGFzaFRhYmxlICooKnplbmRfb2JqZWN0X2dldF9kZWJ1Z19pbmZv X3QpKHp2YWwgKm9iamVjdCwgaW50ICppc190ZW1wIFRTUk1MU19EQyk7CisKIC8qIFVzZWQg dG8gY2FsbCBtZXRob2RzICovCiAvKiBhcmdzIG9uIHN0YWNrISAqLwogLyogQW5kaSAtIEVY KGZiYykgKGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCkgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQg YWxyZWFkeSBpbiB0aGUgSU5JVCBmY2FsbCBvcGNvZGUgc28gdGhhdCB0aGUgcGFyYW1ldGVy cyBjYW4gYmUgcGFyc2VkIHRoZSByaWdodCB3YXkuIFdlIG5lZWQgdG8gYWRkIGFub3RoZXIg Y2FsbGJhY2sgZm9yIHRoaXMuCkBAIC0xMzIsNiArMTM0LDcgQEAgc3RydWN0IF96ZW5kX29i amVjdF9oYW5kbGVycyB7CiAJemVuZF9vYmplY3RfY29tcGFyZV90CQkJCQljb21wYXJlX29i amVjdHM7CiAJemVuZF9vYmplY3RfY2FzdF90CQkJCQkJY2FzdF9vYmplY3Q7CiAJemVuZF9v YmplY3RfY291bnRfZWxlbWVudHNfdAkJCWNvdW50X2VsZW1lbnRzOworCXplbmRfb2JqZWN0 X2dldF9kZWJ1Z19pbmZvX3QJCQlnZXRfZGVidWdfaW5mbzsKIH07CiAKIGV4dGVybiBaRU5E X0FQSSB6ZW5kX29iamVjdF9oYW5kbGVycyBzdGRfb2JqZWN0X2hhbmRsZXJzOwpAQCAtMTQy LDcgKzE0NSw4IEBAIFpFTkRfQVBJIHp2YWwgKip6ZW5kX3N0ZF9nZXRfc3RhdGljX3Byb3AK IFpFTkRfQVBJIHplbmRfYm9vbCB6ZW5kX3N0ZF91bnNldF9zdGF0aWNfcHJvcGVydHkoemVu ZF9jbGFzc19lbnRyeSAqY2UsIHplbmRfdWNoYXIgdHlwZSwgenN0ciBwcm9wZXJ0eV9uYW1l LCBpbnQgcHJvcGVydHlfbmFtZV9sZW4gVFNSTUxTX0RDKTsKIFpFTkRfQVBJIHVuaW9uIF96 ZW5kX2Z1bmN0aW9uICp6ZW5kX3N0ZF9nZXRfY29uc3RydWN0b3IoenZhbCAqb2JqZWN0IFRT Uk1MU19EQyk7CiBaRU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVydHlfaW5mbyAqemVuZF9n ZXRfcHJvcGVydHlfaW5mbyh6ZW5kX2NsYXNzX2VudHJ5ICpjZSwgenZhbCAqbWVtYmVyLCBp bnQgc2lsZW50IFRTUk1MU19EQyk7Ci0KK1pFTkRfQVBJIEhhc2hUYWJsZSAqemVuZF9zdGRf Z2V0X3Byb3BlcnRpZXMoenZhbCAqb2JqZWN0IFRTUk1MU19EQyk7CitaRU5EX0FQSSBIYXNo VGFibGUgKnplbmRfc3RkX2dldF9kZWJ1Z19pbmZvKHp2YWwgKm9iamVjdCwgaW50ICppc190 ZW1wIFRTUk1MU19EQyk7CiBaRU5EX0FQSSBpbnQgemVuZF9zdGRfY2FzdF9vYmplY3RfdG9z dHJpbmcoenZhbCAqcmVhZG9iaiwgenZhbCAqd3JpdGVvYmosIGludCB0eXBlLCB2b2lkICpl eHRyYSBUU1JNTFNfREMpOwogCiAKSW5kZXg6IGV4dC9zaW1wbGV4bWwvc2ltcGxleG1sLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwLXNyYy9leHQvc2ltcGxl eG1sL3NpbXBsZXhtbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyNgpkaWZmIC11IC1w IC1kIC1yMS4yMjYgc2ltcGxleG1sLmMKLS0tIGV4dC9zaW1wbGV4bWwvc2ltcGxleG1sLmMJ MSBKYW4gMjAwNyAwOToyOToyOSAtMDAwMAkxLjIyNgorKysgZXh0L3NpbXBsZXhtbC9zaW1w bGV4bWwuYwkxNSBKYW4gMjAwNyAyMjoyMzoxOCAtMDAwMApAQCAtNjE1LDYgKzYxNSw3IEBA IHN0YXRpYyB2b2lkIHN4ZV9kaW1lbnNpb25fd3JpdGUoenZhbCAqb2IKIH0KIC8qIH19fSAq LwogCisjaWYgSEVMTFlfMAogc3RhdGljIHp2YWwqKiBzeGVfcHJvcGVydHlfZ2V0X2Fkcih6 dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciBUU1JNTFNfREMpIC8qIHt7eyAqLwogewogCXBo cF9zeGVfb2JqZWN0ICpzeGU7CkBAIC02MzksMTIgKzY0MCwxNiBAQCBzdGF0aWMgenZhbCoq IHN4ZV9wcm9wZXJ0eV9nZXRfYWRyKHp2YWwgCiAJX25vZGVfYXNfenZhbChzeGUsIG5vZGUs IHJldHVybl92YWx1ZSwgdHlwZSwgbmFtZSwgc3hlLT5pdGVyLm5zcHJlZml4LCBzeGUtPml0 ZXIuaXNwcmVmaXggVFNSTUxTX0NDKTsKIAogCXN4ZSA9IHBocF9zeGVfZmV0Y2hfb2JqZWN0 KHJldHVybl92YWx1ZSBUU1JNTFNfQ0MpOworCWlmIChzeGUtPnRtcCkgeworCQl6dmFsX3B0 cl9kdG9yKCZzeGUtPnRtcCk7CisJfQogCXN4ZS0+dG1wID0gcmV0dXJuX3ZhbHVlOwogCXJl dHVybl92YWx1ZS0+aXNfcmVmICA9IDE7CiAKIAlyZXR1cm4gJnN4ZS0+dG1wOwogfQogLyog fX19ICovCisjZW5kaWYKIAogLyoge3t7IHN4ZV9wcm9wX2RpbV9leGlzdHMoKQogICovCkBA IC05NDYsOSArOTUxLDcgQEAgc3RhdGljIHZvaWQgc3hlX3Byb3BlcnRpZXNfYWRkKEhhc2hU YWJsZQogCX0KIH0KIAotLyoge3t7IHN4ZV9wcm9wZXJ0aWVzX2dldCgpCi0gKi8KLXN0YXRp YyBIYXNoVGFibGUgKiBzeGVfcHJvcGVydGllc19nZXQoenZhbCAqb2JqZWN0IFRTUk1MU19E QykKK3N0YXRpYyBIYXNoVGFibGUgKiBzeGVfZ2V0X3Byb3BfaGFzaCh6dmFsICpvYmplY3Qs IGludCBpc19kZWJ1ZyBUU1JNTFNfREMpIC8qIHt7eyAqLwogewogCXp2YWwgICAgICAgICAg ICAqdmFsdWU7CiAJenZhbCAgICAgICAgICAgICp6YXR0cjsKQEAgLTk2Miw3ICs5NjUsMTAg QEAgc3RhdGljIEhhc2hUYWJsZSAqIHN4ZV9wcm9wZXJ0aWVzX2dldCh6dgogCiAJc3hlID0g cGhwX3N4ZV9mZXRjaF9vYmplY3Qob2JqZWN0IFRTUk1MU19DQyk7CiAKLQlpZiAoc3hlLT5w cm9wZXJ0aWVzKSB7CisJaWYgKGlzX2RlYnVnKSB7CisJCUFMTE9DX0hBU0hUQUJMRShydik7 CisJCXplbmRfdV9oYXNoX2luaXQocnYsIDAsIE5VTEwsIFpWQUxfUFRSX0RUT1IsIDAsIFVH KHVuaWNvZGUpKTsKKwl9IGVsc2UgaWYgKHN4ZS0+cHJvcGVydGllcykgewogCQl6ZW5kX2hh c2hfY2xlYW4oc3hlLT5wcm9wZXJ0aWVzKTsKIAkJcnYgPSBzeGUtPnByb3BlcnRpZXM7CiAJ fSBlbHNlIHsKQEAgLTk3NSw3ICs5ODEsNyBAQCBzdGF0aWMgSGFzaFRhYmxlICogc3hlX3By b3BlcnRpZXNfZ2V0KHp2CiAJaWYgKCFub2RlKSB7CiAJCXJldHVybiBydjsKIAl9Ci0JaWYg KDF8fHN4ZS0+aXRlci50eXBlICE9IFNYRV9JVEVSX0NISUxEKSB7CisJaWYgKGlzX2RlYnVn KSB7CiAJCWlmIChzeGUtPml0ZXIudHlwZSA9PSBTWEVfSVRFUl9FTEVNRU5UKSB7CiAJCQlu b2RlID0gcGhwX3N4ZV9nZXRfZmlyc3Rfbm9kZShzeGUsIG5vZGUgVFNSTUxTX0NDKTsKIAkJ fQpAQCAtMTA2Niw2ICsxMDcyLDE5IEBAIG5leHRfaXRlcjoKIH0KIC8qIH19fSAqLwogCitz dGF0aWMgSGFzaFRhYmxlICogc3hlX2dldF9wcm9wZXJ0aWVzKHp2YWwgKm9iamVjdCBUU1JN TFNfREMpIC8qIHt7eyAqLworeworCXJldHVybiBzeGVfZ2V0X3Byb3BfaGFzaChvYmplY3Qs IDAgVFNSTUxTX0NDKTsKK30KKy8qIH19fSAqLworCitzdGF0aWMgSGFzaFRhYmxlICogc3hl X2dldF9kZWJ1Z19pbmZvKHp2YWwgKm9iamVjdCwgaW50ICppc190ZW1wIFRTUk1MU19EQykg Lyoge3t7ICovCit7CisJKmlzX3RlbXAgPSAxOworCXJldHVybiBzeGVfZ2V0X3Byb3BfaGFz aChvYmplY3QsIDEgVFNSTUxTX0NDKTsKK30KKy8qIH19fSAqLworCiBzdGF0aWMgaW50IHN4 ZV9vYmplY3RzX2NvbXBhcmUoenZhbCAqb2JqZWN0MSwgenZhbCAqb2JqZWN0MiBUU1JNTFNf REMpIC8qIHt7eyAqLwogewogCXBocF9zeGVfb2JqZWN0ICpzeGUxOwpAQCAtMTY1NywxNiAr MTY3NiwyMCBAQCBzdGF0aWMgaW50IGNhc3Rfb2JqZWN0KHp2YWwgKm9iamVjdCwgaW50CiBz dGF0aWMgaW50IHN4ZV9vYmplY3RfY2FzdCh6dmFsICpyZWFkb2JqLCB6dmFsICp3cml0ZW9i aiwgaW50IHR5cGUsIHZvaWQgKmV4dHJhIFRTUk1MU19EQykKIHsKIAlwaHBfc3hlX29iamVj dCAqc3hlOwotCXhtbENoYXIgICAgICAgICAgICpjb250ZW50cyA9IE5VTEw7CisJeG1sQ2hh ciAgICAgICAgKmNvbnRlbnRzID0gTlVMTDsKIAl4bWxOb2RlUHRyCSAgICBub2RlOwotCWlu dCBydjsKKwlpbnQgICAgICAgICAgICAgcnY7CisJSGFzaFRhYmxlICAgICAgKnByb3BfaGFz aDsKIAogCXN4ZSA9IHBocF9zeGVfZmV0Y2hfb2JqZWN0KHJlYWRvYmogVFNSTUxTX0NDKTsK IAkKIAlpZiAodHlwZSA9PSBJU19CT09MKSB7CiAJCW5vZGUgPSBwaHBfc3hlX2dldF9maXJz dF9ub2RlKHN4ZSwgTlVMTCBUU1JNTFNfQ0MpOworCQlwcm9wX2hhc2ggPSBzeGVfZ2V0X3By b3BfaGFzaChyZWFkb2JqLCAxIFRTUk1MU19DQyk7CiAJCUlOSVRfUFpWQUwod3JpdGVvYmop OwotCQlaVkFMX0JPT0wod3JpdGVvYmosIG5vZGUgIT0gTlVMTCB8fCB6ZW5kX2hhc2hfbnVt X2VsZW1lbnRzKHN4ZV9wcm9wZXJ0aWVzX2dldChyZWFkb2JqIFRTUk1MU19DQykpID4gMCk7 CisJCVpWQUxfQk9PTCh3cml0ZW9iaiwgbm9kZSAhPSBOVUxMIHx8IHplbmRfaGFzaF9udW1f ZWxlbWVudHMocHJvcF9oYXNoKSA+IDApOworCQl6ZW5kX2hhc2hfZGVzdHJveShwcm9wX2hh c2gpOworCQllZnJlZShwcm9wX2hhc2gpOwogCQlyZXR1cm4gU1VDQ0VTUzsKIAl9CiAKQEAg LTE3NDksMTQgKzE3NzIsMTQgQEAgc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIHN4ZV9v YmplY3RfaAogCXN4ZV9wcm9wZXJ0eV93cml0ZSwKIAlzeGVfZGltZW5zaW9uX3JlYWQsCiAJ c3hlX2RpbWVuc2lvbl93cml0ZSwKLQlzeGVfcHJvcGVydHlfZ2V0X2FkciwKKwlOVUxMLAog CXN4ZV9nZXRfdmFsdWUsCQkJLyogZ2V0ICovCiAJTlVMTCwKIAlzeGVfcHJvcGVydHlfZXhp c3RzLAogCXN4ZV9wcm9wZXJ0eV9kZWxldGUsCiAJc3hlX2RpbWVuc2lvbl9leGlzdHMsCiAJ c3hlX2RpbWVuc2lvbl9kZWxldGUsCi0Jc3hlX3Byb3BlcnRpZXNfZ2V0LAorCXN4ZV9nZXRf cHJvcGVydGllcywKIAlOVUxMLCAvKiB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCkt PmdldF9tZXRob2QsKi8KIAlOVUxMLCAvKiB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJz KCktPmNhbGxfbWV0aG9kLCovCiAJTlVMTCwgLyogemVuZF9nZXRfc3RkX29iamVjdF9oYW5k bGVycygpLT5nZXRfY29uc3RydWN0b3IsICovCkBAIC0xNzY0LDcgKzE3ODcsOCBAQCBzdGF0 aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgc3hlX29iamVjdF9oCiAJTlVMTCwgLyogemVuZF9n ZXRfc3RkX29iamVjdF9oYW5kbGVycygpLT5nZXRfY2xhc3NfbmFtZSwqLwogCXN4ZV9vYmpl Y3RzX2NvbXBhcmUsCiAJc3hlX29iamVjdF9jYXN0LAotCXN4ZV9jb3VudF9lbGVtZW50cwor CXN4ZV9jb3VudF9lbGVtZW50cywKKwlzeGVfZ2V0X2RlYnVnX2luZm8KIH07CiAKIC8qIHt7 eyBzeGVfb2JqZWN0X2Nsb25lKCkKSW5kZXg6IGV4dC9zdGFuZGFyZC92YXIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3JjL2V4dC9zdGFuZGFyZC92YXIu Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNTkKZGlmZiAtdSAtcCAtZCAtcjEuMjU5IHZh ci5jCi0tLSBleHQvc3RhbmRhcmQvdmFyLmMJMSBKYW4gMjAwNyAwOToyOTozMiAtMDAwMAkx LjI1OQorKysgZXh0L3N0YW5kYXJkL3Zhci5jCTE1IEphbiAyMDA3IDIyOjIzOjE4IC0wMDAw CkBAIC0xODEsNiArMTgxLDcgQEAgUEhQQVBJIHZvaWQgcGhwX3Zhcl9kdW1wKHp2YWwgKipz dHJ1YywgaQogCXpzdHIgY2xhc3NfbmFtZTsKIAl6ZW5kX3VpbnQgY2xhc3NfbmFtZV9sZW47 CiAJaW50ICgqcGhwX2VsZW1lbnRfZHVtcF9mdW5jKSh6dmFsKiosIGludCwgdmFfbGlzdCwg emVuZF9oYXNoX2tleSopOworCWludCBpc190ZW1wOwogCiAJaWYgKGxldmVsID4gMSkgewog CQlwaHBfcHJpbnRmKCIlKmMiLCBsZXZlbCAtIDEsICcgJyk7CkBAIC0yMTcsOSArMjE4LDEw IEBAIFBIUEFQSSB2b2lkIHBocF92YXJfZHVtcCh6dmFsICoqc3RydWMsIGkKIAkJfQogCQlw aHBfcHJpbnRmKCIlc2FycmF5KCVkKSB7XG4iLCBDT01NT04sIHplbmRfaGFzaF9udW1fZWxl bWVudHMobXlodCkpOwogCQlwaHBfZWxlbWVudF9kdW1wX2Z1bmMgPSBwaHBfYXJyYXlfZWxl bWVudF9kdW1wOworCQlpc190ZW1wID0gMDsKIAkJZ290byBoZWFkX2RvbmU7CiAJY2FzZSBJ U19PQkpFQ1Q6Ci0JCW15aHQgPSBaX09CSlBST1BfUFAoc3RydWMpOworCQlteWh0ID0gWl9P QkpfSEFORExFUl9QUChzdHJ1YywgZ2V0X2RlYnVnX2luZm8pKCpzdHJ1YywgJmlzX3RlbXAg VFNSTUxTX0NDKTsKIAkJaWYgKG15aHQgJiYgbXlodC0+bkFwcGx5Q291bnQgPiAxKSB7CiAJ CQlQVVRTKCIqUkVDVVJTSU9OKlxuIik7CiAJCQlyZXR1cm47CkBAIC0yMzcsNiArMjM5LDEw IEBAIGhlYWRfZG9uZToKIAkJCXBocF9wcmludGYoIiUqYyIsIGxldmVsLTEsICcgJyk7CiAJ CX0KIAkJUFVUUygifVxuIik7CisJCWlmIChpc190ZW1wKSB7CisJCQl6ZW5kX2hhc2hfZGVz dHJveShteWh0KTsKKwkJCWVmcmVlKG15aHQpOworCQl9CiAJCWJyZWFrOwogCWNhc2UgSVNf UkVTT1VSQ0U6IHsKIAkJY2hhciAqdHlwZV9uYW1lOwo= ------------EF1B820B1F0B200C--