From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by sourceware.org (Postfix) with ESMTPS id 2E70C385801C for ; Wed, 10 Aug 2022 07:17:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2E70C385801C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E2BC7375A6; Wed, 10 Aug 2022 07:17:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1660115830; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7/bIurwSuo1aPU6w4//mnG1+vH2Wgk0yAq9Jy6idWHA=; b=PwYaLxO4r12L9NnlcnAfayCy1Kk4spua4FrXoBoMszLB0Si1RsqRqpFnXzT4D2NvkkGXRj 2A1nlQ0dPz0mSYXUAFP7NTt47iAt7FWtF6yihEAJ16gBYbTCVjm8RS33wsmDiNJ+VRBF8o T3EAzYBJ4qC4+I0GCA7M8ypj9kSTsDI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1660115830; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7/bIurwSuo1aPU6w4//mnG1+vH2Wgk0yAq9Jy6idWHA=; b=LQPynl1ITCo6uB1mWwxFIqaNacQubO3u3+ZvLPU2BpVx89wKv7aC7TPeDgLwEavPMgTDw+ MB99q7oSZx7eCqDw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id CEFC913AB3; Wed, 10 Aug 2022 07:17:10 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id hutrMXZb82JRXQAAMHmgww (envelope-from ); Wed, 10 Aug 2022 07:17:10 +0000 Content-Type: multipart/mixed; boundary="------------kMES3S0V9nFwqnnSiuZEHW3S" Message-ID: <82e413fb-d592-3885-9d93-28c717921523@suse.cz> Date: Wed, 10 Aug 2022 09:17:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.1.0 Subject: Re: [PATCH 1/3] Factor out jobserver_active_p. To: Richard Biener Cc: GCC Patches References: <7b34d4a1-4f34-cffb-8b5f-eb3424ca1049@suse.cz> Content-Language: en-US From: =?UTF-8?Q?Martin_Li=c5=a1ka?= In-Reply-To: X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Aug 2022 07:17:14 -0000 This is a multi-part message in MIME format. --------------kMES3S0V9nFwqnnSiuZEHW3S Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 8/10/22 08:56, Richard Biener wrote: > C++ standard library includes have to go through system.h (#define > INCLUDE_STRING). Oh, yeah. That means I need to rely on the flat header files :/ > > Does the API really have to use std::string? I would like to. My main motivation is std::string::rfind function that has no C equivalent (would be rstrstr). Martin --------------kMES3S0V9nFwqnnSiuZEHW3S Content-Type: text/x-patch; charset=UTF-8; name="0001-Factor-out-jobserver_active_p.patch" Content-Disposition: attachment; filename="0001-Factor-out-jobserver_active_p.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZTFkODY2ZTliZjMwMDVjOGE4YjFhZmE5ZGYxYmRmODA3YjgzOTRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gTGlza2EgPG1saXNrYUBzdXNlLmN6PgpE YXRlOiBUdWUsIDkgQXVnIDIwMjIgMTM6NTk6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEv M10gRmFjdG9yIG91dCBqb2JzZXJ2ZXJfYWN0aXZlX3AuCgpnY2MvQ2hhbmdlTG9nOgoKCSog Z2NjLmNjIChkcml2ZXI6OmRldGVjdF9qb2JzZXJ2ZXIpOiBSZW1vdmUgYW5kIG1vdmUgdG8K CWpvYnNlcnZlci5oLgoJKiBsdG8td3JhcHBlci5jYyAoam9ic2VydmVyX2FjdGl2ZV9wKTog TGlrZXdpc2UuCgkocnVuX2djYyk6IExpa2V3aXNlLgoJKiBqb2JzZXJ2ZXIuaDogTmV3IGZp bGUuCi0tLQogZ2NjL2djYy5jYyAgICAgICAgIHwgMzcgKysrLS0tLS0tLS0tLS0tLS0tLS0t CiBnY2Mvam9ic2VydmVyLmggICAgfCA4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBnY2MvbHRvLXdyYXBwZXIuY2MgfCA0NCArKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgNjcg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2pvYnNlcnZlci5oCgpkaWZm IC0tZ2l0IGEvZ2NjL2djYy5jYyBiL2djYy9nY2MuY2MKaW5kZXggNWNiYjM4NTYwYjIuLmNh NzBkYmQzYTZkIDEwMDY0NAotLS0gYS9nY2MvZ2NjLmNjCisrKyBiL2djYy9nY2MuY2MKQEAg LTI3LDYgKzI3LDcgQEAgQ0MgcmVjb2duaXplcyBob3cgdG8gY29tcGlsZSBlYWNoIGlucHV0 IGZpbGUgYnkgc3VmZml4ZXMgaW4gdGhlIGZpbGUgbmFtZXMuCiBPbmNlIGl0IGtub3dzIHdo aWNoIGtpbmQgb2YgY29tcGlsYXRpb24gdG8gcGVyZm9ybSwgdGhlIHByb2NlZHVyZSBmb3IK IGNvbXBpbGF0aW9uIGlzIHNwZWNpZmllZCBieSBhIHN0cmluZyBjYWxsZWQgYSAic3BlYyIu ICAqLwogCisjZGVmaW5lIElOQ0xVREVfU1RSSU5HCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj aW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiY29yZXR5cGVzLmgiCkBAIC00Myw2ICs0 NCw3IEBAIGNvbXBpbGF0aW9uIGlzIHNwZWNpZmllZCBieSBhIHN0cmluZyBjYWxsZWQgYSAi c3BlYyIuICAqLwogI2luY2x1ZGUgIm9wdHMuaCIKICNpbmNsdWRlICJmaWxlbmFtZXMuaCIK ICNpbmNsdWRlICJzcGVsbGNoZWNrLmgiCisjaW5jbHVkZSAiam9ic2VydmVyLmgiCiAKIAwK IApAQCAtOTE3OCwzOCArOTE4MCw5IEBAIGRyaXZlcjo6ZmluYWxfYWN0aW9ucyAoKSBjb25z dAogdm9pZAogZHJpdmVyOjpkZXRlY3Rfam9ic2VydmVyICgpIGNvbnN0CiB7Ci0gIC8qIERl dGVjdCBqb2JzZXJ2ZXIgYW5kIGRyb3AgaXQgaWYgaXQncyBub3Qgd29ya2luZy4gICovCi0g IGNvbnN0IGNoYXIgKm1ha2VmbGFncyA9IGVudi5nZXQgKCJNQUtFRkxBR1MiKTsKLSAgaWYg KG1ha2VmbGFncyAhPSBOVUxMKQotICAgIHsKLSAgICAgIGNvbnN0IGNoYXIgKm5lZWRsZSA9 ICItLWpvYnNlcnZlci1hdXRoPSI7Ci0gICAgICBjb25zdCBjaGFyICpuID0gc3Ryc3RyICht YWtlZmxhZ3MsIG5lZWRsZSk7Ci0gICAgICBpZiAobiAhPSBOVUxMKQotCXsKLQkgIGludCBy ZmQgPSAtMTsKLQkgIGludCB3ZmQgPSAtMTsKLQotCSAgYm9vbCBqb2JzZXJ2ZXIKLQkgICAg PSAoc3NjYW5mIChuICsgc3RybGVuIChuZWVkbGUpLCAiJWQsJWQiLCAmcmZkLCAmd2ZkKSA9 PSAyCi0JICAgICAgICYmIHJmZCA+IDAKLQkgICAgICAgJiYgd2ZkID4gMAotCSAgICAgICAm JiBpc192YWxpZF9mZCAocmZkKQotCSAgICAgICAmJiBpc192YWxpZF9mZCAod2ZkKSk7Ci0K LQkgIC8qIERyb3AgdGhlIGpvYnNlcnZlciBpZiBpdCdzIG5vdCB3b3JraW5nIG5vdy4gICov Ci0JICBpZiAoIWpvYnNlcnZlcikKLQkgICAgewotCSAgICAgIHVuc2lnbmVkIG9mZnNldCA9 IG4gLSBtYWtlZmxhZ3M7Ci0JICAgICAgY2hhciAqZHVwID0geHN0cmR1cCAobWFrZWZsYWdz KTsKLQkgICAgICBkdXBbb2Zmc2V0XSA9ICdcMCc7Ci0KLQkgICAgICBjb25zdCBjaGFyICpz cGFjZSA9IHN0cmNociAobWFrZWZsYWdzICsgb2Zmc2V0LCAnICcpOwotCSAgICAgIGlmIChz cGFjZSAhPSBOVUxMKQotCQlzdHJjcHkgKGR1cCArIG9mZnNldCwgc3BhY2UpOwotCSAgICAg IHhwdXRlbnYgKGNvbmNhdCAoIk1BS0VGTEFHUz0iLCBkdXAsIE5VTEwpKTsKLQkgICAgfQot CX0KLSAgICB9CisgIGpvYnNlcnZlcl9pbmZvIGppbmZvOworICBpZiAoIWppbmZvLmlzX2Fj dGl2ZSAmJiAhamluZm8uc2tpcHBlZF9tYWtlZmxhZ3MuZW1wdHkgKCkpCisgICAgeHB1dGVu diAoamluZm8uc2tpcHBlZF9tYWtlZmxhZ3MuY19zdHIgKCkpOwogfQogCiAvKiBEZXRlcm1p bmUgd2hhdCB0aGUgZXhpdCBjb2RlIG9mIHRoZSBkcml2ZXIgc2hvdWxkIGJlLiAgKi8KZGlm ZiAtLWdpdCBhL2djYy9qb2JzZXJ2ZXIuaCBiL2djYy9qb2JzZXJ2ZXIuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDU3OTMwZmY3YWYKLS0tIC9kZXYvbnVs bAorKysgYi9nY2Mvam9ic2VydmVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyogR05VIG1ha2Un cyBqb2JzZXJ2ZXIgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorICAgQ29weXJpZ2h0IChDKSAy MDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFy dCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIKK3ZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKK1dBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCitGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKK2ZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitTZWUgZGJnY250LmRlZiBmb3IgdXNhZ2UgaW5m b3JtYXRpb24uICAqLworCisjaWZuZGVmIEdDQ19KT0JTRVJWRVJfSAorI2RlZmluZSBHQ0Nf Sk9CU0VSVkVSX0gKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RydWN0IGpvYnNlcnZl cl9pbmZvCit7CisgIC8qIERlZmF1bHQgY29uc3RydWN0b3IuICAqLworICBqb2JzZXJ2ZXJf aW5mbyAoKTsKKworICAvKiBFcnJvciBtZXNzYWdlIGlmIHRoZXJlIGlzIGEgcHJvYmxlbS4g ICovCisgIHN0cmluZyBlcnJvcl9tc2cgPSAiIjsKKyAgLyogU2tpcHBlZCBNQUtFRkxBR1Mg d2hlcmUgLS1qb2JzZXJ2ZXItYXV0aCBpcyBza2lwcGVkLiAgKi8KKyAgc3RyaW5nIHNraXBw ZWRfbWFrZWZsYWdzID0gIiI7CisgIC8qIEZpbGUgZGVzY3JpcHRvciBmb3IgcmVhZGluZyB1 c2VkIGZvciBqb2JzZXJ2ZXIgY29tbXVuaWNhdGlvbi4gICovCisgIGludCByZmQgPSAtMTsK KyAgLyogRmlsZSBkZXNjcmlwdG9yIGZvciB3cml0aW5nIHVzZWQgZm9yIGpvYnNlcnZlciBj b21tdW5pY2F0aW9uLiAgKi8KKyAgaW50IHdmZCA9IC0xOworICAvKiBSZXR1cm4gdHJ1ZSBp ZiBqb2JzZXJ2ZXIgaXMgYWN0aXZlLiAgKi8KKyAgYm9vbCBpc19hY3RpdmUgPSBmYWxzZTsK K307CisKK2pvYnNlcnZlcl9pbmZvOjpqb2JzZXJ2ZXJfaW5mbyAoKQoreworICAvKiBEZXRl Y3Qgam9ic2VydmVyIGFuZCBkcm9wIGl0IGlmIGl0J3Mgbm90IHdvcmtpbmcuICAqLworICBz dHJpbmcganNfbmVlZGxlID0gIi0tam9ic2VydmVyLWF1dGg9IjsKKworICBjb25zdCBjaGFy ICplbnZ2YWwgPSBnZXRlbnYgKCJNQUtFRkxBR1MiKTsKKyAgaWYgKGVudnZhbCAhPSBOVUxM KQorICAgIHsKKyAgICAgIHN0cmluZyBtYWtlZmxhZ3MgPSBlbnZ2YWw7CisgICAgICBzaXpl X3QgbiA9IG1ha2VmbGFncy5yZmluZCAoanNfbmVlZGxlKTsKKyAgICAgIGlmIChuICE9IHN0 cmluZzo6bnBvcykKKwl7CisJICBpZiAoc3NjYW5mIChtYWtlZmxhZ3MuY19zdHIgKCkgKyBu ICsganNfbmVlZGxlLnNpemUgKCksCisJCSAgICAgICIlZCwlZCIsICZyZmQsICZ3ZmQpID09 IDIKKwkgICAgICAmJiByZmQgPiAwCisJICAgICAgJiYgd2ZkID4gMAorCSAgICAgICYmIGlz X3ZhbGlkX2ZkIChyZmQpCisJICAgICAgJiYgaXNfdmFsaWRfZmQgKHdmZCkpCisJICAgIGlz X2FjdGl2ZSA9IHRydWU7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBzdHJpbmcgZHVwID0g bWFrZWZsYWdzLnN1YnN0ciAoMCwgbik7CisJICAgICAgc2l6ZV90IHBvcyA9IG1ha2VmbGFn cy5maW5kICgnICcsIG4pOworCSAgICAgIGlmIChwb3MgIT0gc3RyaW5nOjpucG9zKQorCQlk dXAgKz0gbWFrZWZsYWdzLnN1YnN0ciAocG9zKTsKKwkgICAgICBza2lwcGVkX21ha2VmbGFn cyA9ICJNQUtFRkxBR1M9IiArIGR1cDsKKwkgICAgICBlcnJvcl9tc2cKKwkJPSAiY2Fubm90 IGFjY2VzcyAlPCIgKyBqc19uZWVkbGUgKyAiJT4gZmlsZSBkZXNjcmlwdG9ycyI7CisJICAg IH0KKwl9CisgICAgICBlcnJvcl9tc2cgPSAiJTwiICsganNfbmVlZGxlICsgIiU+IGlzIG5v dCBwcmVzZW50IGluICU8TUFLRUZMQUdTJT4iOworICAgIH0KKyAgZWxzZQorICAgIGVycm9y X21zZyA9ICIlPE1BS0VGTEFHUyU+IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuc2V0IjsK KworICBpZiAoIWVycm9yX21zZy5lbXB0eSAoKSkKKyAgICBlcnJvcl9tc2cgPSAiam9ic2Vy dmVyIGlzIG5vdCBhdmFpbGFibGU6ICIgKyBlcnJvcl9tc2c7Cit9CisKKyNlbmRpZiAvKiBH Q0NfSk9CU0VSVkVSX0ggKi8KZGlmZiAtLWdpdCBhL2djYy9sdG8td3JhcHBlci5jYyBiL2dj Yy9sdG8td3JhcHBlci5jYwppbmRleCA3OTVhYjc0NTU1Yy4uZTJkZmEzMGMyOTAgMTAwNjQ0 Ci0tLSBhL2djYy9sdG8td3JhcHBlci5jYworKysgYi9nY2MvbHRvLXdyYXBwZXIuY2MKQEAg LTM3LDYgKzM3LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUKICAgIC4vY2NDSnVYR3YubHRvLmx0cmFucy5vCiAqLwogCisjZGVmaW5l IElOQ0xVREVfU1RSSU5HCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAic3lzdGVt LmgiCiAjaW5jbHVkZSAiY29yZXR5cGVzLmgiCkBAIC00OSw2ICs1MCw4IEBAIGFsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAi bHRvLXNlY3Rpb24tbmFtZXMuaCIKICNpbmNsdWRlICJjb2xsZWN0LXV0aWxzLmgiCiAjaW5j bHVkZSAib3B0cy1kaWFnbm9zdGljLmgiCisjaW5jbHVkZSAib3B0LXN1Z2dlc3Rpb25zLmgi CisjaW5jbHVkZSAiam9ic2VydmVyLmgiCiAKIC8qIEVudmlyb25tZW50IHZhcmlhYmxlLCB1 c2VkIGZvciBwYXNzaW5nIHRoZSBuYW1lcyBvZiBvZmZsb2FkIHRhcmdldHMgZnJvbSBHQ0MK ICAgIGRyaXZlciB0byBsdG8td3JhcHBlci4gICovCkBAIC0xMzM2LDM1ICsxMzM5LDYgQEAg aW5pdF9udW1fdGhyZWFkcyAodm9pZCkKICNlbmRpZgogfQogCi0vKiBUZXN0IGFuZCByZXR1 cm4gcmVhc29uIHdoeSBhIGpvYnNlcnZlciBjYW5ub3QgYmUgZGV0ZWN0ZWQuICAqLwotCi1z dGF0aWMgY29uc3QgY2hhciAqCi1qb2JzZXJ2ZXJfYWN0aXZlX3AgKHZvaWQpCi17Ci0gICNk ZWZpbmUgSlNfUFJFRklYICJqb2JzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZTogIgotICAjZGVm aW5lIEpTX05FRURMRSAiLS1qb2JzZXJ2ZXItYXV0aD0iCi0KLSAgY29uc3QgY2hhciAqbWFr ZWZsYWdzID0gZ2V0ZW52ICgiTUFLRUZMQUdTIik7Ci0gIGlmIChtYWtlZmxhZ3MgPT0gTlVM TCkKLSAgICByZXR1cm4gSlNfUFJFRklYICIlPE1BS0VGTEFHUyU+IGVudmlyb25tZW50IHZh cmlhYmxlIGlzIHVuc2V0IjsKLQotICBjb25zdCBjaGFyICpuID0gc3Ryc3RyIChtYWtlZmxh Z3MsIEpTX05FRURMRSk7Ci0gIGlmIChuID09IE5VTEwpCi0gICAgcmV0dXJuIEpTX1BSRUZJ WCAiJTwiIEpTX05FRURMRSAiJT4gaXMgbm90IHByZXNlbnQgaW4gJTxNQUtFRkxBR1MlPiI7 Ci0KLSAgaW50IHJmZCA9IC0xOwotICBpbnQgd2ZkID0gLTE7Ci0KLSAgaWYgKHNzY2FuZiAo biArIHN0cmxlbiAoSlNfTkVFRExFKSwgIiVkLCVkIiwgJnJmZCwgJndmZCkgPT0gMgotICAg ICAgJiYgcmZkID4gMAotICAgICAgJiYgd2ZkID4gMAotICAgICAgJiYgaXNfdmFsaWRfZmQg KHJmZCkKLSAgICAgICYmIGlzX3ZhbGlkX2ZkICh3ZmQpKQotICAgIHJldHVybiBOVUxMOwot ICBlbHNlCi0gICAgcmV0dXJuIEpTX1BSRUZJWCAiY2Fubm90IGFjY2VzcyAlPCIgSlNfTkVF RExFICIlPiBmaWxlIGRlc2NyaXB0b3JzIjsKLX0KLQogLyogUHJpbnQgbGluayB0byAtZmx0 byBkb2N1bWVudGF0aW9uIHdpdGggYSBoaW50IG1lc3NhZ2UuICAqLwogCiB2b2lkCkBAIC0x NDIyLDcgKzEzOTYsNiBAQCBydW5fZ2NjICh1bnNpZ25lZCBhcmdjLCBjaGFyICphcmd2W10p CiAgIGJvb2wgam9ic2VydmVyX3JlcXVlc3RlZCA9IGZhbHNlOwogICBpbnQgYXV0b19wYXJh bGxlbCA9IDA7CiAgIGJvb2wgbm9fcGFydGl0aW9uID0gZmFsc2U7Ci0gIGNvbnN0IGNoYXIg KmpvYnNlcnZlcl9lcnJvciA9IE5VTEw7CiAgIGJvb2wgZmRlY29kZWRfb3B0aW9uc19maXJz dCA9IHRydWU7CiAgIHZlYzxjbF9kZWNvZGVkX29wdGlvbj4gZmRlY29kZWRfb3B0aW9uczsK ICAgZmRlY29kZWRfb3B0aW9ucy5jcmVhdGUgKDE2KTsKQEAgLTE2NTMsMTQgKzE2MjYsMTQg QEAgcnVuX2djYyAodW5zaWduZWQgYXJnYywgY2hhciAqYXJndltdKQogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIGpvYnNlcnZlcl9lcnJvciA9IGpvYnNlcnZlcl9hY3RpdmVfcCAo KTsKLSAgICAgIGlmIChqb2JzZXJ2ZXIgJiYgam9ic2VydmVyX2Vycm9yICE9IE5VTEwpCisg ICAgICBqb2JzZXJ2ZXJfaW5mbyBqaW5mbzsKKyAgICAgIGlmIChqb2JzZXJ2ZXIgJiYgIWpp bmZvLmlzX2FjdGl2ZSkKIAl7CiAJICAvKiBGYWxsIGJhY2sgdG8gYXV0byBwYXJhbGxlbGlz bS4gICovCiAJICBqb2JzZXJ2ZXIgPSAwOwogCSAgYXV0b19wYXJhbGxlbCA9IDE7CiAJfQot ICAgICAgZWxzZSBpZiAoIWpvYnNlcnZlciAmJiBqb2JzZXJ2ZXJfZXJyb3IgPT0gTlVMTCkK KyAgICAgIGVsc2UgaWYgKCFqb2JzZXJ2ZXIgJiYgamluZm8uaXNfYWN0aXZlKQogCXsKIAkg IHBhcmFsbGVsID0gMTsKIAkgIGpvYnNlcnZlciA9IDE7CkBAIC0xOTcxLDkgKzE5NDQsMTAg QEAgY29udDoKIAogICAgICAgaWYgKG5yID4gMSkKIAl7Ci0JICBpZiAoam9ic2VydmVyX3Jl cXVlc3RlZCAmJiBqb2JzZXJ2ZXJfZXJyb3IgIT0gTlVMTCkKKwkgIGpvYnNlcnZlcl9pbmZv IGppbmZvOworCSAgaWYgKGpvYnNlcnZlcl9yZXF1ZXN0ZWQgJiYgIWppbmZvLmlzX2FjdGl2 ZSkKIAkgICAgewotCSAgICAgIHdhcm5pbmcgKDAsIGpvYnNlcnZlcl9lcnJvcik7CisJICAg ICAgd2FybmluZyAoMCwgamluZm8uZXJyb3JfbXNnLmNfc3RyICgpKTsKIAkgICAgICBwcmlu dF9sdG9fZG9jc19saW5rICgpOwogCSAgICB9CiAJICBlbHNlIGlmIChwYXJhbGxlbCA9PSAw KQotLSAKMi4zNy4xCgo= --------------kMES3S0V9nFwqnnSiuZEHW3S--