From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Alex Riesen" Subject: Re: CFT: merge-recursive in C (updated) Date: Wed, 28 Jun 2006 11:34:23 +0200 Message-ID: <81b0412b0606280234x7d07fbbck7887b5214d98bf91@mail.gmail.com> References: <81b0412b0606270848v2253209aw52466de632ab25c1@mail.gmail.com> <20060627223249.GA8177@steel.home> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_29254_10321502.1151487263481" Cc: "Johannes Schindelin" , "Junio C Hamano" , "Fredrik Kuivinen" , "Linus Torvalds" X-From: git-owner@vger.kernel.org Thu Jun 29 11:51:54 2006 Return-path: Envelope-to: gcvg-git@gmane.org Received: from mail-relay.eunet.no ([193.71.71.242]) by ciao.gmane.org with esmtp (Exim 4.43) id 1FvtBZ-0006Dw-DS for gcvg-git@gmane.org; Thu, 29 Jun 2006 11:51:45 +0200 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by mail-relay.eunet.no (8.13.6/8.13.1/GN) with ESMTP id k5S9Z8oM045174 for ; Wed, 28 Jun 2006 11:36:06 +0200 (CEST) (envelope-from git-owner@vger.kernel.org) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030492AbWF1Je3 (ORCPT ); Wed, 28 Jun 2006 05:34:29 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1423245AbWF1Je2 (ORCPT ); Wed, 28 Jun 2006 05:34:28 -0400 Received: from hu-out-0102.google.com ([72.14.214.197]:50893 "EHLO hu-out-0102.google.com") by vger.kernel.org with ESMTP id S1030492AbWF1Je0 (ORCPT ); Wed, 28 Jun 2006 05:34:26 -0400 Received: by hu-out-0102.google.com with SMTP id 23so1161267huc for ; Wed, 28 Jun 2006 02:34:24 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=BlJpyHwIdRsvAyU4BQH9kliHW8P2fMGSiQCEZinOwUmuRgJekRByv//E+jzfQ4LgHPx90BuI60gF8nI7BHQI5P70V8a9y5qBeR/qrESY7jQt8g4zB/a+SdQkSu7wQocf6xTf8HWKUM351TiKeqwGZ+HIKjL3ydNB3W57JiKXRKM= Received: by 10.78.160.2 with SMTP id i2mr115019hue; Wed, 28 Jun 2006 02:34:23 -0700 (PDT) Received: by 10.78.37.7 with HTTP; Wed, 28 Jun 2006 02:34:23 -0700 (PDT) To: git@vger.kernel.org In-Reply-To: <20060627223249.GA8177@steel.home> Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org X-Spam-Status: No, score=1.3 required=5.0 tests=RCVD_IN_BL_SPAMCOP_NET autolearn=no version=3.1.3 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on mail-relay.eunet.no Archived-At: ------=_Part_29254_10321502.1151487263481 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 6/28/06, Alex Riesen wrote: > Johannes Schindelin, Tue, Jun 27, 2006 18:42:51 +0200: > > > - use a pipe to "git-update-index --index-info" instead of using command > > > line ...and to take it a step further, a patch (0002) to avoid too many calls to git-write-tree and to git-update-index. Brought merge times on my test monster (~25k files) down to 2min 30sec (from something around 11 min). The 0001 patch is just C++ comments. ------=_Part_29254_10321502.1151487263481 Content-Type: text/plain; name=0001-update-comments-and-remove-C.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_eozhrb9h Content-Disposition: attachment; filename="0001-update-comments-and-remove-C.txt" RnJvbSAzNjE0Nzg4MGFmYWQzYTJkNTNmNjQ3NGJlYzA2OWUyOWQ4MmE3NGE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWVzZW4gPEFSaWVzZW5Ab2VrYXA4NTIuaGJpLmFkLmhhcm1h bi5jb20+CkRhdGU6IFdlZCwgMjggSnVuIDIwMDYgMDk6NDY6NDcgKzAyMDAKU3ViamVjdDogdXBk YXRlIGNvbW1lbnRzIGFuZCByZW1vdmUgQysrIC8vLi4uCi0tLQogZ3JhcGguYyAgICAgICAgICAg fCAgIDE0ICsrKystLQogbWVyZ2UtcmVjdXJzaXZlLmMgfCAgMTMxICsrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBwYXRoLWxpc3QuYyAgICAgICB8 ICAgIDIgLQogMyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9ncmFwaC5jIGIvZ3JhcGguYwppbmRleCBmYTJiZmVlLi4xYTI4MzAy IDEwMDY0NAotLS0gYS9ncmFwaC5jCisrKyBiL2dyYXBoLmMKQEAgLTUsNyArNSw3IEBAICNpbmNs dWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImNvbW1pdC5oIgogI2luY2x1ZGUgImdyYXBoLmgiCiAK LS8vIGRvZXMgbm90IGJlbG9uZyBoZXJlCisvKiBkb2VzIG5vdCBiZWxvbmcgaGVyZSAqLwogc3Ry dWN0IHRyZWUgKmdpdF93cml0ZV90cmVlKCkKIHsKICNpZiAwCkBAIC0xODksOCArMTg5LDEwIEBA IHN0cnVjdCBub2RlX2xpc3QgKm5vZGVfbGlzdF9maW5kX25vZGUoY28KIAlyZXR1cm4gKHN0cnVj dCBub2RlX2xpc3QqKXA7CiB9CiAKLS8vIGEgJiBiLiBhIGFuZCBhcmUgaW52YWxpZCBhZnRlciB0 aGUgY2FsbCwKLS8vIHRoZSByZXN1bHQgd2lsbCBjb250YWluIGFsbCB0aGUgY29tbW9uIG5vZGVz CisvKgorICogYSAmIGIuIGEgYW5kIGFyZSBpbnZhbGlkIGFmdGVyIHRoZSBjYWxsLAorICogdGhl IHJlc3VsdCB3aWxsIGNvbnRhaW4gYWxsIHRoZSBjb21tb24gbm9kZXMKKyAqLwogc3RydWN0IG5v ZGVfbGlzdCAqbm9kZV9saXN0X2ludGVyc2VjdChzdHJ1Y3Qgbm9kZV9saXN0ICphLAogCQkJCSAg ICAgIHN0cnVjdCBub2RlX2xpc3QgKmIpCiB7CkBAIC0yMTQsNyArMjE2LDcgQEAgc3RydWN0IG5v ZGUgKmdyYXBoX2FkZF9ub2RlKHN0cnVjdCBncmFwaAogewogCXN0cnVjdCBub2RlX2xpc3QgKipi dWNrZXQ7CiAJaWYgKCBub2RlLT52aXJ0dWFsICkKLQkJLy8gdmlydHVhbCBub2RlcyBoYXNoZWQg YnkgbG93ZXN0IGJ5dGUgb2YgdmlydHVhbF9pZAorCQkvKiB2aXJ0dWFsIG5vZGVzIGhhc2hlZCBi eSBsb3dlc3QgYnl0ZSBvZiB2aXJ0dWFsX2lkICovCiAJCWJ1Y2tldCA9IGdyYXBoLT5jb21taXRz ICsgKG5vZGUtPnZpcnR1YWxfaWQgJiAweGZmKTsKIAllbHNlCiAJCWJ1Y2tldCA9IGdyYXBoLT5j b21taXRzICsgbm9kZS0+Y29tbWl0LT5vYmplY3Quc2hhMVswXTsKQEAgLTI0OSw0ICsyNTEsNiBA QCB2b2lkIG5vZGVfbGlzdF9wcmludChjb25zdCBjaGFyICptc2csIGNvCiB9CiAjZW5kaWYKIAot Ly8gdmltOiBzdz04IG5vZXQKKy8qCit2aW06IHN3PTggbm9ldAorKi8KZGlmZiAtLWdpdCBhL21l cmdlLXJlY3Vyc2l2ZS5jIGIvbWVyZ2UtcmVjdXJzaXZlLmMKaW5kZXggOWJiYjQyNi4uYmE1YjAy NCAxMDA2NDQKLS0tIGEvbWVyZ2UtcmVjdXJzaXZlLmMKKysrIGIvbWVyZ2UtcmVjdXJzaXZlLmMK QEAgLTEsNyArMSw3IEBACi0vLwotLy8gUmVjdXJzaXZlIE1lcmdlIGFsZ29yaXRobSBzdG9sZW4g ZnJvbSBnaXQtbWVyZ2UtcmVjdXJzaXZlLnB5IGJ5Ci0vLyBGcmVkcmlrIEt1aXZpbmVuLgotLy8K Ky8qCisgKiBSZWN1cnNpdmUgTWVyZ2UgYWxnb3JpdGhtIHN0b2xlbiBmcm9tIGdpdC1tZXJnZS1y ZWN1cnNpdmUucHkgYnkKKyAqIEZyZWRyaWsgS3VpdmluZW4uCisgKi8KICNpbmNsdWRlIDxzdGRh cmcuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KQEAgLTQ3LDcg KzQ3LDcgQEAgc3RydWN0IGluZGV4X2VudHJ5CiAKIHN0cnVjdCBpbmRleF9lbnRyeSAqaW5kZXhf ZW50cnlfYWxsb2MoY29uc3QgY2hhciAqcGF0aCkKIHsKLQlzaXplX3QgbiA9IHN0cmxlbihwYXRo KTsgLy8gaW5kZXhfZW50cnk6OnBhdGggaGFzIHJvb20gZm9yIFwwCisJc2l6ZV90IG4gPSBzdHJs ZW4ocGF0aCk7IC8qIGluZGV4X2VudHJ5OjpwYXRoIGhhcyByb29tIGZvciBcMCAqLwogCXN0cnVj dCBpbmRleF9lbnRyeSAqcCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBpbmRleF9lbnRyeSkgKyBu KTsKIAlpZiAoICFwICkKIAkJcmV0dXJuIE5VTEw7CkBAIC0xMDIsMTQgKzEwMiwxNiBAQCBzdGF0 aWMgdm9pZCBzZXR1cF9pbmRleChpbnQgdGVtcCkKIAlzZXRlbnYoIkdJVF9JTkRFWF9GSUxFIiwg aWR4LCAxKTsKIH0KIAotLy8gVGhpcyBpcyBhIGdsb2JhbCB2YXJpYWJsZSB3aGljaCBpcyB1c2Vk IGluIGEgbnVtYmVyIG9mIHBsYWNlcyBidXQKLS8vIG9ubHkgd3JpdHRlbiB0byBpbiB0aGUgJ21l cmdlJyBmdW5jdGlvbi4KLQotLy8gaW5kZXhfb25seSA9PSAxICAgID0+IERvbid0IGxlYXZlIGFu eSBub24tc3RhZ2UgMCBlbnRyaWVzIGluIHRoZSBjYWNoZSBhbmQKLS8vICAgICAgICAgICAgICAg ICAgICAgICBkb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgotLy8gICAgICAgICAg ICAgICAwICAgID0+IExlYXZlIHVubWVyZ2VkIGVudHJpZXMgaW4gdGhlIGNhY2hlIGFuZCB1cGRh dGUKLS8vICAgICAgICAgICAgICAgICAgICAgICB0aGUgd29ya2luZyBkaXJlY3RvcnkuCi1zdGF0 aWMgaW50IGluZGV4X29ubHkgPSAwOyAvLyBjYWNoZU9ubHkKKy8qCisgKiBUaGlzIGlzIGEgZ2xv YmFsIHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgcGxhY2VzIGJ1dAorICog b25seSB3cml0dGVuIHRvIGluIHRoZSAnbWVyZ2UnIGZ1bmN0aW9uLgorICoKKyAqIGluZGV4X29u bHkgPT0gMSAgICA9PiBEb24ndCBsZWF2ZSBhbnkgbm9uLXN0YWdlIDAgZW50cmllcyBpbiB0aGUg Y2FjaGUgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3QgdXBkYXRlIHRoZSB3b3Jr aW5nIGRpcmVjdG9yeS4KKyAqICAgICAgICAgICAgICAgMCAgICA9PiBMZWF2ZSB1bm1lcmdlZCBl bnRyaWVzIGluIHRoZSBjYWNoZSBhbmQgdXBkYXRlCisgKiAgICAgICAgICAgICAgICAgICAgICAg dGhlIHdvcmtpbmcgZGlyZWN0b3J5LgorICovCitzdGF0aWMgaW50IGluZGV4X29ubHkgPSAwOwog CiBzdGF0aWMgaW50IGdpdF9yZWFkX3RyZWUoY29uc3Qgc3RydWN0IHRyZWUgKnRyZWUpCiB7CkBA IC0xNTcsMTAgKzE1OSwxMCBAQCBzdHJ1Y3QgbWVyZ2VfdHJlZV9yZXN1bHQgbWVyZ2VfdHJlZXMo c3RyCiAKIHN0YXRpYyBpbnQgZmdldF9zaGExKHVuc2lnbmVkIGNoYXIgKnNoYSwgRklMRSAqZnAs IGludCAqY2gpOwogCi0vLyBUaGUgZW50cnkgcG9pbnQgdG8gdGhlIG1lcmdlIGNvZGUKLQotLy8g TWVyZ2UgdGhlIGNvbW1pdHMgaDEgYW5kIGgyLCByZXR1cm4gdGhlIHJlc3VsdGluZyB2aXJ0dWFs Ci0vLyBjb21taXQgb2JqZWN0IGFuZCBhIGZsYWcgaW5kaWNhdGluZyB0aGUgY2xlYW5lc3Mgb2Yg dGhlIG1lcmdlLgorLyoKKyAqIE1lcmdlIHRoZSBjb21taXRzIGgxIGFuZCBoMiwgcmV0dXJuIHRo ZSByZXN1bHRpbmcgdmlydHVhbAorICogY29tbWl0IG9iamVjdCBhbmQgYSBmbGFnIGluZGljYXRp bmcgdGhlIGNsZWFuZXNzIG9mIHRoZSBtZXJnZS4KKyAqLwogc3RhdGljCiBzdHJ1Y3QgbWVyZ2Vf cmVzdWx0IG1lcmdlKHN0cnVjdCBub2RlICpoMSwKIAkJCSAgc3RydWN0IG5vZGUgKmgyLApAQCAt MjYyLDcgKzI2NCw3IEBAIHR5cGVkZWYgaW50ICgqcmVhZF90cmVlX3J0X2ZuX3QpKGNvbnN0IGMK IAkJCQkgdW5zaWduZWQgbW9kZSwKIAkJCQkgdm9pZCAqZGF0YSk7CiAKLS8vIGdpdC1scy10cmVl IC1yIC10IDx0cmVlPgorLyogZ2l0LWxzLXRyZWUgLXIgLXQgPHRyZWU+ICovCiBzdGF0aWMgaW50 IHJlYWRfdHJlZV9ydChzdHJ1Y3QgdHJlZSAqdHJlZSwKIAkJCWNvbnN0IGNoYXIgKmJhc2UsCiAJ CQlpbnQgYmFzZWxlbiwKQEAgLTM5MSw4ICszOTMsMTAgQEAgc3RhdGljIGludCBmaW5kX2VudHJ5 KGNvbnN0IGNoYXIgKnNoYSwKIAlyZXR1cm4gUkVBRF9UUkVFX1JFQ1VSU0lWRTsKIH0KIAotLy8g UmV0dXJucyBhIENhY2hlRW50cnkgb2JqZWN0IHdoaWNoIGRvZXNuJ3QgaGF2ZSB0byBjb3JyZXNw b25kIHRvCi0vLyBhIHJlYWwgY2FjaGUgZW50cnkgaW4gR2l0J3MgaW5kZXguCisvKgorICogUmV0 dXJucyBhIGluZGV4X2VudHJ5IGluc3RhbmNlIHdoaWNoIGRvZXNuJ3QgaGF2ZSB0byBjb3JyZXNw b25kIHRvCisgKiBhIHJlYWwgY2FjaGUgZW50cnkgaW4gR2l0J3MgaW5kZXguCisgKi8KIHN0cnVj dCBpbmRleF9lbnRyeSAqaW5kZXhfZW50cnlfZnJvbV9kYihjb25zdCBjaGFyICpwYXRoLAogCQkJ CQlzdHJ1Y3QgdHJlZSAqbywKIAkJCQkJc3RydWN0IHRyZWUgKmEsCkBAIC00MDQsMjQgKzQwOCwx OCBAQCBzdHJ1Y3QgaW5kZXhfZW50cnkgKmluZGV4X2VudHJ5X2Zyb21fZGIoCiAJZGF0YS5zaGEg PSBlLT5zdGFnZXNbMV0uc2hhOwogCWRhdGEubW9kZSA9ICZlLT5zdGFnZXNbMV0ubW9kZTsKIAlp ZiAoIHJlYWRfdHJlZV9ydChvLCAiIiwgMCwgZmluZF9lbnRyeSwgJmRhdGEpICE9IFJFQURfVFJF RV9GT1VORCApIHsKLQkJLy8gZnByaW50ZihzdGRlcnIsICIxOiAlczolcyBub3QgZm91bmRcbiIs Ci0JCS8vIAlzaGExX3RvX2hleChvLT5vYmplY3Quc2hhMSksIHBhdGgpOwogCQltZW1jcHkoZS0+ c3RhZ2VzWzFdLnNoYSwgbnVsbF9zaGExLCAyMCk7CiAJCWUtPnN0YWdlc1sxXS5tb2RlID0gMDsK IAl9CiAJZGF0YS5zaGEgPSBlLT5zdGFnZXNbMl0uc2hhOwogCWRhdGEubW9kZSA9ICZlLT5zdGFn ZXNbMl0ubW9kZTsKIAlpZiAoIHJlYWRfdHJlZV9ydChhLCAiIiwgMCwgZmluZF9lbnRyeSwgJmRh dGEpICE9IFJFQURfVFJFRV9GT1VORCApIHsKLQkJLy8gZnByaW50ZihzdGRlcnIsICIyOiAlczol cyBub3QgZm91bmRcbiIsCi0JCS8vIAlzaGExX3RvX2hleChhLT5vYmplY3Quc2hhMSksIHBhdGgp OwogCQltZW1jcHkoZS0+c3RhZ2VzWzJdLnNoYSwgbnVsbF9zaGExLCAyMCk7CiAJCWUtPnN0YWdl c1syXS5tb2RlID0gMDsKIAl9CiAJZGF0YS5zaGEgPSBlLT5zdGFnZXNbM10uc2hhOwogCWRhdGEu bW9kZSA9ICZlLT5zdGFnZXNbM10ubW9kZTsKIAlpZiAoIHJlYWRfdHJlZV9ydChiLCAiIiwgMCwg ZmluZF9lbnRyeSwgJmRhdGEpICE9IFJFQURfVFJFRV9GT1VORCApIHsKLQkJLy8gZnByaW50Zihz dGRlcnIsICIzOiAlczolcyBub3QgZm91bmRcbiIsCi0JCS8vIAlzaGExX3RvX2hleChiLT5vYmpl Y3Quc2hhMSksIHBhdGgpOwogCQltZW1jcHkoZS0+c3RhZ2VzWzNdLnNoYSwgbnVsbF9zaGExLCAy MCk7CiAJCWUtPnN0YWdlc1szXS5tb2RlID0gMDsKIAl9CkBAIC00NjksOCArNDY3LDExIEBAIHN0 YXRpYyBpbnQgZmdldF9zaGExKHVuc2lnbmVkIGNoYXIgKnNoYSwKIAkJcmV0dXJuIC0xOwogCXJl dHVybiAwOwogfQotLy8gQ3JlYXRlIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZpbGUgbmFtZXMgdG8g Q2FjaGVFbnRyeSBvYmplY3RzLiBUaGUKLS8vIGRpY3Rpb25hcnkgY29udGFpbnMgb25lIGVudHJ5 IGZvciBldmVyeSBwYXRoIHdpdGggYSBub24temVybyBzdGFnZSBlbnRyeS4KKworLyoKKyAqIENy ZWF0ZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBmaWxlIG5hbWVzIHRvIENhY2hlRW50cnkgb2JqZWN0 cy4gVGhlCisgKiBkaWN0aW9uYXJ5IGNvbnRhaW5zIG9uZSBlbnRyeSBmb3IgZXZlcnkgcGF0aCB3 aXRoIGEgbm9uLXplcm8gc3RhZ2UgZW50cnkuCisgKi8KIHN0cnVjdCBpbmRleF9lbnRyeSAqdW5t ZXJnZWRDYWNoZUVudHJpZXMoKQogewogCXN0cnVjdCBpbmRleF9lbnRyeSAqdW5tZXJnZWQgPSBO VUxMOwpAQCAtNDg0LDE3ICs0ODUsMTcgQEAgc3RydWN0IGluZGV4X2VudHJ5ICp1bm1lcmdlZENh Y2hlRW50cmllcwogCQljaGFyIHN0YWdlID0gJzAnOwogCQljaGFyIHBhdGhbUEFUSF9NQVhdOwog CQlpbnQgcDsKLQkJLy8gbW9kZQorCQkvKiBtb2RlICovCiAJCWlmICggZmdldF9tb2RlKCZtb2Rl LCBmcCwgJmNoKSApCiAJCQlnb3RvIHdhaXRfZW9sOwogCQlpZiAoICdceDIwJyAhPSBjaCApCiAJ CQlnb3RvIHdhaXRfZW9sOwotCQkvLyBTSEExCisJCS8qIFNIQTEgKi8KIAkJaWYgKCBmZ2V0X3No YTEoc2hhLCBmcCwgJmNoKSApCiAJCQlnb3RvIHdhaXRfZW9sOwogCQlpZiAoICdceDIwJyAhPSBj aCApCiAJCQlnb3RvIHdhaXRfZW9sOwotCQkvLyBzdGFnZQorCQkvKiBzdGFnZSAqLwogCQlpZiAo IChjaCA9IGZnZXRjKGZwKSkgIT0gRU9GICkgewogCQkJc3RhZ2UgPSBjaDsKIAkJCWlmICggY2gg PCAnMScgfHwgY2ggPiAnMycgKQpAQCAtNTAyLDcgKzUwMyw3IEBAIHN0cnVjdCBpbmRleF9lbnRy eSAqdW5tZXJnZWRDYWNoZUVudHJpZXMKIAkJfQogCQlpZiAoIChjaCA9IGZnZXRjKGZwKSkgPT0g RU9GIHx8ICdcdCcgIT0gY2ggKQogCQkJZ290byB3YWl0X2VvbDsKLQkJLy8gcGF0aAorCQkvKiBw YXRoICovCiAJCWZvciAoIHAgPSAwOyAoY2ggPSBmZ2V0YyhmcCkpICE9IEVPRjsgKytwICkgewog CQkJcGF0aFtwXSA9IGNoOwogCQkJaWYgKCAhY2ggKQpAQCAtNTE1LDcgKzUxNiw2IEBAIHN0cnVj dCBpbmRleF9lbnRyeSAqdW5tZXJnZWRDYWNoZUVudHJpZXMKIAkJfQogCQlpZiAoIGNoICkKIAkJ CWdvdG8gd2FpdF9lb2w7Ci0JCS8vIHByaW50ZigidW5tZXJnZWQgJTA4byAlcyAlYyAlc1xuIixt b2RlLHNoYTFfdG9faGV4KHNoYSksc3RhZ2UscGF0aCk7CiAJCXN0cnVjdCBpbmRleF9lbnRyeSAq ZSA9IGluZGV4X2VudHJ5X2dldCgmdW5tZXJnZWQsIHBhdGgpOwogCQllLT5zdGFnZXNbc3RhZ2Ug LSAnMScgKyAxXS5tb2RlID0gbW9kZTsKIAkJbWVtY3B5KGUtPnN0YWdlc1tzdGFnZSAtICcxJyAr IDFdLnNoYSwgc2hhLCAyMCk7CkBAIC01ODMsMTAgKzU4MywxMiBAQCB2b2lkIGZyZWVfcmVuYW1l X2VudHJpZXMoc3RydWN0IHJlbmFtZV9lCiAJfQogfQogCi0vLyBHZXQgaW5mb3JtYXRpb24gb2Yg YWxsIHJlbmFtZXMgd2hpY2ggb2NjdXJlZCBiZXR3ZWVuICdvVHJlZScgYW5kCi0vLyAndHJlZScu IFdlIG5lZWQgdGhlIHRocmVlIHRyZWVzIGluIHRoZSBtZXJnZSAoJ29UcmVlJywgJ2FUcmVlJyBh bmQKLS8vICdiVHJlZScpIHRvIGJlIGFibGUgdG8gYXNzb2NpYXRlIHRoZSBjb3JyZWN0IGNhY2hl IGVudHJpZXMgd2l0aAotLy8gdGhlIHJlbmFtZSBpbmZvcm1hdGlvbi4gJ3RyZWUnIGlzIGFsd2F5 cyBlcXVhbCB0byBlaXRoZXIgYVRyZWUgb3IgYlRyZWUuCisvKgorICogR2V0IGluZm9ybWF0aW9u IG9mIGFsbCByZW5hbWVzIHdoaWNoIG9jY3VyZWQgYmV0d2VlbiAnb1RyZWUnIGFuZAorICogJ3Ry ZWUnLiBXZSBuZWVkIHRoZSB0aHJlZSB0cmVlcyBpbiB0aGUgbWVyZ2UgKCdvVHJlZScsICdhVHJl ZScgYW5kCisgKiAnYlRyZWUnKSB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSB0aGUgY29ycmVjdCBj YWNoZSBlbnRyaWVzIHdpdGgKKyAqIHRoZSByZW5hbWUgaW5mb3JtYXRpb24uICd0cmVlJyBpcyBh bHdheXMgZXF1YWwgdG8gZWl0aGVyIGFUcmVlIG9yIGJUcmVlLgorICovCiBzdHJ1Y3QgcmVuYW1l X2VudHJ5ICpnZXRSZW5hbWVzKHN0cnVjdCB0cmVlICp0cmVlLAogCQkJCXN0cnVjdCB0cmVlICpv VHJlZSwKIAkJCQlzdHJ1Y3QgdHJlZSAqYVRyZWUsCkBAIC04MzEsNyArODMzLDYgQEAgdm9pZCB1 cGRhdGVGaWxlRXh0KEZJTEUgKmZwLAogCX0KIAlpZiAoIHVwZGF0ZUNhY2hlICkKIAl7Ci0JCS8v IFhYWCBqdXN0IGFsd2F5cyB1c2UgImdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvIj8KIAkJ ZnByaW50ZihmcCwgIiUwNm8gJXNcdCVzIiwgbW9kZSwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7 CiAJCWZwdXRjKCdcMCcsIGZwKTsKIAl9CkBAIC04NDYsOCArODQ3LDggQEAgdm9pZCB1cGRhdGVG aWxlKEZJTEUgKmZwLAogCXVwZGF0ZUZpbGVFeHQoZnAsIHNoYSwgbW9kZSwgcGF0aCwgaW5kZXhf b25seSB8fCBjbGVhbiwgIWluZGV4X29ubHkpOwogfQogCi0vLyBMb3cgbGV2ZWwgZmlsZSBtZXJn aW5nLCB1cGRhdGUgYW5kIHJlbW92YWwKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLyogTG93IGxldmVsIGZpbGUgbWVyZ2luZywgdXBkYXRlIGFuZCByZW1v dmFsICovCisKIHN0cnVjdCBtZXJnZV9maWxlX2luZm8KIHsKIAl1bnNpZ25lZCBjaGFyIHNoYVsy MF07CkBAIC05OTEsOSArOTkyLDYgQEAgaW50IHByb2Nlc3NSZW5hbWVzKHN0cnVjdCByZW5hbWVf ZW50cnkgKgogCQkgICBjb25zdCBjaGFyICpicmFuY2hOYW1lQikKIHsKIAlpbnQgY2xlYW5NZXJn ZSA9IDE7Ci0JLy8gICAgcHJpbnRmKCJwcm9jZXNzIHJlbmFtZXMgJXM6JXMgLT4gJXM6JXNcbiIs Ci0JLy8JICAgYnJhbmNoTmFtZUEsIHJlbmFtZXNBID8gcmVuYW1lc0EtPnNyYzogIihub25lKSIs Ci0JLy8JICAgYnJhbmNoTmFtZUIsIHJlbmFtZXNCID8gcmVuYW1lc0ItPmRzdDogIihub25lKSIp OwogCiAJc3RydWN0IHBhdGhfbGlzdCBzcmNOYW1lcyA9IHtOVUxMLCAwLCAwfTsKIAljb25zdCBz dHJ1Y3QgcmVuYW1lX2VudHJ5ICpzcmU7CkBAIC0xMDMzLDcgKzEwMzEsNyBAQCBpbnQgcHJvY2Vz c1JlbmFtZXMoc3RydWN0IHJlbmFtZV9lbnRyeSAqCiAJCXJlbjEtPnByb2Nlc3NlZCA9IDE7CiAK IAkJaWYgKCByZW4yICkgewotCQkJLy8gUmVuYW1lZCBpbiAxIGFuZCByZW5hbWVkIGluIDIKKwkJ CS8qIFJlbmFtZWQgaW4gMSBhbmQgcmVuYW1lZCBpbiAyICovCiAJCQlpZiAoIHN0cmNtcChyZW4x LT5zcmMsIHJlbjItPnNyYykgIT0gMCApCiAJCQkJZGllKCJyZW4xLnNyY05hbWUgIT0gcmVuMi5z cmNOYW1lIik7CiAJCQlyZW4yLT5kc3RfZW50cnktPnByb2Nlc3NlZCA9IDE7CkBAIC0xMDk3LDcg KzEwOTUsNyBAQCBpbnQgcHJvY2Vzc1JlbmFtZXMoc3RydWN0IHJlbmFtZV9lbnRyeSAqCiAJCQkJ dXBkYXRlRmlsZShmcCwgbWZpLmNsZWFuLCBtZmkuc2hhLCBtZmkubW9kZSwgcmVuMS0+ZHN0KTsK IAkJCX0KIAkJfSBlbHNlIHsKLQkJCS8vIFJlbmFtZWQgaW4gMSwgbWF5YmUgY2hhbmdlZCBpbiAy CisJCQkvKiBSZW5hbWVkIGluIDEsIG1heWJlIGNoYW5nZWQgaW4gMiAqLwogCQkJcmVtb3ZlRmls ZShmcCwgMSwgcmVuMS0+c3JjKTsKIAogCQkJdW5zaWduZWQgY2hhciBzcmNTaGFPdGhlckJyYW5j aFsyMF0sIGRzdFNoYU90aGVyQnJhbmNoWzIwXTsKQEAgLTEyMjQsMTUgKzEyMjIsMTUgQEAgc3Rh dGljIGludCBzaGFfZXEoY29uc3QgdW5zaWduZWQgY2hhciAqYQogCXJldHVybiBhICYmIGIgJiYg bWVtY21wKGEsIGIsIDIwKSA9PSAwOwogfQogCi0vLyBQZXIgZW50cnkgbWVyZ2UgZnVuY3Rpb24K LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTWVyZ2Ugb25lIGNhY2hlIGVudHJ5Lgor LyogUGVyIGVudHJ5IG1lcmdlIGZ1bmN0aW9uICovCiBpbnQgcHJvY2Vzc0VudHJ5KHN0cnVjdCBp bmRleF9lbnRyeSAqZW50cnksCiAJCSBjb25zdCBjaGFyICpicmFuY2gxTmFtZSwKIAkJIGNvbnN0 IGNoYXIgKmJyYW5jaDJOYW1lKQogewotCS8vICAgIHByaW50ZigicHJvY2Vzc2luZyBlbnRyeSwg Y2xlYW4gY2FjaGU6ICVzXG4iLCBpbmRleF9vbmx5ID8gInllcyI6ICJubyIpOwotCS8vICAgIHBy aW50X2luZGV4X2VudHJ5KCJcdHBhdGg6ICIsIGVudHJ5KTsKKwkvKgorCXByaW50ZigicHJvY2Vz c2luZyBlbnRyeSwgY2xlYW4gY2FjaGU6ICVzXG4iLCBpbmRleF9vbmx5ID8gInllcyI6ICJubyIp OworCXByaW50X2luZGV4X2VudHJ5KCJcdHBhdGg6ICIsIGVudHJ5KTsKKwkqLwogCWludCBjbGVh bk1lcmdlID0gMTsKIAljb25zdCBjaGFyICpwYXRoID0gZW50cnktPnBhdGg7CiAJdW5zaWduZWQg Y2hhciAqb1NoYSA9IGhhc19zaGEoZW50cnktPnN0YWdlc1sxXS5zaGEpOwpAQCAtMTI0NCwxOCAr MTI0MiwxNyBAQCBpbnQgcHJvY2Vzc0VudHJ5KHN0cnVjdCBpbmRleF9lbnRyeSAqZW50CiAJRklM RSAqZnAgPSBnaXRfdXBkYXRlX2luZGV4X3BpcGUoKTsKIAogCWlmICggb1NoYSAmJiAoIWFTaGEg fHwgIWJTaGEpICkgewotCQkvLwotCQkvLyBDYXNlIEE6IERlbGV0ZWQgaW4gb25lCi0JCS8vCisJ CS8qIENhc2UgQTogRGVsZXRlZCBpbiBvbmUgKi8KIAkJaWYgKCAoIWFTaGEgJiYgIWJTaGEpIHx8 CiAJCSAgICAgKHNoYV9lcShhU2hhLCBvU2hhKSAmJiAhYlNoYSkgfHwKIAkJICAgICAoIWFTaGEg JiYgc2hhX2VxKGJTaGEsIG9TaGEpKSApIHsKLQkJCS8vIERlbGV0ZWQgaW4gYm90aCBvciBkZWxl dGVkIGluIG9uZSBhbmQgdW5jaGFuZ2VkIGluIHRoZSBvdGhlcgorCQkJLyogRGVsZXRlZCBpbiBi b3RoIG9yIGRlbGV0ZWQgaW4gb25lIGFuZAorCQkJICogdW5jaGFuZ2VkIGluIHRoZSBvdGhlciAq LwogCQkJaWYgKCBhU2hhICkKIAkJCQlvdXRwdXQoIlJlbW92aW5nICVzIiwgcGF0aCk7CiAJCQly ZW1vdmVGaWxlKGZwLCAxLCBwYXRoKTsKIAkJfSBlbHNlIHsKLQkJCS8vIERlbGV0ZWQgaW4gb25l IGFuZCBjaGFuZ2VkIGluIHRoZSBvdGhlcgorCQkJLyogRGVsZXRlZCBpbiBvbmUgYW5kIGNoYW5n ZWQgaW4gdGhlIG90aGVyICovCiAJCQljbGVhbk1lcmdlID0gMDsKIAkJCWlmICggIWFTaGEgKSB7 CiAJCQkJb3V0cHV0KCJDT05GTElDVCAoZGVsZXRlL21vZGlmeSk6ICVzIGRlbGV0ZWQgaW4gJXMg IgpAQCAtMTI3NCw5ICsxMjcxLDcgQEAgaW50IHByb2Nlc3NFbnRyeShzdHJ1Y3QgaW5kZXhfZW50 cnkgKmVudAogCiAJfSBlbHNlIGlmICggKCFvU2hhICYmIGFTaGEgJiYgIWJTaGEpIHx8CiAJCSAg ICAoIW9TaGEgJiYgIWFTaGEgJiYgYlNoYSkgKSB7Ci0JCS8vCi0JCS8vIENhc2UgQjogQWRkZWQg aW4gb25lLgotCQkvLworCQkvKiBDYXNlIEI6IEFkZGVkIGluIG9uZS4gKi8KIAkJY29uc3QgY2hh ciAqYWRkQnJhbmNoOwogCQljb25zdCBjaGFyICpvdGhlckJyYW5jaDsKIAkJdW5zaWduZWQgbW9k ZTsKQEAgLTEzMDksOSArMTMwNCw3IEBAIGludCBwcm9jZXNzRW50cnkoc3RydWN0IGluZGV4X2Vu dHJ5ICplbnQKIAkJCXVwZGF0ZUZpbGUoZnAsIDEsIHNoYSwgbW9kZSwgcGF0aCk7CiAJCX0KIAl9 IGVsc2UgaWYgKCAhb1NoYSAmJiBhU2hhICYmIGJTaGEgKSB7Ci0JCS8vCi0JCS8vIENhc2UgQzog QWRkZWQgaW4gYm90aCAoY2hlY2sgZm9yIHNhbWUgcGVybWlzc2lvbnMpLgotCQkvLworCQkvKiBD YXNlIEM6IEFkZGVkIGluIGJvdGggKGNoZWNrIGZvciBzYW1lIHBlcm1pc3Npb25zKS4gKi8KIAkJ aWYgKCBzaGFfZXEoYVNoYSwgYlNoYSkgKSB7CiAJCQlpZiAoIGFNb2RlICE9IGJNb2RlICkgewog CQkJCWNsZWFuTWVyZ2UgPSAwOwpAQCAtMTMyMSw3ICsxMzE0LDcgQEAgaW50IHByb2Nlc3NFbnRy eShzdHJ1Y3QgaW5kZXhfZW50cnkgKmVudAogCQkJCW91dHB1dCgiQ09ORkxJQ1Q6IGFkZGluZyB3 aXRoIHBlcm1pc3Npb246ICUwNm8iLCBhTW9kZSk7CiAJCQkJdXBkYXRlRmlsZShmcCwgMCwgYVNo YSwgYU1vZGUsIHBhdGgpOwogCQkJfSBlbHNlIHsKLQkJCQkvLyBUaGlzIGNhc2UgaXMgaGFuZGxl ZCBieSBnaXQtcmVhZC10cmVlCisJCQkJLyogVGhpcyBjYXNlIGlzIGhhbmRsZWQgYnkgZ2l0LXJl YWQtdHJlZSAqLwogCQkJCWFzc2VydCgwICYmICJUaGlzIGNhc2UgbXVzdCBiZSBoYW5kbGVkIGJ5 IGdpdC1yZWFkLXRyZWUiKTsKIAkJCX0KIAkJfSBlbHNlIHsKQEAgLTEzMzcsOSArMTMzMCw3IEBA IGludCBwcm9jZXNzRW50cnkoc3RydWN0IGluZGV4X2VudHJ5ICplbnQKIAkJfQogCiAJfSBlbHNl IGlmICggb1NoYSAmJiBhU2hhICYmIGJTaGEgKSB7Ci0JCS8vCi0JCS8vIGNhc2UgRDogTW9kaWZp ZWQgaW4gYm90aCwgYnV0IGRpZmZlcmVudGx5LgotCQkvLworCQkvKiBjYXNlIEQ6IE1vZGlmaWVk IGluIGJvdGgsIGJ1dCBkaWZmZXJlbnRseS4gKi8KIAkJb3V0cHV0KCJBdXRvLW1lcmdpbmcgJXNc biIsIHBhdGgpOwogCQlzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIG1maTsKIAkJbWZpID0gbWVyZ2VG aWxlKHBhdGgsIG9TaGEsIG9Nb2RlLApAQCAtMTQ3MiwxNSArMTQ2MywxNSBAQCBzdHJ1Y3QgZ3Jh cGggKmdyYXBoX2J1aWxkKHN0cnVjdCBub2RlX2xpCiAJCQlicmVhazsKIAkJaWYgKEVPRiA9PSBj aCkKIAkJCWJyZWFrOwotCQkvLyBhIGNvbW1pdAorCQkvKiBhIGNvbW1pdCAqLwogCQlzdHJ1Y3Qg bm9kZSAqbm9kZSA9IGdyYXBoX25vZGVfYnlzaGEoZ3JhcGgsIHNoYSk7CiAJCWlmICghbm9kZSkK IAkJewogCQkJbm9kZSA9IG5vZGVfYWxsb2MobG9va3VwX2NvbW1pdChzaGEpKTsKIAkJCWdyYXBo X2FkZF9ub2RlKGdyYXBoLCBub2RlKTsKIAkJfQotCQkvLyAuLi5hbmQgaXRzIHBhcmVudHMuIEkg YXNzdW1lIGEgcGFyZW50IGNhbm5vdCBiZSBtZW50aW9uZWQKLQkJLy8gYmVmb3JlIHRoZSBjaGls ZHJlbi4KKwkJLyogLi4uYW5kIGl0cyBwYXJlbnRzLiBJIGFzc3VtZSBhIHBhcmVudCBjYW5ub3Qg YmUgbWVudGlvbmVkCisJCSAgIGJlZm9yZSB0aGUgY2hpbGRyZW4uICovCiAJCXN0cnVjdCBub2Rl X2xpc3QgKnBhcmVudHMgPSBOVUxMOwogCQl3aGlsZSAoJ1xuJyAhPSBjaCkgewogCQkJaWYgKGZn ZXRfc2hhMShzaGEsIGZwLCAmY2gpKSB7CkBAIC0xNTczLDQgKzE1NjQsNiBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCXJldHVybiByZXN1bHQuY2xlYW4gPyAwOiAxOwogfQog Ci0vLyB2aW06IHN3PTggbm9ldAorLyoKK3ZpbTogc3c9OCBub2V0CisqLwpkaWZmIC0tZ2l0IGEv cGF0aC1saXN0LmMgYi9wYXRoLWxpc3QuYwppbmRleCBmYmZjMTAzLi45NTM5NWFiIDEwMDY0NAot LS0gYS9wYXRoLWxpc3QuYworKysgYi9wYXRoLWxpc3QuYwpAQCAtNjcsNyArNjcsNyBAQCBpbnQg cGF0aF9saXN0X2hhc19wYXRoKGNvbnN0IHN0cnVjdCBwYXRoCiAJcmV0dXJuIGV4YWN0X21hdGNo OwogfQogCi0vLyBpbiBwbGFjZQorLyogaW4gcGxhY2UgKi8KIHZvaWQgcGF0aF9saXN0X3VuaW9u X3VwZGF0ZShzdHJ1Y3QgcGF0aF9saXN0ICpkc3QsIGNvbnN0IHN0cnVjdCBwYXRoX2xpc3QgKnNy YykKIHsKIAljaGFyICoqbmV3X3BhdGhzOwotLSAKMS40LjEucmMxLmc4YjA5LWRpcnR5Cgo= ------=_Part_29254_10321502.1151487263481 Content-Type: text/plain; name=0002-fix-processEntries-to-avoid-multiple-calls-to-write-tree-and-update-index.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_eozhrmo3 Content-Disposition: attachment; filename="0002-fix-processEntries-to-avoid-multiple-calls-to-write-tree-and-update-index.txt" RnJvbSBiMmZiZmMyMjUyNmZiMmExZjU2ZWY1NjgzNmI3NDEyYzUzNTI0ZTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWVzZW4gPEFSaWVzZW5Ab2VrYXA4NTIuaGJpLmFkLmhhcm1h bi5jb20+CkRhdGU6IFdlZCwgMjggSnVuIDIwMDYgMTA6NDU6MDUgKzAyMDAKU3ViamVjdDogZml4 IHByb2Nlc3NFbnRyaWVzIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIHdyaXRlLXRyZWUgYW5k IHVwZGF0ZS1pbmRleAotLS0KIG1lcmdlLXJlY3Vyc2l2ZS5jIHwgICA0NyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCAzNiBp bnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tZXJnZS1yZWN1cnNp dmUuYyBiL21lcmdlLXJlY3Vyc2l2ZS5jCmluZGV4IGJhNWIwMjQuLjViN2VkNTEgMTAwNjQ0Ci0t LSBhL21lcmdlLXJlY3Vyc2l2ZS5jCisrKyBiL21lcmdlLXJlY3Vyc2l2ZS5jCkBAIC0xOSw2ICsx OSwxMyBAQCAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJncmFwaC5oIgogI2lu Y2x1ZGUgInBhdGgtbGlzdC5oIgogCisjZGVmaW5lIERFQlVHCisjaWZkZWYgREVCVUcKKyNkZWZp bmUgZGVidWcoYXJncywgLi4uKSBmcHJpbnRmKHN0ZGVyciwgYXJncywgIyMgX19WQV9BUkdTX18p CisjZWxzZQorI2RlZmluZSBkZWJ1ZyhhcmdzLCAuLi4pCisjZW5kaWYKKwogI2RlZmluZSBmb3Jf ZWFjaF9jb21taXQocCxsaXN0KSBmb3IgKCBwID0gKGxpc3QpOyBwOyBwID0gcC0+bmV4dCApCiAK IHN0cnVjdCBtZXJnZV9yZXN1bHQKQEAgLTM0NSw5ICszNTIsMTQgQEAgaW50IGdldEZpbGVzQW5k RGlycyhzdHJ1Y3QgdHJlZSAqdHJlZSwKIAlwYXRoX2xpc3RfY2xlYXIoZGlycywgMSk7CiAJZGF0 YS5maWxlcyA9IGZpbGVzOwogCWRhdGEuZGlycyA9IGRpcnM7Ci0JaWYgKCByZWFkX3RyZWVfcnQo dHJlZSwgIiIsIDAsIHNhdmVfZmlsZXNfZGlycywgJmRhdGEpICE9IDAgKQorCWRlYnVnKCJnZXRG aWxlc0FuZERpcnMgLi4uXG4iKTsKKwlpZiAoIHJlYWRfdHJlZV9ydCh0cmVlLCAiIiwgMCwgc2F2 ZV9maWxlc19kaXJzLCAmZGF0YSkgIT0gMCApIHsKKwkJZGVidWcoIlx0Z2V0RmlsZXNBbmREaXJz IGRvbmUgKDApXG4iKTsKIAkJcmV0dXJuIDA7Ci0JcmV0dXJuIHBhdGhfbGlzdF9jb3VudChmaWxl cykgKyBwYXRoX2xpc3RfY291bnQoZGlycyk7CisJfQorCWludCBuID0gcGF0aF9saXN0X2NvdW50 KGZpbGVzKSArIHBhdGhfbGlzdF9jb3VudChkaXJzKTsKKwlkZWJ1ZygiXHRnZXRGaWxlc0FuZERp cnMgZG9uZSAoJWQpXG4iLCBuKTsKKwlyZXR1cm4gbjsKIH0KIAogc3RydWN0IGluZGV4X2VudHJ5 ICppbmRleF9lbnRyeV9maW5kKHN0cnVjdCBpbmRleF9lbnRyeSAqZW50cywgY29uc3QgY2hhciAq cGF0aCkKQEAgLTQ3OCw2ICs0OTAsNyBAQCBzdHJ1Y3QgaW5kZXhfZW50cnkgKnVubWVyZ2VkQ2Fj aGVFbnRyaWVzCiAJRklMRSAqZnAgPSBwb3BlbigiZ2l0LWxzLWZpbGVzIC16IC0tdW5tZXJnZWQi LCAiciIpOwogCWlmICggIWZwICkKIAkJcmV0dXJuIE5VTEw7CisJZGVidWcoInVubWVyZ2VkQ2Fj aGVFbnRyaWVzLi4uXG4iKTsKIAlpbnQgY2g7CiAJd2hpbGUgKCAhZmVvZihmcCkgKSB7CiAJCXVu c2lnbmVkIG1vZGU7CkBAIC01MjQsNiArNTM3LDcgQEAgc3RydWN0IGluZGV4X2VudHJ5ICp1bm1l cmdlZENhY2hlRW50cmllcwogCQl3aGlsZSAoIChjaCA9IGZnZXRjKGZwKSkgIT0gRU9GICYmIGNo ICk7CiAJfQogCXBjbG9zZShmcCk7CisJZGVidWcoIlx0dW5tZXJnZWRDYWNoZUVudHJpZXMgZG9u ZVxuIik7CiAJcmV0dXJuIHVubWVyZ2VkOwogfQogCkBAIC01OTUsNiArNjA5LDcgQEAgc3RydWN0 IHJlbmFtZV9lbnRyeSAqZ2V0UmVuYW1lcyhzdHJ1Y3QgdAogCQkJCXN0cnVjdCB0cmVlICpiVHJl ZSwKIAkJCQlzdHJ1Y3QgaW5kZXhfZW50cnkgKiplbnRyaWVzKQogeworCWRlYnVnKCJnZXRSZW5h bWVzIC4uLlxuIik7CiAJc3RydWN0IHJlbmFtZV9lbnRyeSAqcmVuYW1lcyA9IE5VTEw7CiAJc3Ry dWN0IHJlbmFtZV9lbnRyeSAqKnJwdHIgPSAmcmVuYW1lczsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25z IG9wdHM7CkBAIC02MzksNiArNjU0LDcgQEAgc3RydWN0IHJlbmFtZV9lbnRyeSAqZ2V0UmVuYW1l cyhzdHJ1Y3QgdAogCX0KIAlvcHRzLm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9OT19PVVRQ VVQ7CiAJZGlmZl9mbHVzaCgmb3B0cyk7CisJZGVidWcoIlx0Z2V0UmVuYW1lcyBkb25lXG4iKTsK IAlyZXR1cm4gcmVuYW1lczsKIH0KIApAQCAtOTkxLDYgKzEwMDcsNyBAQCBpbnQgcHJvY2Vzc1Jl bmFtZXMoc3RydWN0IHJlbmFtZV9lbnRyeSAqCiAJCSAgIGNvbnN0IGNoYXIgKmJyYW5jaE5hbWVB LAogCQkgICBjb25zdCBjaGFyICpicmFuY2hOYW1lQikKIHsKKwlkZWJ1ZygicHJvY2Vzc1JlbmFt ZXMuLi5cbiIpOwogCWludCBjbGVhbk1lcmdlID0gMTsKIAogCXN0cnVjdCBwYXRoX2xpc3Qgc3Jj TmFtZXMgPSB7TlVMTCwgMCwgMH07CkBAIC0xMjA3LDYgKzEyMjQsNyBAQCBpbnQgcHJvY2Vzc1Jl bmFtZXMoc3RydWN0IHJlbmFtZV9lbnRyeSAqCiAJaWYgKHBjbG9zZShmcCkpIHsKIAkJZGllKCJn aXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyBmYWlsZWQiKTsKIAl9CisJZGVidWcoIlx0cHJv Y2Vzc1JlbmFtZXMgZG9uZVxuIik7CiAJcmV0dXJuIGNsZWFuTWVyZ2U7CiB9CiAKQEAgLTEyMjMs NyArMTI0MSw4IEBAIHN0YXRpYyBpbnQgc2hhX2VxKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmEKIH0K IAogLyogUGVyIGVudHJ5IG1lcmdlIGZ1bmN0aW9uICovCi1pbnQgcHJvY2Vzc0VudHJ5KHN0cnVj dCBpbmRleF9lbnRyeSAqZW50cnksCitpbnQgcHJvY2Vzc0VudHJ5KEZJTEUgKmZwLAorCQkgc3Ry dWN0IGluZGV4X2VudHJ5ICplbnRyeSwKIAkJIGNvbnN0IGNoYXIgKmJyYW5jaDFOYW1lLAogCQkg Y29uc3QgY2hhciAqYnJhbmNoMk5hbWUpCiB7CkBAIC0xMjM5LDcgKzEyNTgsNiBAQCBpbnQgcHJv Y2Vzc0VudHJ5KHN0cnVjdCBpbmRleF9lbnRyeSAqZW50CiAJdW5zaWduZWQgb01vZGUgPSBlbnRy eS0+c3RhZ2VzWzFdLm1vZGU7CiAJdW5zaWduZWQgYU1vZGUgPSBlbnRyeS0+c3RhZ2VzWzJdLm1v ZGU7CiAJdW5zaWduZWQgYk1vZGUgPSBlbnRyeS0+c3RhZ2VzWzNdLm1vZGU7Ci0JRklMRSAqZnAg PSBnaXRfdXBkYXRlX2luZGV4X3BpcGUoKTsKIAogCWlmICggb1NoYSAmJiAoIWFTaGEgfHwgIWJT aGEpICkgewogCQkvKiBDYXNlIEE6IERlbGV0ZWQgaW4gb25lICovCkBAIC0xMzUzLDggKzEzNzEs NiBAQCBpbnQgcHJvY2Vzc0VudHJ5KHN0cnVjdCBpbmRleF9lbnRyeSAqZW50CiAJfSBlbHNlCiAJ CWRpZSgiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iKTsKIAotCWlmIChw Y2xvc2UoZnApKQotCQlkaWUoInVwZGF0aW5nIGVudHJ5IGZhaWxlZCBpbiBnaXQgdXBkYXRlLWlu ZGV4Iik7CiAJcmV0dXJuIGNsZWFuTWVyZ2U7CiB9CiAKQEAgLTEzNzMsNiArMTM4OSw3IEBAIHN0 cnVjdCBtZXJnZV90cmVlX3Jlc3VsdCBtZXJnZV90cmVlcyhzdHIKIAkJcmV0dXJuIHJlc3VsdDsK IAl9CiAKKwlkZWJ1ZygibWVyZ2VfdHJlZXMgLi4uXG4iKTsKIAljb2RlID0gZ2l0X21lcmdlX3Ry ZWVzKGluZGV4X29ubHkgPyAiLWkiOiAiLXUiLCBjb21tb24sIGhlYWQsIG1lcmdlKTsKIAogCWlm ICggY29kZSAhPSAwICkKQEAgLTEzOTcsMTcgKzE0MTQsMjIgQEAgc3RydWN0IG1lcmdlX3RyZWVf cmVzdWx0IG1lcmdlX3RyZWVzKHN0cgogCQlyZW5hbWVzTWVyZ2UgPSBnZXRSZW5hbWVzKG1lcmdl LCBjb21tb24sIGhlYWQsIG1lcmdlLCAmZW50cmllcyk7CiAJCXJlc3VsdC5jbGVhbiA9IHByb2Nl c3NSZW5hbWVzKHJlbmFtZXNIZWFkLCByZW5hbWVzTWVyZ2UsCiAJCQkJCSAgICAgIGJyYW5jaDFO YW1lLCBicmFuY2gyTmFtZSk7CisJCWRlYnVnKCJcdHByb2Nlc3NpbmcgZW50cmllcy4uLlxuIik7 CisJCUZJTEUgKmZwID0gZ2l0X3VwZGF0ZV9pbmRleF9waXBlKCk7CiAJCXN0cnVjdCBpbmRleF9l bnRyeSAqZTsKIAkJZm9yICggZSA9IGVudHJpZXM7IGU7IGUgPSBlLT5uZXh0ICkgewogCQkJaWYg KCBlLT5wcm9jZXNzZWQgKQogCQkJCWNvbnRpbnVlOwotCQkJaWYgKCAhcHJvY2Vzc0VudHJ5KGUs IGJyYW5jaDFOYW1lLCBicmFuY2gyTmFtZSkgKQorCQkJaWYgKCAhcHJvY2Vzc0VudHJ5KGZwLCBl LCBicmFuY2gxTmFtZSwgYnJhbmNoMk5hbWUpICkKIAkJCQlyZXN1bHQuY2xlYW4gPSAwOwotCQkJ aWYgKCByZXN1bHQuY2xlYW4gfHwgaW5kZXhfb25seSApCi0JCQkJcmVzdWx0LnRyZWUgPSBnaXRf d3JpdGVfdHJlZSgpOwotCQkJZWxzZQotCQkJCXJlc3VsdC50cmVlID0gTlVMTDsKIAkJfQorCQlp ZiAocGNsb3NlKGZwKSkKKwkJCWRpZSgidXBkYXRpbmcgZW50cnkgZmFpbGVkIGluIGdpdCB1cGRh dGUtaW5kZXgiKTsKKwkJaWYgKCByZXN1bHQuY2xlYW4gfHwgaW5kZXhfb25seSApCisJCQlyZXN1 bHQudHJlZSA9IGdpdF93cml0ZV90cmVlKCk7CisJCWVsc2UKKwkJCXJlc3VsdC50cmVlID0gTlVM TDsKKwkJZGVidWcoIlx0XHRwcm9jZXNzaW5nIGVudHJpZXMgZG9uZVxuIik7CiAJCWZyZWVfcmVu YW1lX2VudHJpZXMoJnJlbmFtZXNNZXJnZSk7CiAJCWZyZWVfcmVuYW1lX2VudHJpZXMoJnJlbmFt ZXNIZWFkKTsKIAkJZnJlZV9pbmRleF9lbnRyaWVzKCZlbnRyaWVzKTsKQEAgLTE0MTksNiArMTQ0 MSw3IEBAIHN0cnVjdCBtZXJnZV90cmVlX3Jlc3VsdCBtZXJnZV90cmVlcyhzdHIKIAkJICAgICAg IHNoYTFfdG9faGV4KHJlc3VsdC50cmVlLT5vYmplY3Quc2hhMSkpOwogCX0KIAorCWRlYnVnKCJc dG1lcmdlX3RyZWVzIGRvbmVcbiIpOwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE1NTgsNyAr MTU4MSw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXN0cnVjdCBub2Rl X2xpc3QgKmNvbW1pdHMgPSBOVUxMOwogCQlub2RlX2xpc3RfaW5zZXJ0KGgxLCAmY29tbWl0cyk7 CiAJCW5vZGVfbGlzdF9pbnNlcnQoaDIsICZjb21taXRzLT5uZXh0KTsKKwkJZGVidWcoImJ1aWxk aW5nIGdyYXBoLi4uXG4iKTsKIAkJc3RydWN0IGdyYXBoICpncmFwaCA9IGdyYXBoX2J1aWxkKGNv bW1pdHMpOworCQlkZWJ1ZygiXHRidWlsZGluZyBncmFwaC4uLlxuIik7CiAJCXJlc3VsdCA9IG1l cmdlKGgxLCBoMiwgYnJhbmNoMSwgYnJhbmNoMiwgZ3JhcGgsIDAsIE5VTEwpOwogCX0KIAlyZXR1 cm4gcmVzdWx0LmNsZWFuID8gMDogMTsKLS0gCjEuNC4xLnJjMS5nOGIwOS1kaXJ0eQoK ------=_Part_29254_10321502.1151487263481--