Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mX13o-00044v-Ai for pgsql-hackers@arkaria.postgresql.org; Sun, 03 Oct 2021 12:57:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mX13l-0000Fq-8C for pgsql-hackers@arkaria.postgresql.org; Sun, 03 Oct 2021 12:57:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mX13k-0000Fg-R8 for pgsql-hackers@lists.postgresql.org; Sun, 03 Oct 2021 12:57:40 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mX13h-0003AY-7N for pgsql-hackers@lists.postgresql.org; Sun, 03 Oct 2021 12:57:40 +0000 Received: by mail-lf1-x135.google.com with SMTP id b20so59851793lfv.3 for ; Sun, 03 Oct 2021 05:57:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=2n75YPe1eDxsvEi5+YGMjuh14U09cLHI/ykrAWMkaj8=; b=jJ7NuCZCwZfPB0rVqCH8L62Qg/N3OL5NmcWxTCHD3XxAUefX/O0IMYPql1bDEP2zai A8mcK8saqEJiUKVW6LWF71z8geJRpiBdCW9CpAJSVv4CwhrssWEkcrAaYCUWZgD0Sy1P wtNN4GR3ygigXWe3B5xNZxtaF+sZWu2/TWRMFw71D2GDIQ7bNbaapmzS7EuroP2IA6fP MX7Zk3pLVsx1vuSopDmYC0Vqei3V3jYpvbdRmm1fRMLxdbl+w0wvdrB7c3L2yYRhxv5F Al3jnLTveZMqEtN+gmUY6/RIY9XtGIK5LURzA4YVNfk4rJp8B3eAFTCWw9H/y5CYRW96 i4ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=2n75YPe1eDxsvEi5+YGMjuh14U09cLHI/ykrAWMkaj8=; b=ekwh24ks5WTypjjBbwqT1kJMxsxByOj7BwVryBQ7UzlFY8dB/A8dEklE/EcU5Z0uKn 9Ef9Kev3rDUvfmOG9+qOKj63vn9f2tBuoz/YhggbelkKMGzQXZ6jvKuZJbSUOrPoRBhQ hgU0nKVNtCwE+tlBlBsZQXSWbfwECgHKyqz+19pKQHVTgiVvaTmVzAg2+LlHB35CDsW/ XMc7mKTY7YFZekYdH1Rd2ZrmPc1BJbwJAcMkIkv7J6dXHZ6d46CqYgbZcwzwqHGYEJcM xUVASWS92FlXor6jsWd87aM30X11u5ZbD+453DV+IA1H6QhcFu+27YJvwSyd7kCJasbw k3TA== X-Gm-Message-State: AOAM533rYOVjxdi4c7hq2HlM83sYGa8vJ4z2n0KS+DxqhKqiC7rAp5P6 OsedvueTmY5TcfZETu7Gqb4= X-Google-Smtp-Source: ABdhPJxvIp0PkjbA15lRGtp063jKNk/tweEKq1D8ilDr35o+zq/4pL8efpuzoT6dHZbff38qORilcQ== X-Received: by 2002:ac2:5c51:: with SMTP id s17mr1419726lfp.32.1633265856172; Sun, 03 Oct 2021 05:57:36 -0700 (PDT) Received: from [192.168.1.3] ([46.138.249.39]) by smtp.gmail.com with ESMTPSA id s17sm350895lfe.10.2021.10.03.05.57.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 03 Oct 2021 05:57:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------2AU8DyLem4j1WiYAONCGRNdR" Message-ID: <784205fd-ca87-68df-983c-b1c94ad9d6f0@gmail.com> Date: Sun, 3 Oct 2021 15:57:33 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.1 Subject: Re: very long record lines in expanded psql output Content-Language: en-US To: Andrew Dunstan Cc: PostgreSQL Hackers References: <998a8549-f808-a349-bae6-9f44d07e050d@dunslane.net> <4e8b9a10-95aa-aecf-01a1-cbc24d643465@gmail.com> <66d23848-9f73-abc9-2fbb-3b8abfbb2fce@dunslane.net> <0efd52b9-450a-7636-fb75-663bc2d81b34@gmail.com> <92258bb8-8b9d-8f70-6f34-b5499215204c@dunslane.net> <7f3ef168-0958-a33d-6911-bda8999c30c2@gmail.com> <15de79ff-b872-498f-8b9c-ced62f460936@dunslane.net> <7bbc7e80-ca37-b601-9081-68d2e84b42af@gmail.com> <775442a6-6176-bff6-20ce-22ba1688cb5e@dunslane.net> From: Platon Pronko In-Reply-To: <775442a6-6176-bff6-20ce-22ba1688cb5e@dunslane.net> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2AU8DyLem4j1WiYAONCGRNdR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2021-09-24 14:42, Andrew Dunstan wrote: > > On 9/24/21 12:49 AM, Platon Pronko wrote: >> On 2021-09-23 22:28, Andrew Dunstan wrote: >>> >>> 2. It would possibly be better to pass the relevant parts of the options >>> to print_aligned_vertical_line() rather than the whole options >>> structure. It feels odd to pass both that and opt_border. >> >> What do you think about doing it the other way around - passing only >> whole >> options structure? That way we will roll 4 parameters (opt_border, >> printTextFormat, >> and two xheader ones) into only one argument. >> This increases code coupling a bit, but I'm not sure if that's >> relevant here. >> > > Sure, as long as it doesn't result in duplicated computation. Hi! Please find attached the updated patch - with fixed braces and adjusted parameters to print_aligned_vertical_line(). Best regards, Platon Pronko --------------2AU8DyLem4j1WiYAONCGRNdR Content-Type: text/x-patch; charset=UTF-8; name="fix-header-lines-in-expanded-output.patch" Content-Disposition: attachment; filename="fix-header-lines-in-expanded-output.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCAxNGUwYTRkYmUzLi43OGQyN2NhZWZhIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0yNzk5LDYgKzI3OTksMzIgQEAgbG9faW1w b3J0IDE1MjgwMQogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxs aXRlcmFsPnhoZWFkZXJfd2lkdGg8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTZXRzIGV4cGFuZGVkIGhlYWRl ciB3aWR0aCB0byBvbmUgb2YgPGxpdGVyYWw+ZnVsbDwvbGl0ZXJhbD4sCisgICAgICAgICAg PGxpdGVyYWw+Y29sdW1uPC9saXRlcmFsPiwKKyAgICAgICAgICA8bGl0ZXJhbD5wYWdlPC9s aXRlcmFsPiwKKyAgICAgICAgICBvciA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ aW50ZWdlciB2YWx1ZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgIDwvcGFyYT4KKworICAg ICAgICAgIDxwYXJhPjxsaXRlcmFsPmZ1bGw8L2xpdGVyYWw+IGlzIHRoZSBkZWZhdWx0IG9w dGlvbiAtIGV4cGFuZGVkIGhlYWRlcgorICAgICAgICAgIGlzIG5vdCB0cnVuY2F0ZWQuCisg ICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPHBhcmE+PGxpdGVyYWw+Y29sdW1uPC9s aXRlcmFsPjogZG9uJ3QgcHJpbnQgaGVhZGVyIGxpbmUgcGFzdCB0aGUgZmlyc3QKKyAgICAg ICAgICBjb2x1bW4uCisgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPHBhcmE+PGxp dGVyYWw+cGFnZTwvbGl0ZXJhbD46IGZpdCBoZWFkZXIgbGluZSB0byB0ZXJtaW5hbCB3aWR0 aC4KKyAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICA8cGFyYT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+aW50ZWdlciB2YWx1ZTwvcmVwbGFjZWFibGU+OiBzcGVjaWZ5 IGV4YWN0IHdpZHRoIG9mIGhlYWRlciBsaW5lLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICAg ICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5maWVsZHNlcDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggNDlk NGMwZTNjZS4uZWJiYTE0ZDA4MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC00MzEwLDYgKzQzMTAsMzIgQEAg ZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hhciAqdmFsdWUsIHByaW50UXVl cnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQlwb3B0LT50b3B0LmV4cGFuZGVkID0gIXBv cHQtPnRvcHQuZXhwYW5kZWQ7CiAJfQogCisJLyogaGVhZGVyIGxpbmUgd2lkdGggaW4gZXhw YW5kZWQgbW9kZSAqLworCWVsc2UgaWYgKHN0cmNtcChwYXJhbSwgInhoZWFkZXJfd2lkdGgi KSA9PSAwKQorCXsKKwkJaWYgKHZhbHVlICYmIHBnX3N0cmNhc2VjbXAodmFsdWUsICJmdWxs IikgPT0gMCkKKwkJCXBvcHQtPnRvcHQuZXhwYW5kZWRfaGVhZGVyX3dpZHRoX3R5cGUgPSBQ UklOVF9YSEVBREVSX0ZVTEw7CisJCWVsc2UgaWYgKHZhbHVlICYmIHBnX3N0cmNhc2VjbXAo dmFsdWUsICJjb2x1bW4iKSA9PSAwKQorCQkJcG9wdC0+dG9wdC5leHBhbmRlZF9oZWFkZXJf d2lkdGhfdHlwZSA9IFBSSU5UX1hIRUFERVJfQ09MVU1OOworCQllbHNlIGlmICh2YWx1ZSAm JiBwZ19zdHJjYXNlY21wKHZhbHVlLCAicGFnZSIpID09IDApCisJCQlwb3B0LT50b3B0LmV4 cGFuZGVkX2hlYWRlcl93aWR0aF90eXBlID0gUFJJTlRfWEhFQURFUl9QQUdFOworCQllbHNl IGlmICh2YWx1ZSkKKwkJeworCQkJcG9wdC0+dG9wdC5leHBhbmRlZF9oZWFkZXJfd2lkdGhf dHlwZSA9IFBSSU5UX1hIRUFERVJfRVhBQ1RfV0lEVEg7CisJCQlwb3B0LT50b3B0LmV4cGFu ZGVkX2hlYWRlcl9leGFjdF93aWR0aCA9IGF0b2kodmFsdWUpOworCQkJaWYgKHBvcHQtPnRv cHQuZXhwYW5kZWRfaGVhZGVyX2V4YWN0X3dpZHRoID09IDApCisJCQl7CisJCQkJcGdfbG9n X2Vycm9yKCJcXHBzZXQ6IGFsbG93ZWQgeGhlYWRlcl93aWR0aCB2YWx1ZXMgYXJlIGZ1bGwg KGRlZmF1bHQpLCBjb2x1bW4sIHBhZ2UsIG9yIGFuIG51bWJlciBzcGVjaWZ5aW5nIGV4YWN0 IHdpZHRoLiIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsK KwkJCS8qIHJlc2V0IHRvIGRlZmF1bHQgaWYgdmFsdWUgaXMgZW1wdHkgKi8KKwkJCXBvcHQt PnRvcHQuZXhwYW5kZWRfaGVhZGVyX3dpZHRoX3R5cGUgPSBQUklOVF9YSEVBREVSX0ZVTEw7 CisJCX0KKwl9CisKIAkvKiBmaWVsZCBzZXBhcmF0b3IgZm9yIENTViBmb3JtYXQgKi8KIAll bHNlIGlmIChzdHJjbXAocGFyYW0sICJjc3ZfZmllbGRzZXAiKSA9PSAwKQogCXsKQEAgLTQ1 MDIsNiArNDUyOCwxOSBAQCBwcmludFBzZXRJbmZvKGNvbnN0IGNoYXIgKnBhcmFtLCBwcmlu dFF1ZXJ5T3B0ICpwb3B0KQogCQkJcHJpbnRmKF8oIkV4cGFuZGVkIGRpc3BsYXkgaXMgb2Zm LlxuIikpOwogCX0KIAorCS8qIHNob3cgeGhlYWRlciB3aWR0aCB0eXBlICovCisJZWxzZSBp ZiAoc3RyY21wKHBhcmFtLCAieGhlYWRlcl93aWR0aCIpID09IDApCisJeworCQlpZiAocG9w dC0+dG9wdC5leHBhbmRlZF9oZWFkZXJfd2lkdGhfdHlwZSA9PSBQUklOVF9YSEVBREVSX0ZV TEwpCisJCQlwcmludGYoXygiRXhwYW5kZWQgaGVhZGVyIHdpZHRoIGlzICdmdWxsJy5cbiIp KTsKKwkJZWxzZSBpZiAocG9wdC0+dG9wdC5leHBhbmRlZF9oZWFkZXJfd2lkdGhfdHlwZSA9 PSBQUklOVF9YSEVBREVSX0NPTFVNTikKKwkJCXByaW50ZihfKCJFeHBhbmRlZCBoZWFkZXIg d2lkdGggaXMgJ2NvbHVtbicuXG4iKSk7CisJCWVsc2UgaWYgKHBvcHQtPnRvcHQuZXhwYW5k ZWRfaGVhZGVyX3dpZHRoX3R5cGUgPT0gUFJJTlRfWEhFQURFUl9QQUdFKQorCQkJcHJpbnRm KF8oIkV4cGFuZGVkIGhlYWRlciB3aWR0aCBpcyAncGFnZScuXG4iKSk7CisJCWVsc2UgaWYg KHBvcHQtPnRvcHQuZXhwYW5kZWRfaGVhZGVyX3dpZHRoX3R5cGUgPT0gUFJJTlRfWEhFQURF Ul9FWEFDVF9XSURUSCkKKwkJCXByaW50ZihfKCJFeHBhbmRlZCBoZWFkZXIgd2lkdGggaXMg JWQuXG4iKSwgcG9wdC0+dG9wdC5leHBhbmRlZF9oZWFkZXJfZXhhY3Rfd2lkdGgpOworCX0K KwogCS8qIHNob3cgZmllbGQgc2VwYXJhdG9yIGZvciBDU1YgZm9ybWF0ICovCiAJZWxzZSBp ZiAoc3RyY21wKHBhcmFtLCAiY3N2X2ZpZWxkc2VwIikgPT0gMCkKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMKaW5kZXggNWNkNTgzODY2OC4uZTNlM2JkYzcwOSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YwpAQCAtNDE2OCwxMyArNDE2OCwxNiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJICJ0YWJsZWF0dHIiLCAidGl0bGUi LCAidHVwbGVzX29ubHkiLAogCQkJCQkJICJ1bmljb2RlX2JvcmRlcl9saW5lc3R5bGUiLAog CQkJCQkJICJ1bmljb2RlX2NvbHVtbl9saW5lc3R5bGUiLAotCQkJCQkJICJ1bmljb2RlX2hl YWRlcl9saW5lc3R5bGUiKTsKKwkJCQkJCSAidW5pY29kZV9oZWFkZXJfbGluZXN0eWxlIiwK KwkJCQkJCSAieGhlYWRlcl93aWR0aCIpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxc cHNldCIsIE1hdGNoQW55KSkKIAl7CiAJCWlmIChUYWlsTWF0Y2hlc0NTKCJmb3JtYXQiKSkK IAkJCUNPTVBMRVRFX1dJVEhfQ1MoImFsaWduZWQiLCAiYXNjaWlkb2MiLCAiY3N2IiwgImh0 bWwiLCAibGF0ZXgiLAogCQkJCQkJCSAibGF0ZXgtbG9uZ3RhYmxlIiwgInRyb2ZmLW1zIiwg InVuYWxpZ25lZCIsCiAJCQkJCQkJICJ3cmFwcGVkIik7CisJCWVsc2UgaWYgKFRhaWxNYXRj aGVzQ1MoInhoZWFkZXJfd2lkdGgiKSkKKwkJCUNPTVBMRVRFX1dJVEhfQ1MoImZ1bGwiLCAi Y29sdW1uIiwgInBhZ2UiKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygibGluZXN0eWxl IikpCiAJCQlDT01QTEVURV9XSVRIX0NTKCJhc2NpaSIsICJvbGQtYXNjaWkiLCAidW5pY29k ZSIpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJwYWdlciIpKQpkaWZmIC0tZ2l0IGEv c3JjL2ZlX3V0aWxzL3ByaW50LmMgYi9zcmMvZmVfdXRpbHMvcHJpbnQuYwppbmRleCBkNDhm Y2M0YTAzLi4xZTk0NzcyYjhiIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvcHJpbnQuYwor KysgYi9zcmMvZmVfdXRpbHMvcHJpbnQuYwpAQCAtMTE1MiwxNSArMTE1MiwxNiBAQCBjbGVh bnVwOgogCiAKIHN0YXRpYyB2b2lkCi1wcmludF9hbGlnbmVkX3ZlcnRpY2FsX2xpbmUoY29u c3QgcHJpbnRUZXh0Rm9ybWF0ICpmb3JtYXQsCi0JCQkJCQkJY29uc3QgdW5zaWduZWQgc2hv cnQgb3B0X2JvcmRlciwKK3ByaW50X2FsaWduZWRfdmVydGljYWxfbGluZShjb25zdCBwcmlu dFRhYmxlT3B0ICp0b3B0LAogCQkJCQkJCXVuc2lnbmVkIGxvbmcgcmVjb3JkLAogCQkJCQkJ CXVuc2lnbmVkIGludCBod2lkdGgsCiAJCQkJCQkJdW5zaWduZWQgaW50IGR3aWR0aCwKKwkJ CQkJCQlpbnQgb3V0cHV0X2NvbHVtbnMsCiAJCQkJCQkJcHJpbnRUZXh0UnVsZSBwb3MsCiAJ CQkJCQkJRklMRSAqZm91dCkKIHsKLQljb25zdCBwcmludFRleHRMaW5lRm9ybWF0ICpsZm9y bWF0ID0gJmZvcm1hdC0+bHJ1bGVbcG9zXTsKKwljb25zdCBwcmludFRleHRMaW5lRm9ybWF0 ICpsZm9ybWF0ID0gJmdldF9saW5lX3N0eWxlKHRvcHQpLT5scnVsZVtwb3NdOworCWNvbnN0 IHVuc2lnbmVkIHNob3J0IG9wdF9ib3JkZXIgPSB0b3B0LT5ib3JkZXI7CiAJdW5zaWduZWQg aW50IGk7CiAJaW50CQkJcmVjbGVuID0gMDsKIApAQCAtMTE4OSw4ICsxMTkwLDE4IEBAIHBy aW50X2FsaWduZWRfdmVydGljYWxfbGluZShjb25zdCBwcmludFRleHRGb3JtYXQgKmZvcm1h dCwKIAkJaWYgKHJlY2xlbi0tIDw9IDApCiAJCQlmcHV0cyhsZm9ybWF0LT5ocnVsZSwgZm91 dCk7CiAJCWlmIChyZWNsZW4tLSA8PSAwKQotCQkJZnB1dHMobGZvcm1hdC0+bWlkdnJ1bGUs IGZvdXQpOwotCQlpZiAocmVjbGVuLS0gPD0gMCkKKwkJeworCQkJaWYgKHRvcHQtPmV4cGFu ZGVkX2hlYWRlcl93aWR0aF90eXBlID09IFBSSU5UX1hIRUFERVJfQ09MVU1OKQorCQkJewor CQkJCWZwdXRzKGxmb3JtYXQtPnJpZ2h0dnJ1bGUsIGZvdXQpOworCQkJfQorCQkJZWxzZQor CQkJeworCQkJCWZwdXRzKGxmb3JtYXQtPm1pZHZydWxlLCBmb3V0KTsKKwkJCX0KKwkJfQor CQlpZiAocmVjbGVuLS0gPD0gMAorCQkJJiYgdG9wdC0+ZXhwYW5kZWRfaGVhZGVyX3dpZHRo X3R5cGUgIT0gUFJJTlRfWEhFQURFUl9DT0xVTU4pCiAJCQlmcHV0cyhsZm9ybWF0LT5ocnVs ZSwgZm91dCk7CiAJfQogCWVsc2UKQEAgLTExOTgsMTIgKzEyMDksNDEgQEAgcHJpbnRfYWxp Z25lZF92ZXJ0aWNhbF9saW5lKGNvbnN0IHByaW50VGV4dEZvcm1hdCAqZm9ybWF0LAogCQlp ZiAocmVjbGVuLS0gPD0gMCkKIAkJCWZwdXRjKCcgJywgZm91dCk7CiAJfQotCWlmIChyZWNs ZW4gPCAwKQotCQlyZWNsZW4gPSAwOwotCWZvciAoaSA9IHJlY2xlbjsgaSA8IGR3aWR0aDsg aSsrKQotCQlmcHV0cyhvcHRfYm9yZGVyID4gMCA/IGxmb3JtYXQtPmhydWxlIDogIiAiLCBm b3V0KTsKLQlpZiAob3B0X2JvcmRlciA9PSAyKQotCQlmcHJpbnRmKGZvdXQsICIlcyVzIiwg bGZvcm1hdC0+aHJ1bGUsIGxmb3JtYXQtPnJpZ2h0dnJ1bGUpOworCisJaWYgKHRvcHQtPmV4 cGFuZGVkX2hlYWRlcl93aWR0aF90eXBlICE9IFBSSU5UX1hIRUFERVJfQ09MVU1OKQorCXsK KwkJaWYgKHRvcHQtPmV4cGFuZGVkX2hlYWRlcl93aWR0aF90eXBlID09IFBSSU5UX1hIRUFE RVJfUEFHRQorCQkJfHwgdG9wdC0+ZXhwYW5kZWRfaGVhZGVyX3dpZHRoX3R5cGUgPT0gUFJJ TlRfWEhFQURFUl9FWEFDVF9XSURUSCkKKwkJeworCQkJaWYgKHRvcHQtPmV4cGFuZGVkX2hl YWRlcl93aWR0aF90eXBlID09IFBSSU5UX1hIRUFERVJfRVhBQ1RfV0lEVEgpCisJCQl7CisJ CQkJb3V0cHV0X2NvbHVtbnMgPSB0b3B0LT5leHBhbmRlZF9oZWFkZXJfZXhhY3Rfd2lkdGg7 CisJCQl9CisJCQlpZiAob3V0cHV0X2NvbHVtbnMgPiAwKQorCQkJeworCQkJCWlmIChvcHRf Ym9yZGVyID09IDApCisJCQkJCWR3aWR0aCA9IE1pbihkd2lkdGgsIE1heCgwLCAoaW50KSAo b3V0cHV0X2NvbHVtbnMgLSBod2lkdGgpKSk7CisJCQkJaWYgKG9wdF9ib3JkZXIgPT0gMSkK KwkJCQkJZHdpZHRoID0gTWluKGR3aWR0aCwgTWF4KDAsIChpbnQpIChvdXRwdXRfY29sdW1u cyAtIGh3aWR0aCAtIDMpKSk7CisJCQkJLyogSGFuZGxpbmcgdGhlIHhoZWFkZXIgd2lkdGgg Zm9yIGJvcmRlcj0yIGRvZXNuJ3QgbWFrZQorCQkJCSAgIG11Y2ggc2Vuc2UgYmVjYXVzZSB0 aGlzIGZvcm1hdCBoYXMgYW4gYWRkaXRpb25hbAorCQkJCSAgIHJpZ2h0IGJvcmRlciwgYnV0 IEkndmUgYWRkZWQgdGhpcyBhbnl3YXkgZm9yIGNvbnNpc3RlbmN5LiAqLworCQkJCWlmIChv cHRfYm9yZGVyID09IDIpCisJCQkJCWR3aWR0aCA9IE1pbihkd2lkdGgsIE1heCgwLCAoaW50 KSAob3V0cHV0X2NvbHVtbnMgLSBod2lkdGggLSA3KSkpOworCQkJfQorCQl9CisKKwkJaWYg KHJlY2xlbiA8IDApCisJCQlyZWNsZW4gPSAwOworCQlpZiAoZHdpZHRoIDwgcmVjbGVuKQor CQkJZHdpZHRoID0gcmVjbGVuOworCisJCWZvciAoaSA9IHJlY2xlbjsgaSA8IGR3aWR0aDsg aSsrKQorCQkJZnB1dHMob3B0X2JvcmRlciA+IDAgPyBsZm9ybWF0LT5ocnVsZSA6ICIgIiwg Zm91dCk7CisJCWlmIChvcHRfYm9yZGVyID09IDIpCisJCQlmcHJpbnRmKGZvdXQsICIlcyVz IiwgbGZvcm1hdC0+aHJ1bGUsIGxmb3JtYXQtPnJpZ2h0dnJ1bGUpOworCX0KKwogCWZwdXRj KCdcbicsIGZvdXQpOwogfQogCkBAIC0xNTAwLDExICsxNTQwLDEyIEBAIHByaW50X2FsaWdu ZWRfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsCiAJCQkJbGh3aWR0 aCsrOwkJLyogZm9yIG5ld2xpbmUgaW5kaWNhdG9ycyAqLwogCiAJCQlpZiAoIW9wdF90dXBs ZXNfb25seSkKLQkJCQlwcmludF9hbGlnbmVkX3ZlcnRpY2FsX2xpbmUoZm9ybWF0LCBvcHRf Ym9yZGVyLCByZWNvcmQrKywKLQkJCQkJCQkJCQkJbGh3aWR0aCwgZHdpZHRoLCBwb3MsIGZv dXQpOworCQkJCXByaW50X2FsaWduZWRfdmVydGljYWxfbGluZShjb250LT5vcHQsIHJlY29y ZCsrLAorCQkJCQkJCQkJCQlsaHdpZHRoLCBkd2lkdGgsIG91dHB1dF9jb2x1bW5zLAorCQkJ CQkJCQkJCQlwb3MsIGZvdXQpOwogCQkJZWxzZSBpZiAoaSAhPSAwIHx8ICFjb250LT5vcHQt PnN0YXJ0X3RhYmxlIHx8IG9wdF9ib3JkZXIgPT0gMikKLQkJCQlwcmludF9hbGlnbmVkX3Zl cnRpY2FsX2xpbmUoZm9ybWF0LCBvcHRfYm9yZGVyLCAwLCBsaHdpZHRoLAotCQkJCQkJCQkJ CQlkd2lkdGgsIHBvcywgZm91dCk7CisJCQkJcHJpbnRfYWxpZ25lZF92ZXJ0aWNhbF9saW5l KGNvbnQtPm9wdCwgMCwgbGh3aWR0aCwKKwkJCQkJCQkJCQkJZHdpZHRoLCBvdXRwdXRfY29s dW1ucywgcG9zLCBmb3V0KTsKIAkJfQogCiAJCS8qIEZvcm1hdCB0aGUgaGVhZGVyICovCkBA IC0xNjkwLDggKzE3MzEsOCBAQCBwcmludF9hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50 VGFibGVDb250ZW50ICpjb250LAogCWlmIChjb250LT5vcHQtPnN0b3BfdGFibGUpCiAJewog CQlpZiAob3B0X2JvcmRlciA9PSAyICYmICFjYW5jZWxfcHJlc3NlZCkKLQkJCXByaW50X2Fs aWduZWRfdmVydGljYWxfbGluZShmb3JtYXQsIG9wdF9ib3JkZXIsIDAsIGh3aWR0aCwgZHdp ZHRoLAotCQkJCQkJCQkJCVBSSU5UX1JVTEVfQk9UVE9NLCBmb3V0KTsKKwkJCXByaW50X2Fs aWduZWRfdmVydGljYWxfbGluZShjb250LT5vcHQsIDAsIGh3aWR0aCwgZHdpZHRoLAorCQkJ CQkJCQkJCW91dHB1dF9jb2x1bW5zLCBQUklOVF9SVUxFX0JPVFRPTSwgZm91dCk7CiAKIAkJ LyogcHJpbnQgZm9vdGVycyAqLwogCQlpZiAoIW9wdF90dXBsZXNfb25seSAmJiBjb250LT5m b290ZXJzICE9IE5VTEwgJiYgIWNhbmNlbF9wcmVzc2VkKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZmVfdXRpbHMvcHJpbnQuaCBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3ByaW50LmgK aW5kZXggMjdjY2JkNTExOS4uOWQ2NWY1OGUwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZmVfdXRpbHMvcHJpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9wcmludC5oCkBA IC02Niw2ICs2NiwxNSBAQCB0eXBlZGVmIGVudW0gcHJpbnRUZXh0TGluZVdyYXAKIAlQUklO VF9MSU5FX1dSQVBfTkVXTElORQkJLyogTmV3bGluZSBpbiBkYXRhICovCiB9IHByaW50VGV4 dExpbmVXcmFwOwogCit0eXBlZGVmIGVudW0gcHJpbnRYaGVhZGVyV2lkdGhUeXBlCit7CisJ LyogRXhwYW5kZWQgaGVhZGVyIGxpbmUgd2lkdGggdmFyaWFudHMgKi8KKwlQUklOVF9YSEVB REVSX0ZVTEwsIC8qIGRvIG5vdCB0cnVuY2F0ZSBoZWFkZXIgbGluZSAodGhpcyBpcyB0aGUg ZGVmYXVsdCkgKi8KKwlQUklOVF9YSEVBREVSX0NPTFVNTiwgLyogb25seSBwcmludCBoZWFk ZXIgbGluZSBhYm92ZSB0aGUgZmlyc3QgY29sdW1uICovCisJUFJJTlRfWEhFQURFUl9QQUdF LCAvKiBoZWFkZXIgbGluZSBtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiB0ZXJtaW5hbCB3aWR0 aCAqLworCVBSSU5UX1hIRUFERVJfRVhBQ1RfV0lEVEgsIC8qIGV4cGxpY2l0bHkgc3BlY2lm aWVkIHdpZHRoICovCit9IHByaW50WGhlYWRlcldpZHRoVHlwZTsKKwogdHlwZWRlZiBzdHJ1 Y3QgcHJpbnRUZXh0Rm9ybWF0CiB7CiAJLyogQSBjb21wbGV0ZSBsaW5lIHN0eWxlICovCkBA IC0xMDEsNiArMTEwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgcHJpbnRUYWJsZU9wdAogCWVudW0g cHJpbnRGb3JtYXQgZm9ybWF0OwkvKiBzZWUgZW51bSBhYm92ZSAqLwogCXVuc2lnbmVkIHNo b3J0IGludCBleHBhbmRlZDsJLyogZXhwYW5kZWQvdmVydGljYWwgb3V0cHV0IChpZiBzdXBw b3J0ZWQKIAkJCQkJCQkJCSAqIGJ5IG91dHB1dCBmb3JtYXQpOyAwPW5vLCAxPXllcywgMj1h dXRvICovCisJcHJpbnRYaGVhZGVyV2lkdGhUeXBlCWV4cGFuZGVkX2hlYWRlcl93aWR0aF90 eXBlOyAvKiB3aWR0aCB0eXBlIGZvciBoZWFkZXIgbGluZSBpbiBleHBhbmRlZCBtb2RlICov CisJaW50CQkJCWV4cGFuZGVkX2hlYWRlcl9leGFjdF93aWR0aDsgLyogZXhwbGljaXQgd2lk dGggZm9yIGhlYWRlciBsaW5lIGluIGV4cGFuZGVkIG1vZGUgKi8KIAl1bnNpZ25lZCBzaG9y dCBpbnQgYm9yZGVyOwkvKiBQcmludCBhIGJvcmRlciBhcm91bmQgdGhlIHRhYmxlLiAwPW5v bmUsCiAJCQkJCQkJCSAqIDE9ZGl2aWRpbmcgbGluZXMsIDI9ZnVsbCAqLwogCXVuc2lnbmVk IHNob3J0IGludCBwYWdlcjsJLyogdXNlIHBhZ2VyIGZvciBvdXRwdXQgKGlmIHRvIHN0ZG91 dCBhbmQKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggY2I1YjVlYzc0Yy4uMmJj Y2IzNDA2YyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTM0MjUsNiArMzQy NSw3IEBAIHByaW50VGV4dEZvcm1hdAogcHJpbnRUZXh0TGluZUZvcm1hdAogcHJpbnRUZXh0 TGluZVdyYXAKIHByaW50VGV4dFJ1bGUKK3ByaW50WGhlYWRlcldpZHRoVHlwZQogcHJpbnRm dW5jCiBwcml2X21hcAogcHJvY2Vzc19maWxlX2NhbGxiYWNrX3QK --------------2AU8DyLem4j1WiYAONCGRNdR--