From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-we0-x22e.google.com (mail-we0-x22e.google.com [IPv6:2a00:1450:400c:c03::22e]) by hurricane.the-brannons.com (Postfix) with ESMTPS id B723778AD0 for ; Fri, 8 Aug 2014 04:09:52 -0700 (PDT) Received: by mail-we0-f174.google.com with SMTP id x48so5535099wes.19 for ; Fri, 08 Aug 2014 04:08:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:mime-version:content-type; bh=vG9narKY0cAkBhbHIGjlDwzsayaPpjfMbs8jcXgeF7k=; b=M+WkSXOTmvUrpZYbg2iT0bwaxjqPPwl1ox+KeQuW8wiwZEIjWITeH2qZXhrlUzHC/T QQuf/3JWfiNTHSup+FaFNvqXeOSK781izCyj5g6GF8Y+RGa6n+ZtYR0frvo3FBEEXV36 BO0oRncr9KSCYANTaAWQE0dwmBuzP1VFZuS2XxO1k8J3o5ZZ8YAvNfUkCz4s6E1gCCe6 88WpiCRLRI3iIkbAtU/GPEBO7AvNUQmaxLDlPYa45WAFI29bMeK7g9z+dQ2a+Hwdd/vs TlLYaDiNTWODuYeS9oAHKW83ASfX1OpzShL8qojnchV7OUHhvE4ohTvD1FdSY6C/I/hU q07Q== X-Received: by 10.194.202.231 with SMTP id kl7mr2043248wjc.134.1407496139697; Fri, 08 Aug 2014 04:08:59 -0700 (PDT) Received: from sigil.Belkin ([109.231.16.247]) by mx.google.com with ESMTPSA id 20sm16588958wjt.42.2014.08.08.04.08.57 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Aug 2014 04:08:58 -0700 (PDT) Date: Fri, 8 Aug 2014 13:08:56 +0200 From: Paul Onyschuk To: Edbrowse-dev@lists.the-brannons.com Message-Id: <20140808130856.463d4a34edfda30765c5ef9f@gmail.com> X-Mailer: Sylpheed 3.4.2 (GTK+ 2.24.23; x86_64-alpine-linux-musl) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Fri__8_Aug_2014_13_08_56_+0200_6ssie+EmGrO7LbX_" Subject: [Edbrowse-dev] [patch] Parenthesize assignments used as a truth value X-BeenThere: edbrowse-dev@lists.the-brannons.com X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Edbrowse Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Aug 2014 11:09:53 -0000 This is a multi-part message in MIME format. --Multipart=_Fri__8_Aug_2014_13_08_56_+0200_6ssie+EmGrO7LbX_ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit This fixes some of the warnings emitted by a compiler, when -Wparentheses flag is used. For readability reasons I limited a scope of the patch to assignments used as a truth value, leaving out warnings over a precedence of logical operators. Example of a code, that the warning is emitted for: if (t = map) I was bit hesitant with sending a patch. How multiple parentheses affect readability of a code for users with screen readers? If this patch has negative impact, I wil understand if it isn't commited. Still diff is work looking alone for possible mistypes of an equality operator. Bellow is diffstat information regarding patch - first number describes inserted lines, second deleted lines, followed by filename. $ git diff --numstat 6 6 src/buffers.c 3 3 src/cookies.c 1 1 src/fetchmail.c 8 8 src/format.c 5 5 src/html.cpp 4 4 src/http.c 1 1 src/jsdom.cpp 2 2 src/jsloc.cpp 1 1 src/main.c 7 7 src/sendmail.c 7 7 src/stringfile.c 4 4 src/url.c -- Paul Onyschuk --Multipart=_Fri__8_Aug_2014_13_08_56_+0200_6ssie+EmGrO7LbX_ Content-Type: application/octet-stream; name="assignment-as-truth.patch" Content-Disposition: attachment; filename="assignment-as-truth.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9idWZmZXJzLmMgYi9zcmMvYnVmZmVycy5jCmluZGV4IDE0M2FkYzMu LmFhNjE3MWUgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXJzLmMKKysrIGIvc3JjL2J1ZmZlcnMuYwpA QCAtNDI5LDcgKzQyOSw3IEBAIHN0YXRpYyB2b2lkIGZyZWVXaW5kb3dMaW5lcyhzdHJ1Y3QgbGlu ZU1hcCAqbWFwKQogCXN0cnVjdCBsaW5lTWFwICp0OwogCWludCBjbnQgPSAwOwogCi0JaWYgKHQg PSBtYXApIHsKKwlpZiAoKHQgPSBtYXApKSB7CiAJCWZvciAoKyt0OyB0LT50ZXh0OyArK3QpIHsK IAkJCWZyZWVMaW5lKHQpOwogCQkJKytjbnQ7CkBAIC0xODE1LDcgKzE4MTUsNyBAQCByZWdleHBD aGVjayhjb25zdCBjaGFyICpsaW5lLCBlYl9ib29sIGlzbGVmdCwgZWJfYm9vbCBlYm11Y2ssCiAJ CX0KIAl9CiAJLyogZWJtdWNrIHRyaWNrcyAqLwotCXdoaWxlIChjID0gKmxpbmUpIHsKKwl3aGls ZSAoKGMgPSAqbGluZSkpIHsKIAkJaWYgKGUgPj0gcmUgKyBNQVhSRSAtIDMpIHsKIAkJCXNldEVy cm9yKE1TR19SZXhwTG9uZyk7CiAJCQlyZXR1cm4gZWJfZmFsc2U7CkBAIC0yMzIxLDcgKzIzMjEs NyBAQCByZXBsYWNlVGV4dChjb25zdCBjaGFyICpsaW5lLCBpbnQgbGVuLCBjb25zdCBjaGFyICpy aHMsCiAKIAkJLyogY29weSByaHMsIHdhdGNoaW5nIGZvciAkbiAqLwogCQl0ID0gcmhzOwotCQl3 aGlsZSAoYyA9ICp0KSB7CisJCXdoaWxlICgoYyA9ICp0KSkgewogCQkJZCA9IHRbMV07CiAJCQlp ZiAoYyA9PSAnXFwnKSB7CiAJCQkJdCArPSAyOwpAQCAtMjQ3OSw3ICsyNDc5LDcgQEAgc3RhdGlj IGludCBzdWJzdGl0dXRlVGV4dChjb25zdCBjaGFyICpsaW5lKQogCQlpZiAoKmxpbmUpIHsJLyog dGhpcmQgZGVsaW1pdGVyICovCiAJCQkrK2xpbmU7CiAJCQlzdWJQcmludCA9IDA7Ci0JCQl3aGls ZSAoYyA9ICpsaW5lKSB7CisJCQl3aGlsZSAoKGMgPSAqbGluZSkpIHsKIAkJCQlpZiAoYyA9PSAn ZycpIHsKIAkJCQkJZ19tb2RlID0gZWJfdHJ1ZTsKIAkJCQkJKytsaW5lOwpAQCAtMzI5NCwxMiAr MzI5NCwxMiBAQCBzdGF0aWMgZWJfYm9vbCBiYWxhbmNlTGluZShjb25zdCBjaGFyICpsaW5lKQog CWludCBsZXZlbCA9IDA7CiAJaW50IGksIGRpcmVjdGlvbiwgZm9yd2FyZCwgYmFja3dhcmQ7CiAK LQlpZiAoYyA9ICpsaW5lKSB7CisJaWYgKChjID0gKmxpbmUpKSB7CiAJCWlmICghc3RyY2hyKGFs bGxpc3QsIGMpIHx8IGxpbmVbMV0pIHsKIAkJCXNldEVycm9yKE1TR19CYWxhbmNlQ2hhciwgYWxs bGlzdCk7CiAJCQlyZXR1cm4gZWJfZmFsc2U7CiAJCX0KLQkJaWYgKHQgPSBzdHJjaHIob3Blbmxp c3QsIGMpKSB7CisJCWlmICgodCA9IHN0cmNocihvcGVubGlzdCwgYykpKSB7CiAJCQlkID0gY2xv c2VsaXN0W3QgLSBvcGVubGlzdF07CiAJCQlkaXJlY3Rpb24gPSAxOwogCQl9IGVsc2UgewpkaWZm IC0tZ2l0IGEvc3JjL2Nvb2tpZXMuYyBiL3NyYy9jb29raWVzLmMKaW5kZXggZWZjNWZmOC4uZGFh ODk0YiAxMDA2NDQKLS0tIGEvc3JjL2Nvb2tpZXMuYworKysgYi9zcmMvY29va2llcy5jCkBAIC0y MTksMTAgKzIxOSwxMCBAQCBlYl9ib29sIHJlY2VpdmVDb29raWUoY29uc3QgY2hhciAqdXJsLCBj b25zdCBjaGFyICpzdHIpCiAKIAljLT5zZXJ2ZXIgPSBjbG9uZVN0cmluZyhzZXJ2ZXIpOwogCi0J aWYgKGRhdGUgPSBleHRyYWN0SGVhZGVyUGFyYW0oc3RyLCAiZXhwaXJlcyIpKSB7CisJaWYgKChk YXRlID0gZXh0cmFjdEhlYWRlclBhcmFtKHN0ciwgImV4cGlyZXMiKSkpIHsKIAkJYy0+ZXhwaXJl cyA9IHBhcnNlSGVhZGVyRGF0ZShkYXRlKTsKIAkJbnpGcmVlKGRhdGUpOwotCX0gZWxzZSBpZiAo ZGF0ZSA9IGV4dHJhY3RIZWFkZXJQYXJhbShzdHIsICJtYXgtYWdlIikpIHsKKwl9IGVsc2UgaWYg KChkYXRlID0gZXh0cmFjdEhlYWRlclBhcmFtKHN0ciwgIm1heC1hZ2UiKSkpIHsKIAkJaW50IG4g PSBzdHJpbmdJc051bShkYXRlKTsKIAkJaWYgKG4gPj0gMCkgewogCQkJdGltZV90IG5vdyA9IHRp bWUoMCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgZWJfYm9vbCByZWNlaXZlQ29va2llKGNvbnN0IGNo YXIgKnVybCwgY29uc3QgY2hhciAqc3RyKQogCQl9CiAJfQogCi0JaWYgKHMgPSBleHRyYWN0SGVh ZGVyUGFyYW0oc3RyLCAic2VjdXJlIikpIHsKKwlpZiAoKHMgPSBleHRyYWN0SGVhZGVyUGFyYW0o c3RyLCAic2VjdXJlIikpKSB7CiAJCWMtPnNlY3VyZSA9IGViX3RydWU7CiAJCW56RnJlZShzKTsK IAl9CmRpZmYgLS1naXQgYS9zcmMvZmV0Y2htYWlsLmMgYi9zcmMvZmV0Y2htYWlsLmMKaW5kZXgg YjVkMzc1YS4uYTViNDdhZSAxMDA2NDQKLS0tIGEvc3JjL2ZldGNobWFpbC5jCisrKyBiL3NyYy9m ZXRjaG1haWwuYwpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyB2b2lkIHVucmVhZFN0YXRzKHZv aWQpCiAJdW5yZWFkTWluID0gMDsKIAl1bnJlYWRDb3VudCA9IDA7CiAKLQl3aGlsZSAoZiA9IG5l eHRTY2FuRmlsZShtYWlsVW5yZWFkKSkgeworCXdoaWxlICgoZiA9IG5leHRTY2FuRmlsZShtYWls VW5yZWFkKSkpIHsKIAkJaWYgKCFzdHJpbmdJc051bShmKSkKIAkJCWNvbnRpbnVlOwogCQluID0g YXRvaShmKTsKZGlmZiAtLWdpdCBhL3NyYy9mb3JtYXQuYyBiL3NyYy9mb3JtYXQuYwppbmRleCA5 ZTlmOGI5Li43ZmI0NmNjIDEwMDY0NAotLS0gYS9zcmMvZm9ybWF0LmMKKysrIGIvc3JjL2Zvcm1h dC5jCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBhbmNob3JTd2FwKGNoYXIgKmJ1ZikKICAqIEFu ZCBjMmEwIGlzIGEwIGlzIGJyZWFrc3BhY2UuCiAgKiBUaGVuIGdldCByaWQgb2YgaHlwZXJsaW5r cyB3aXRoIGFic29sdXRlbHkgbm90aGluZyB0byBjbGljayBvbi4gKi8KIAotCWZvciAocyA9IHcg PSBidWY7IGMgPSAqczsgKytzKSB7CisJZm9yIChzID0gdyA9IGJ1ZjsgKGMgPSAqcyk7ICsrcykg ewogCQlkID0gc1sxXTsKIC8qIHV0ZjggdGVzdCAqLwogCQlpZiAoKGMgJiAweGMwKSA9PSAweGMw ICYmIChkICYgMHhjMCkgPT0gMHg4MCkgewpAQCAtNDc4LDcgKzQ3OCw3IEBAIHB1dDE6CiAvKiBh IHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIGJlaW5nIGluIGFuIGFuY2hvciAqLwogCQlhID0gMDsK IAotCQlmb3IgKHMgPSBidWY7IGMgPSAqczsgKytzKSB7CisJCWZvciAocyA9IGJ1ZjsgKGMgPSAq cyk7ICsrcykgewogCQkJaWYgKGlzc3BhY2VCeXRlKGMpKSB7CiAJCQkJaWYgKCF3KQogCQkJCQl3 ID0gczsKQEAgLTU4NCw3ICs1ODQsNyBAQCBub3JtYWxDaGFyOgogICogR2V0IHJpZCBvZiB0aGVz ZSBjaGFyYWN0ZXJzLCBldmVuIGluIHByZW1vZGUuCiAgKiBBbHNvLCByZW1vdmUgdHJhaWxpbmcg cGlwZXMgb24gYSBsaW5lLiAqLwogCXNzID0gMDsJCQkvKiByZW1lbWJlciBsb2NhdGlvbiBvZiBm aXJzdCBwaXBlICovCi0JZm9yIChzID0gdyA9IGJ1ZjsgYyA9ICpzOyArK3MpIHsKKwlmb3IgKHMg PSB3ID0gYnVmOyAoYyA9ICpzKTsgKytzKSB7CiAJCWNoYXIgb3BlbiwgY2xvc2UsIGxpbmtjaGFy OwogCQlpZiAoIXN0cmNocigie1soPCIsIGMpKQogCQkJZ290byBwdXRjOwpAQCAtNjUyLDcgKzY1 Miw3IEBAIHB1dGM6CiAKIC8qIE5vdyBjb21wcmVzcyB0aGUgaW1wbGllZCBsaW5lYnJlYWtzIGlu dG8gb25lLiAqLwogCXByZW1vZGUgPSBlYl9mYWxzZTsKLQlmb3IgKHMgPSBidWY7IGMgPSAqczsg KytzKSB7CisJZm9yIChzID0gYnVmOyAoYyA9ICpzKTsgKytzKSB7CiAJCWlmIChjID09IEludGVy bmFsQ29kZUNoYXIgJiYgaXNkaWdpdEJ5dGUoc1sxXSkpIHsKIAkJCW4gPSBzdHJ0b2wocyArIDEs ICZzLCAxMCk7CiAJCQlpZiAoKnMgPT0gJyonKSB7CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBjaGFy ICpodG1sUmVmb3JtYXQoY29uc3QgY2hhciAqYnVmKQogLyogSW5zZXJ0IG5ld2xpbmVzIGJldHdl ZW4gYWRqYWNlbnQgaHlwZXJsaW5rcy4gKi8KIAkJaWYgKGMgIT0gJ30nIHx8IHByZW1vZGUpCiAJ CQljb250aW51ZTsKLQkJZm9yIChoID0gbmg7IGMgPSAqaDsgKytoKQorCQlmb3IgKGggPSBuaDsg KGMgPSAqaCk7ICsraCkKIAkJCWlmICghc3RyY2hyKCIgXHQsOi18OyIsIGMpKQogCQkJCWJyZWFr OwogCQlpZiAoIWMgfHwgc3RyY2hyKCJcclxuXGYiLCBjKSkgewpAQCAtMTM5NCw3ICsxMzk0LDcg QEAgY2hhciAqYW5kVHJhbnNsYXRlKGNvbnN0IGNoYXIgKnMsIGViX2Jvb2wgaW52aXNpYmxlKQog CQlyZXR1cm4gRU1QVFlTVFJJTkc7CiAJbmV3ID0gaW5pdFN0cmluZygmbCk7CiAKLQl3aGlsZSAo YyA9ICpzKSB7CisJd2hpbGUgKChjID0gKnMpKSB7CiAJCWlmIChjID09IEludGVybmFsQ29kZUNo YXIgJiYgIWludmlzaWJsZSkgewogCQkJY29uc3QgY2hhciAqdCA9IHMgKyAxOwogCQkJd2hpbGUg KGlzZGlnaXRCeXRlKCp0KSkKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHZvaWQgZXh0cmFjdEVtYWls QWRkcmVzc2VzKGNoYXIgKmxpbmUpCiAJY2hhciAqbWFyazsJCS8qIHN0YXJ0IG9mIGN1cnJlbnQg ZW50cnkgKi8KIAljaGFyIHF1b3RlID0gMCwgYzsKIAotCWZvciAocyA9IHQgPSBtYXJrID0gbGlu ZTsgYyA9ICpzOyArK3MpIHsKKwlmb3IgKHMgPSB0ID0gbWFyayA9IGxpbmU7IChjID0gKnMpOyAr K3MpIHsKIAkJaWYgKGMgPT0gJywnICYmICFxdW90ZSkgewogCQkJbWFyayA9IHQgKyAxOwogCQkJ YyA9ICcgJzsKQEAgLTE1NzEsNyArMTU3MSw3IEBAIGFwcGVuZDoKIAogCSp0ID0gMDsKIAlzcGFj ZUNydW5jaChsaW5lLCBlYl90cnVlLCBlYl9mYWxzZSk7Ci0JZm9yIChzID0gbGluZTsgYyA9ICpz OyArK3MpCisJZm9yIChzID0gbGluZTsgKGMgPSAqcyk7ICsrcykKIAkJaWYgKGMgPT0gJyAnKQog CQkJKnMgPSAnLCc7CiAJaWYgKCpsaW5lKQpkaWZmIC0tZ2l0IGEvc3JjL2h0bWwuY3BwIGIvc3Jj L2h0bWwuY3BwCmluZGV4IDdjN2FiZjYuLjg1NTZiZDkgMTAwNjQ0Ci0tLSBhL3NyYy9odG1sLmNw cAorKysgYi9zcmMvaHRtbC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCBnZXRf anNfZXZlbnRzKHZvaWQpCiAJaW50IGFjdGlvbiA9IHRvcFRhZy0+YWN0aW9uOwogCWludCBpdHlw ZSA9IHRvcFRhZy0+aXR5cGU7CiAKLQlmb3IgKGogPSAwOyB0ID0gaGFuZGxlcnNbal07ICsraikK Kwlmb3IgKGogPSAwOyAodCA9IGhhbmRsZXJzW2pdKTsgKytqKQogCQlnZXRfanNfZXZlbnQodCk7 CiAKIAlpZiAoIXRvcFRhZy0+anYpCkBAIC02MjQsNyArNjI0LDcgQEAgc3RhdGljIHZvaWQgaHRt bEZvcm0odm9pZCkKIAkJbnpGcmVlKGEpOwogCX0KIAotCWlmIChhID0gdG9wVGFnLT5ocmVmKSB7 CisJaWYgKChhID0gdG9wVGFnLT5ocmVmKSkgewogCQljb25zdCBjaGFyICpwcm90ID0gZ2V0UHJv dFVSTChhKTsKIAkJaWYgKHByb3QpIHsKIAkJCWlmIChzdHJpbmdFcXVhbENJKHByb3QsICJtYWls dG8iKSkKQEAgLTEzNjQsNyArMTM2NCw3IEBAIGV4ZWN1dGU6CiAJdyA9ICJzY3JpcHQiOwogCWlm IChqc3JjKSB7CiAJCWVzdGFibGlzaF9wcm9wZXJ0eV9zdHJpbmcob2JqLCAiZGF0YSIsIGp0ZXh0 LCBlYl90cnVlKTsKLQkJaWYgKHcgPSBzdHJyY2hyKGpzcmMsICcvJykpIHsKKwkJaWYgKCh3ID0g c3RycmNocihqc3JjLCAnLycpKSkgewogLyogVHJhaWxpbmcgc2xhc2ggZG9lc24ndCBjb3VudCAq LwogCQkJaWYgKHdbMV0gPT0gMCAmJiB3ID4ganNyYykKIAkJCQlmb3IgKC0tdzsgdyA+PSBqc3Jj ICYmICp3ICE9ICcvJzsgLS13KSA7CkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBzdGF0aWMgY2hhciAq ZW5jb2RlVGFncyhjaGFyICpodG1sKQogCWJhc2VocmVmID0gdC0+aHJlZjsKIAogdG9wOgotCXdo aWxlIChjID0gKmgpIHsKKwl3aGlsZSAoKGMgPSAqaCkpIHsKIAkJaWYgKGMgIT0gJzwnKSB7CiAJ CQlpZiAoYyA9PSAnXG4nKQogCQkJCSsrbG47CS8qIGtlZXAgdHJhY2sgb2YgbGluZSBudW1iZXJz ICovCkBAIC0yMTkzLDcgKzIxOTMsNyBAQCB1bnBhcmVuOgogLyogSSdtIGdvaW5nIHRvIGFzc3Vt ZSB0aGF0IGlmIHRoZSB3ZWIgZGVzaWduZXIgdG9vayB0aGUgdGltZQogICogdG8gcHV0IGluIGFu IGFsdCB0YWcsIHRoZW4gaXQncyB3b3J0aCByZWFkaW5nLgogICogWW91IGNhbiB0dXJuIHRoaXMg ZmVhdHVyZSBvZmYsIGJ1dCBJIGRvbid0IHRoaW5rIHlvdSdkIHdhbnQgdG8uICovCi0JCQkJaWYg KGEgPSBodG1sQXR0clZhbCh0b3BBdHRyaWIsICJhbHQiKSkgeworCQkJCWlmICgoYSA9IGh0bWxB dHRyVmFsKHRvcEF0dHJpYiwgImFsdCIpKSkgewogCQkJCQlzID0gYWx0VGV4dChhKTsKIAkJCQkJ bnpGcmVlKGEpOwogCQkJCQlhID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwLmMgYi9zcmMv aHR0cC5jCmluZGV4IDE0ODUxN2MuLjkzYTU3NDYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwLmMKKysr IGIvc3JjL2h0dHAuYwpAQCAtMTE2LDcgKzExNiw3IEBAIGNoYXIgKmV4dHJhY3RIZWFkZXJQYXJh bShjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKml0ZW0pCiAJY29uc3QgY2hhciAqcyA9IHN0 cjsKIC8qIDsgZGVub3RlcyB0aGUgbmV4dCBwYXJhbSAqLwogLyogRXZlbiB0aGUgZmlyc3QgcGFy YW0gaGFzIHRvIGJlIHByZWNlZWRlZCBieSA7ICovCi0Jd2hpbGUgKHMgPSBzdHJjaHIocywgJzsn KSkgeworCXdoaWxlICgocyA9IHN0cmNocihzLCAnOycpKSkgewogCQl3aGlsZSAoKnMgJiYgKCpz ID09ICc7JyB8fCAodWNoYXIpICogcyA8PSAnICcpKQogCQkJcysrOwogCQlpZiAoIW1lbUVxdWFs Q0kocywgaXRlbSwgbGUpKQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGViX2Jvb2wgaHR0cENvbm5lY3Qo Y29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdXJsKQogCQkgICBzdHJpbmdFcXVhbENJKHBy b3QsICJmdHBzIikgfHwKIAkJICAgc3RyaW5nRXF1YWxDSShwcm90LCAidGZ0cCIpIHx8IHN0cmlu Z0VxdWFsQ0kocHJvdCwgInNmdHAiKSkgewogCQlyZXR1cm4gZnRwQ29ubmVjdCh1cmwsIHVzZXIs IHBhc3MpOwotCX0gZWxzZSBpZiAobXQgPSBmaW5kTWltZUJ5UHJvdG9jb2wocHJvdCkpIHsKKwl9 IGVsc2UgaWYgKChtdCA9IGZpbmRNaW1lQnlQcm90b2NvbChwcm90KSkpIHsKIG1pbWVQcm9jZXNz OgogCQljbWQgPSBwbHVnaW5Db21tYW5kKG10LCB1cmwsIDApOwogLyogU3RvcCBpZ25vcmluZyBT SUdQSVBFIGZvciB0aGUgZHVyYXRpb24gb2Ygc3lzdGVtKCk6ICovCkBAIC04NDAsNyArODQwLDcg QEAgc3RhdGljIHZvaWQgZnRwbHMoY2hhciAqbGluZSkKIAkJc3RyaW5nQW5kU3RyaW5nKCZzZXJ2 ZXJEYXRhLCAmc2VydmVyRGF0YUxlbiwgbGluZSk7CiAJfSBlbHNlIHsKIAkJY2hhciBjLCAqcTsK LQkJZm9yIChxID0gbGluZTsgYyA9ICpxOyArK3EpIHsKKwkJZm9yIChxID0gbGluZTsgKGMgPSAq cSk7ICsrcSkgewogCQkJY2hhciAqbWV0YSA9IDA7CiAJCQlpZiAoYyA9PSAnPCcpCiAJCQkJbWV0 YSA9ICImbHQ7IjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgYWxsSVBzKHZvaWQpCiAJCQlm aW5kRmllbGQocCwgZnR5cGUsIGosICZuZiwgMCwgJnRhZ25vLCAmaHJlZiwgMCk7CiAJCQlpZiAo IWhyZWYpCiAJCQkJY29udGludWU7Ci0JCQlpZiAoZG9tID0gZ2V0SG9zdFVSTChocmVmKSkgewor CQkJaWYgKChkb20gPSBnZXRIb3N0VVJMKGhyZWYpKSkgewogLyogT2ssIG1hbnkgdGltZXMgdGhl IHNhbWUgZG9tYWluIHdpbGwgYmUgcmVmZXJlbmNlZCBvdmVyIGFuZCBvdmVyIGFnYWluLgogICog QSB3YXN0ZSBvZiB0aW1lIHRvIGxvb2sgaXQgdXAgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KICAqIFNv IEkgY2hlY2sgZm9yIGl0IGhlcmUuICBCdXQgd2hhdCBhbSBJIG1pc3Npbmc/CmRpZmYgLS1naXQg YS9zcmMvanNkb20uY3BwIGIvc3JjL2pzZG9tLmNwcAppbmRleCA2MmVmN2Q2Li5lYjVlY2YwIDEw MDY0NAotLS0gYS9zcmMvanNkb20uY3BwCisrKyBiL3NyYy9qc2RvbS5jcHAKQEAgLTEzMjYsNyAr MTMyNiw3IEBAIHZvaWQgZG9tTGluayhjb25zdCBjaGFyICpjbGFzc25hbWUsCS8qIGluc3RhbnRp YXRlIHRoaXMgY2xhc3MgKi8KIAljb25zdCBjaGFyICpodG1sY2xhc3MgPSB0b3BUYWctPmNsYXNz bmFtZTsKIAogLyogZmluZCB0aGUgY2xhc3MgKi8KLQlmb3IgKGkgPSAwOyBjcCA9IGRvbUNsYXNz ZXNbaV0ub2JqX2NsYXNzOyArK2kpCisJZm9yIChpID0gMDsgKGNwID0gZG9tQ2xhc3Nlc1tpXS5v YmpfY2xhc3MpOyArK2kpCiAJCWlmIChzdHJpbmdFcXVhbChjcC0+bmFtZSwgY2xhc3NuYW1lKSkK IAkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvanNsb2MuY3BwIGIvc3JjL2pzbG9jLmNwcApp bmRleCA0MDZlOGE2Li5jMjUyMTU5IDEwMDY0NAotLS0gYS9zcmMvanNsb2MuY3BwCisrKyBiL3Ny Yy9qc2xvYy5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCB1cmxfaW5pdGlhbGl6ZShKUzo6SGFuZGxl IDwgSlNPYmplY3QgKiA+dW8sIGNvbnN0IGNoYXIgKnVybCwgZWJfYm9vbCByZWFkb25seSwKIAkJ bG9jX2RlZl9zZXQodW8sICJocmVmIiwgdXJsLCBzZXR0ZXJfbG9jX2hyZWYsIGF0dHIpOwogCiAv KiBOb3cgbWFrZSBhIHByb3BlcnR5IGZvciBlYWNoIHBpZWNlIG9mIHRoZSB1cmwuICovCi0JaWYg KHMgPSBnZXRQcm90VVJMKHVybCkpIHsKKwlpZiAoKHMgPSBnZXRQcm90VVJMKHVybCkpKSB7CiAJ CXNwcmludGYodXJsYnVmZmVyLCAiJXM6Iiwgcyk7CiAJCWlmIChzdHJsZW4odXJsYnVmZmVyKSA+ PSBzaXplb2YodXJsYnVmZmVyKSkKIAkJCWlfcHJpbnRmRXhpdChNU0dfUHJvdFRvb0xvbmcpOwpA QCAtNjk5LDcgKzY5OSw3IEBAIGdldHRlcl9jb29raWUoSlNDb250ZXh0ICogY3gsIEpTOjpIYW5k bGUgPCBKU09iamVjdCAqID5vYmosCiAJCWlmIChtZW1FcXVhbENJKGNvb2ssICJjb29raWU6ICIs IDgpKSB7CS8qIHNob3VsZCBvZnRlbiBoYXBwZW4gKi8KIAkJCXN0cm1vdmUoY29vaywgY29vayAr IDgpOwogCQl9Ci0JCWlmIChzID0gc3Ryc3RyKGNvb2ssICJcclxuIikpCisJCWlmICgocyA9IHN0 cnN0cihjb29rLCAiXHJcbiIpKSkKIAkJCSpzID0gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9t YWluLmMgYi9zcmMvbWFpbi5jCmluZGV4IGE4ODkzMTYuLjVlZmU1OGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9tYWluLmMKKysrIGIvc3JjL21haW4uYwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgZWJfYm9vbCBy dW5FYkZ1bmN0aW9uKGNvbnN0IGNoYXIgKmxpbmUpCiAJfQogCWFyZ2xbMF0gPSBhcmd0bDsKIAot CXdoaWxlIChjb2RlID0gKmlwKSB7CisJd2hpbGUgKChjb2RlID0gKmlwKSkgewogCQlpZiAoaW50 RmxhZykgewogCQkJc2V0RXJyb3IoTVNHX0ludGVycnVwdGVkKTsKIAkJCWdvdG8gZmFpbDsKZGlm ZiAtLWdpdCBhL3NyYy9zZW5kbWFpbC5jIGIvc3JjL3NlbmRtYWlsLmMKaW5kZXggOWZmODdkNi4u NTI3YWNjNSAxMDA2NDQKLS0tIGEvc3JjL3NlbmRtYWlsLmMKKysrIGIvc3JjL3NlbmRtYWlsLmMK QEAgLTg4OCw3ICs4ODgsNyBAQCBzZW5kTWFpbChpbnQgYWNjb3VudCwgY29uc3QgY2hhciAqKnJl Y2lwaWVudHMsIGNvbnN0IGNoYXIgKmJvZHksCiAJCXJldHVybiBlYl9mYWxzZTsKIAogLyogc2V0 IGNvcHkgZmxhZ3MgKi8KLQlmb3IgKGogPSAwOyBzID0gcmVjaXBpZW50c1tqXTsgKytqKSB7CisJ Zm9yIChqID0gMDsgKHMgPSByZWNpcGllbnRzW2pdKTsgKytqKSB7CiAJCWNoYXIgY2MgPSAwOwog CQlpZiAoKnMgPT0gJ14nIHx8ICpzID09ICc/JykKIAkJCWNjID0gKnMrKzsKQEAgLTkwMSw3ICs5 MDEsNyBAQCBzZW5kTWFpbChpbnQgYWNjb3VudCwgY29uc3QgY2hhciAqKnJlY2lwaWVudHMsIGNv bnN0IGNoYXIgKmJvZHksCiAJfQogCiAvKiBMb29rIHVwIGFsaWFzZXMgaW4gdGhlIGFkZHJlc3Mg Ym9vayAqLwotCWZvciAoaiA9IDA7IHMgPSByZWNpcGllbnRzW2pdOyArK2opIHsKKwlmb3IgKGog PSAwOyAocyA9IHJlY2lwaWVudHNbal0pOyArK2opIHsKIAkJaWYgKHN0cmNocihzLCAnQCcpKQog CQkJY29udGludWU7CiAJCXQgPSAwOwpAQCAtOTMzLDcgKzkzMyw3IEBAIHNlbmRNYWlsKGludCBh Y2NvdW50LCBjb25zdCBjaGFyICoqcmVjaXBpZW50cywgY29uc3QgY2hhciAqYm9keSwKIAl9CiAK IC8qIHZlcmlmeSBhdHRhY2htZW50cyBhcmUgcmVhZGFibGUgKi8KLQlmb3IgKGogPSAwOyBzID0g YXR0YWNobWVudHNbal07ICsraikgeworCWZvciAoaiA9IDA7IChzID0gYXR0YWNobWVudHNbal0p OyArK2opIHsKIAkJaWYgKCFpc21jICYmIChjeCA9IHN0cmluZ0lzTnVtKHMpKSA+PSAwKSB7CiAJ CQlpZiAoIWN4Q29tcGFyZShjeCkgfHwgIWN4QWN0aXZlKGN4KSkKIAkJCQlyZXR1cm4gZWJfZmFs c2U7CkBAIC05NjksNyArOTY5LDcgQEAgc2VuZE1haWwoaW50IGFjY291bnQsIGNvbnN0IGNoYXIg KipyZWNpcGllbnRzLCBjb25zdCBjaGFyICpib2R5LAogCW91dCA9IGluaXRTdHJpbmcoJmopOwog CiAJZmlyc3RyZWMgPSBlYl90cnVlOwotCWZvciAoaSA9IDA7IHMgPSByZWNpcGllbnRzW2ldOyAr K2kpIHsKKwlmb3IgKGkgPSAwOyAocyA9IHJlY2lwaWVudHNbaV0pOyArK2kpIHsKIAkJaWYgKHJl Y2NjW2ldKQogCQkJY29udGludWU7CiAJCXN0cmluZ0FuZFN0cmluZygmb3V0LCAmaiwgZmlyc3Ry ZWMgPyAiVG86IiA6ICIsXHJcbiAgIik7CkBAIC05ODAsNyArOTgwLDcgQEAgc2VuZE1haWwoaW50 IGFjY291bnQsIGNvbnN0IGNoYXIgKipyZWNpcGllbnRzLCBjb25zdCBjaGFyICpib2R5LAogCQlz dHJpbmdBbmRTdHJpbmcoJm91dCwgJmosIGVvbCk7CiAKIAlmaXJzdHJlYyA9IGViX3RydWU7Ci0J Zm9yIChpID0gMDsgcyA9IHJlY2lwaWVudHNbaV07ICsraSkgeworCWZvciAoaSA9IDA7IChzID0g cmVjaXBpZW50c1tpXSk7ICsraSkgewogCQlpZiAocmVjY2NbaV0gIT0gJ14nKQogCQkJY29udGlu dWU7CiAJCXN0cmluZ0FuZFN0cmluZygmb3V0LCAmaiwgZmlyc3RyZWMgPyAiQ0M6IiA6ICIsXHJc biAgIik7CkBAIC05OTEsNyArOTkxLDcgQEAgc2VuZE1haWwoaW50IGFjY291bnQsIGNvbnN0IGNo YXIgKipyZWNpcGllbnRzLCBjb25zdCBjaGFyICpib2R5LAogCQlzdHJpbmdBbmRTdHJpbmcoJm91 dCwgJmosIGVvbCk7CiAKIAlmaXJzdHJlYyA9IGViX3RydWU7Ci0JZm9yIChpID0gMDsgcyA9IHJl Y2lwaWVudHNbaV07ICsraSkgeworCWZvciAoaSA9IDA7IChzID0gcmVjaXBpZW50c1tpXSk7ICsr aSkgewogCQlpZiAocmVjY2NbaV0gIT0gJz8nKQogCQkJY29udGludWU7CiAJCXN0cmluZ0FuZFN0 cmluZygmb3V0LCAmaiwgZmlyc3RyZWMgPyAiQkNDOiIgOiAiLFxyXG4gICIpOwpAQCAtMTA1Niw3 ICsxMDU2LDcgQEAgdGhpcyBmb3JtYXQsIHNvbWUgb3IgYWxsIG9mIHRoaXMgbWVzc2FnZSBtYXkg bm90IGJlIGxlZ2libGUuXHJcblxyXG4tLSIpOwogCWVuY29kZWQgPSAwOwogCiAJaWYgKG11c3Rt aW1lKSB7Ci0JCWZvciAoaSA9IDA7IHMgPSBhdHRhY2htZW50c1tpXTsgKytpKSB7CisJCWZvciAo aSA9IDA7IChzID0gYXR0YWNobWVudHNbaV0pOyArK2kpIHsKIAkJCWlmICghZW5jb2RlQXR0YWNo bWVudAogCQkJICAgIChzLCAwLCBlYl9mYWxzZSwgJmN0LCAmY2UsICZlbmNvZGVkKSkKIAkJCQly ZXR1cm4gZWJfZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvc3RyaW5nZmlsZS5jIGIvc3JjL3N0cmlu Z2ZpbGUuYwppbmRleCBmZGU5ZGU0Li5kYzYwZDkxIDEwMDY0NAotLS0gYS9zcmMvc3RyaW5nZmls ZS5jCisrKyBiL3NyYy9zdHJpbmdmaWxlLmMKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIHNwYWNl Q3J1bmNoKGNoYXIgKnMsIGViX2Jvb2wgb25lc3BhY2UsIGViX2Jvb2wgdW5wcmludCkKIAlpbnQg aSwgajsKIAljaGFyIGM7CiAJZWJfYm9vbCBzcGFjZSA9IGViX3RydWU7Ci0JZm9yIChpID0gaiA9 IDA7IGMgPSBzW2ldOyArK2kpIHsKKwlmb3IgKGkgPSBqID0gMDsgKGMgPSBzW2ldKTsgKytpKSB7 CiAJCWlmIChpc3NwYWNlQnl0ZShjKSkgewogCQkJaWYgKCFvbmVzcGFjZSkKIAkJCQljb250aW51 ZTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBlYl9ib29sIGlzU1FMKGNvbnN0IGNoYXIgKnMpCiAJaWYg KCFpc2FscGhhQnl0ZShjKSkKIAkJZ290byBubzsKIAotCWZvciAoKytzOyBjID0gKnM7ICsrcykg eworCWZvciAoKytzOyAoYyA9ICpzKTsgKytzKSB7CiAJCWlmIChjID09ICdfJykKIAkJCWNvbnRp bnVlOwogCQlpZiAoaXNhbG51bUJ5dGUoYykpCkBAIC03NTgsNyArNzU4LDcgQEAgdm9pZCBjYXNl U2hpZnQoY2hhciAqcywgY2hhciBhY3Rpb24pCiAJaW50IG1jID0gMDsKIAllYl9ib29sIHdzID0g ZWJfdHJ1ZTsKIAotCWZvciAoOyBjID0gKnM7ICsrcykgeworCWZvciAoOyAoYyA9ICpzKTsgKytz KSB7CiAJCWlmIChhY3Rpb24gPT0gJ3UnKSB7CiAJCQlpZiAoaXNhbHBoYUJ5dGUoYykpCiAJCQkJ KnMgPSB0b3VwcGVyKGMpOwpAQCAtMTA1Myw3ICsxMDUzLDcgQEAgY2hhciAqbmV4dFNjYW5GaWxl KGNvbnN0IGNoYXIgKmJhc2UpCiAJCXJldHVybiBzOwogCX0JCQkvKiBlbmQgbG9vcCBvdmVyIGZp bGVzIGluIGRpcmVjdG9yeSAqLwogI2Vsc2UKLQl3aGlsZSAoZGUgPSByZWFkZGlyKGRmKSkgewor CXdoaWxlICgoZGUgPSByZWFkZGlyKGRmKSkpIHsKIAkJaWYgKGRlLT5kX2lubyA9PSAwKQogCQkJ Y29udGludWU7CiAJCWlmIChkZS0+ZF9uYW1lWzBdID09ICcuJykgewpAQCAtMTA4Nyw3ICsxMDg3 LDcgQEAgZWJfYm9vbCBzb3J0ZWREaXJMaXN0KGNvbnN0IGNoYXIgKmRpciwgc3RydWN0IGxpbmVN YXAgKiptYXBfcCwgaW50ICpjb3VudF9wKQogCWNhcCA9IDEyODsKIAltYXAgPSB0ID0gYWxsb2Na ZXJvTWVtKGNhcCAqIExNU0laRSk7CiAKLQl3aGlsZSAoZiA9IG5leHRTY2FuRmlsZShkaXIpKSB7 CisJd2hpbGUgKChmID0gbmV4dFNjYW5GaWxlKGRpcikpKSB7CiAJCWlmIChsaW5lY291bnQgPT0g Y2FwKSB7CiAJCQljYXAgKj0gMjsKIAkJCW1hcCA9IHJlYWxsb2NNZW0obWFwLCBjYXAgKiBMTVNJ WkUpOwpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgZWJfYm9vbCBlbnZGaWxlKGNvbnN0IGNoYXIgKmxp bmUsIGNvbnN0IGNoYXIgKipleHBhbmRlZCkKIAl0ID0gcmU7CiAJKnQrKyA9ICdeJzsKIAljYyA9 IGJhZEJyYWNrZXRzID0gZWJfZmFsc2U7Ci0Jd2hpbGUgKGMgPSAqcykgeworCXdoaWxlICgoYyA9 ICpzKSkgewogCQlpZiAodCA+PSByZSArIHNpemVvZihyZSkgLSAzKSB7CiAJCQlzZXRFcnJvcihN U0dfU2hlbGxQYXR0ZXJuTG9uZyk7CiAJCQlyZXR1cm4gZWJfZmFsc2U7CkBAIC0xMjY3LDcgKzEy NjcsNyBAQCBlYl9ib29sIGVudkZpbGUoY29uc3QgY2hhciAqbGluZSwgY29uc3QgY2hhciAqKmV4 cGFuZGVkKQogCQllbHNlCiAJCQliYXNlZGlyID0gbGluZTE7CiAJfQotCXdoaWxlIChmaWxlID0g bmV4dFNjYW5GaWxlKGJhc2VkaXIpKSB7CisJd2hpbGUgKChmaWxlID0gbmV4dFNjYW5GaWxlKGJh c2VkaXIpKSkgewogCQlpZiAoZmlsZWNvdW50ID4gMSkKIAkJCWNvbnRpbnVlOwogCQlyZV9jb3Vu dCA9CmRpZmYgLS1naXQgYS9zcmMvdXJsLmMgYi9zcmMvdXJsLmMKaW5kZXggNDkyOTEzYS4uYzdk NTlkZCAxMDA2NDQKLS0tIGEvc3JjL3VybC5jCisrKyBiL3NyYy91cmwuYwpAQCAtNjEsNyArNjEs NyBAQCB2b2lkIHVucGVyY2VudFVSTChjaGFyICp1cmwpCiAJY2hhciBjLCAqdSwgKnc7CiAJaW50 IG47CiAJdSA9IHcgPSB1cmw7Ci0Jd2hpbGUgKGMgPSAqdSkgeworCXdoaWxlICgoYyA9ICp1KSkg ewogCQkrK3U7CiAJCWlmIChjID09ICclJyAmJiBpc3hkaWdpdCh1WzBdKSAmJiBpc3hkaWdpdCh1 WzFdKSkgewogCQkJYyA9IGZyb21IZXgodVswXSwgdVsxXSk7CkBAIC0yMzIsNyArMjMyLDcgQEAg c3RhdGljIGludCBwYXJzZVVSTChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKipwcm90bywg aW50ICpwcmxlbiwgY29uc3QgY2hhcgogCWlmIChhIDwgMCkKIAkJcmV0dXJuIGViX2ZhbHNlOwog Ci0JaWYgKGZyZWVfc3ludGF4ID0gcHJvdG9jb2xzW2FdLmZyZWVfc3ludGF4KSB7CisJaWYgKChm cmVlX3N5bnRheCA9IHByb3RvY29sc1thXS5mcmVlX3N5bnRheCkpIHsKIAkJaWYgKGRhdGEpCiAJ CQkqZGF0YSA9IHA7CiAJCWlmIChkYWxlbikKQEAgLTYyOCw3ICs2MjgsNyBAQCBvdXRfbjoKIAkJ Z290byBvdXRfbjsKIAl9CiAJaWYgKHJlbFswXSA9PSAnLycgJiYgcmVsWzFdID09ICcvJykgewot CQlpZiAocyA9IHN0cnN0cihiYXNlLCAiLy8iKSkgeworCQlpZiAoKHMgPSBzdHJzdHIoYmFzZSwg Ii8vIikpKSB7CiAJCQlzdHJuY3B5KG4sIGJhc2UsIHMgLSBiYXNlKTsKIAkJCW5bcyAtIGJhc2Vd ID0gMDsKIAkJfSBlbHNlCkBAIC04MTAsNyArODEwLDcgQEAgY2hhciAqZW5jb2RlUG9zdERhdGEo Y29uc3QgY2hhciAqcykKIAlpZiAocyA9PSBFTVBUWVNUUklORykKIAkJcmV0dXJuIEVNUFRZU1RS SU5HOwogCXBvc3QgPSBpbml0U3RyaW5nKCZsKTsKLQl3aGlsZSAoYyA9ICpzKyspIHsKKwl3aGls ZSAoKGMgPSAqcysrKSkgewogCQlpZiAoaXNhbG51bUJ5dGUoYykpCiAJCQlnb3RvIHB1dGM7CiAJ CWlmIChjID09ICcgJykgewo= --Multipart=_Fri__8_Aug_2014_13_08_56_+0200_6ssie+EmGrO7LbX_--