Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1imEx8-0003Gy-7R for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Dec 2019 10:40:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1imEx6-0000xQ-CL for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Dec 2019 10:40:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1imEx5-0000xJ-RN for pgsql-hackers@lists.postgresql.org; Tue, 31 Dec 2019 10:40:40 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1imEwy-0003qT-Fk for pgsql-hackers@postgresql.org; Tue, 31 Dec 2019 10:40:38 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 09394813 for ; Tue, 31 Dec 2019 05:40:30 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 31 Dec 2019 05:40:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=QOgKYf4lquXY+yfyjmobxSPWLqik8 CWKrSgqrW7SFe4=; b=pbNsOmkqlwfoTaYvkpAmpvf0W/w4Q5QhzJjqRdIvsfl8J Bnwi4HF1G/f2XQ9kDxa8k12XRIvQm89L8C5om8IS/6yToyv6+mwqO9JOkSfmU7Jv 6pay8ObfVNu33Iz7XzCZ9LOR3qYzqCo4SmhtmQqIoA8IlI8NsgSG1p/u3siwUFvi uBvhrMhKoTalGn87gBm8a4W6aMjVnSB9qW6FFuf5/5ARyDVQtGNENrUfLyUyERjk j+YOzHIA5z2uhBwTAd3XquSsmmPBMA1ZASxJXYhof2zkFR9jnvRatX5Bb/CJ/3Jc S1qZA17GVzYMWvGoSLxNYH9rf/loqPVyP1R0DcdQA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrvdefjedgudeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvffuohfkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpe dvnhguqhhurggurhgrnhhtrdgtohhmpdhnohdqtgholhhorhdrohhrghenucfkphepleef rddvgeefrddukeejrddugeegnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrd gvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomhenucevlhhushhtvghr ufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df3bb90.dip0.t-ipconnect.de [93.243.187.144]) by mail.messagingengine.com (Postfix) with ESMTPA id ABE7980061 for ; Tue, 31 Dec 2019 05:40:29 -0500 (EST) From: Peter Eisentraut To: pgsql-hackers Subject: color by default Organization: 2ndQuadrant Message-ID: Date: Tue, 31 Dec 2019 11:40:28 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------3CCC0545D7E25557B23C6BE8" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------3CCC0545D7E25557B23C6BE8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit With the attached patch, I propose to enable the colored output by default in PG13. For those who don't like color output, I also add support for the environment variable NO_COLOR, which is an emerging standard for turning off color across different software packages (https://no-color.org/). Of course, you can also continue to use the PG_COLOR variable. I have looked around how other packages do the automatic color detection. It's usually a combination of mysterious termcap stuff and slightly less mysterious matching of the TERM variable against a list of known terminal types. I figured we can skip the termcap stuff and still get really good coverage in practice, so that's what I did. I have also added a documentation appendix to explain all of this. (Perhaps we should now remove the repetitive mention of the PG_COLOR variable in each man page, but I haven't done that in this patch.) I'm aware of the pending patch to improve color support on Windows. I'll check that one out as well, but it appears to be orthogonal to this one. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------3CCC0545D7E25557B23C6BE8 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Use-colors-by-default.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Use-colors-by-default.patch" RnJvbSA1OGNhNzM1OTcyODk1OWNjYzlkN2U5NmQ2ZmJlYjMyNDcxNGU5MzE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAzMSBEZWMgMjAxOSAxMToyMDoyMSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIFVzZSBjb2xvcnMgYnkgZGVmYXVsdAoKUmVmaW5lIHRoZSBzeXN0ZW0gYnkg d2hpY2ggaXQgaXMgZGVjaWRlZCB3aGV0aGVyIGNvbG9yZWQgb3V0cHV0IGl0CnVzZWQuICBC ZXNpZGVzIHRoZSBQR19DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcmV2aW91c2x5IGlu IHVzZSwgd2UKbm93IGFsc28gb2JzZXJ2ZSB0aGUgTk9fQ09MT1JTIGVudmlyb25tZW50IHZh cmlhYmxlLiAgRnVydGhlcm1vcmUsIGlmCm5laXRoZXIgb2YgdGhlc2UgYXJlIHNldCwgd2Ug Y2hlY2sgd2hldGhlciB0aGUgdGVybWluYWwgc3VwcG9ydHMKY29sb3JzIHVzaW5nIHRoZSBU RVJNIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCB1c2UgY29sb3JzCmF1dG9tYXRpY2FsbHkg aWYgc28uCgpBbHNvIGFkZCBhIGRvY3VtZW50YXRpb24gYXBwZW5kaXggdGhhdCBleHBsYWlu cyB3aG8gdGhpcyB3b3JrcyBhbmQgaG93CnRoZSBpbmRpdmlkdWFsIGNvbG9ycyBjYW4gYmUg Y29uZmlndXJlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvY29sb3Iuc2dtbCAgICB8IDEwMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvZmlsZWxp c3Quc2dtbCB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvcG9zdGdyZXMuc2dtbCB8ICAgMSArCiBz cmMvY29tbW9uL2xvZ2dpbmcuYyAgICAgICB8ICA0MSArKysrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2Mv c3JjL3NnbWwvY29sb3Iuc2dtbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb2xvci5z Z21sIGIvZG9jL3NyYy9zZ21sL2NvbG9yLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZjE2OTcyMzBlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMv c2dtbC9jb2xvci5zZ21sCkBAIC0wLDAgKzEsMTAyIEBACis8IS0tIGRvYy9zcmMvc2dtbC9j b2xvci5zZ21sIC0tPgorCis8YXBwZW5kaXggaWQ9ImNvbG9yIj4KKyA8dGl0bGU+Q29sb3Ig U3VwcG9ydDwvdGl0bGU+CisKKyA8aW5kZXh0ZXJtIHpvbmU9ImNvbG9yIj4KKyAgPHByaW1h cnk+Y29sb3I8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cGFyYT4KKyAgTW9zdCBw cm9ncmFtcyBpbiB0aGUgUG9zdGdyZVNRTCBwYWNrYWdlIGNhbiBwcm9kdWNlIGNvbG9yaXpl ZCBjb25zb2xlCisgIG91dHB1dC4gIFRoaXMgYXBwZW5kaXggZGVzY3JpYmVzIGhvdyB0aGF0 IGlzIGNvbmZpZ3VyZWQuCisgPC9wYXJhPgorCisgPHNlY3QxIGlkPSJjb2xvci13aGVuIj4K KyAgPHRpdGxlPldoZW4gQ29sb3IgaXMgVXNlZDwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBU aGUgZGVjaXNpb24gd2hldGhlciB0byB1c2UgY29sb3JpemVkIG91dHB1dCBpcyBtYWRlIGFj Y29yZGluZyB0byB0aGUKKyAgIGZvbGxvd2luZyBwcm9jZWR1cmU6CisKKyAgIDxvcmRlcmVk bGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGVudmly b25tZW50IHZhcmlhYmxlCisgICAgICA8ZW52YXI+UEdfQ09MT1I8L2VudmFyPjxpbmRleHRl cm0+PHByaW1hcnk+UEdfQ09MT1I8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICBpcyBz ZXQ6CisgICAgIDwvcGFyYT4KKworICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIHRoZSB2YWx1ZSBpcyA8bGl0ZXJhbD5h bHdheXM8L2xpdGVyYWw+LCB0aGVuIGNvbG9yIGlzIHVzZWQuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBJZiB0aGUgdmFsdWUgaXMgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4gYW5kIHRo ZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0KKyAgICAgICAgaXMgYXNzb2NpYXRlZCB3aXRoIGEg dGVybWluYWwgZGV2aWNlLCB0aGVuIGNvbG9yIGlzIHVzZWQuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBPdGhlcndpc2UsIGNvbG9yIGlzIG5vdCB1c2VkLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9saXN0aXRl bT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBJZiB0aGUgZW52aXJv bm1lbnQgdmFyaWFibGUgPGVudmFyPk5PX0NPTE9SPC9lbnZhcj4gaXMgc2V0LCB0aGVuIGNv bG9yCisgICAgICBpcyBub3QgdXNlZC4gIFNlZSA8dWxpbmsgdXJsPSJodHRwczovL25vLWNv bG9yLm9yZy8iLz4gZm9yIG1vcmUKKyAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoaXMuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8ZW52YXI+VEVSTTwv ZW52YXI+IGlzIHNldCB0byBhIHRlcm1pbmFsCisgICAgICB0eXBlIHRoYXQgaXMgcmVjb2du aXplZCB0byBzdXBwb3J0IGNvbG9yIGFuZCB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtCisg ICAgICBpcyBhc3NvY2lhdGVkIHdpdGggYSB0ZXJtaW5hbCBkZXZpY2UsIHRoZW4gY29sb3Ig aXMgdXNlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisKKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgT3RoZXJ3aXNlLCBjb2xvciBpcyBub3QgdXNlZC4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L29yZGVyZWRsaXN0PgorICA8 L3BhcmE+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0iY29sb3Itd2hpY2giPgorICA8dGl0 bGU+Q29uZmlndXJpbmcgdGhlIENvbG9yczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUg YWN0dWFsIGNvbG9ycyB0byBiZSB1c2VkIGFyZSBjb25maWd1cmVkIHVzaW5nIHRoZSBlbnZp cm9ubWVudCB2YXJpYWJsZQorICAgPGVudmFyPlBHX0NPTE9SUzwvZW52YXI+PGluZGV4dGVy bT48cHJpbWFyeT5QR19DT0xPUlM8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAobm90ZSBw bHVyYWwpLiAgVGhlIHZhbHVlIGlzIGEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YKKyAgIDxs aXRlcmFsPjxyZXBsYWNlYWJsZT5rZXk8L3JlcGxhY2VhYmxlPj08cmVwbGFjZWFibGU+dmFs dWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4KKyAgIHBhaXJzLiAgVGhlIGtleXMgc3BlY2lm eSB3aGF0IHRoZSBjb2xvciBpcyB0byBiZSB1c2VkIGZvci4gIFRoZSB2YWx1ZXMgYXJlCisg ICBTR1IgKFNlbGVjdCBHcmFwaGljIFJlbmRpdGlvbikgc3BlY2lmaWNhdGlvbnMsIHdoaWNo IGFyZSBpbnRlcnByZXRlZCBieSB0aGUKKyAgIHRlcm1pbmFsLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5lcnJvcj0wMTszMTp3 YXJuaW5nPTAxOzM1OmxvY3VzPTAxPC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDx0aXA+ CisgICA8cGFyYT4KKyAgICBUaGlzIGNvbG9yIHNwZWNpZmljYXRpb24gZm9ybWF0IGlzIGFs c28gdXNlZCBieSBvdGhlciBzb2Z0d2FyZSBwYWNrYWdlcworICAgIHN1Y2ggYXMgPHByb2R1 Y3RuYW1lPkdDQzwvcHJvZHVjdG5hbWU+LCA8cHJvZHVjdG5hbWU+R05VCisgICAgY29yZXV0 aWxzPC9wcm9kdWN0bmFtZT4sIGFuZCA8cHJvZHVjdG5hbWU+R05VIGdyZXA8L3Byb2R1Y3Ru YW1lPi4KKyAgIDwvcGFyYT4KKyAgPC90aXA+CisgPC9zZWN0MT4KKzwvYXBwZW5kaXg+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9m aWxlbGlzdC5zZ21sCmluZGV4IDNkYTIzNjVlYTkuLjEwNDNkMGY3YWIgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9maWxlbGlz dC5zZ21sCkBAIC0xNzAsNiArMTcwLDcgQEAKIAogPCFFTlRJVFkgbGltaXRzICAgICBTWVNU RU0gImxpbWl0cy5zZ21sIj4KIDwhRU5USVRZIGFjcm9ueW1zICAgU1lTVEVNICJhY3Jvbnlt cy5zZ21sIj4KKzwhRU5USVRZIGNvbG9yICAgICAgU1lTVEVNICJjb2xvci5zZ21sIj4KIAog PCFFTlRJVFkgZmVhdHVyZXMtc3VwcG9ydGVkICAgU1lTVEVNICJmZWF0dXJlcy1zdXBwb3J0 ZWQuc2dtbCI+CiA8IUVOVElUWSBmZWF0dXJlcy11bnN1cHBvcnRlZCBTWVNURU0gImZlYXR1 cmVzLXVuc3VwcG9ydGVkLnNnbWwiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Bvc3Rn cmVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMuc2dtbAppbmRleCBlNTljYmE3OTk3 Li4xZjdiZDMyODc4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMuc2dtbApAQCAtMjc4LDYgKzI3OCw3IEBAIDx0 aXRsZT5BcHBlbmRpeGVzPC90aXRsZT4KICAgJmRvY2d1aWRlOwogICAmbGltaXRzOwogICAm YWNyb255bXM7CisgICZjb2xvcjsKIAogIDwvcGFydD4KIApkaWZmIC0tZ2l0IGEvc3JjL2Nv bW1vbi9sb2dnaW5nLmMgYi9zcmMvY29tbW9uL2xvZ2dpbmcuYwppbmRleCA4OTVkYTcxNTBl Li45YjBjNjcwNDZmIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL2xvZ2dpbmcuYworKysgYi9z cmMvY29tbW9uL2xvZ2dpbmcuYwpAQCAtMzIsNiArMzIsMzcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKnNncl9sb2N1cyA9IE5VTEw7CiAjZGVmaW5lIEFOU0lfRVNDQVBFX0ZNVCAiXHgxYlsl c20iCiAjZGVmaW5lIEFOU0lfRVNDQVBFX1JFU0VUICJceDFiWzBtIgogCisKKyNkZWZpbmUg c3RyX3N0YXJ0c193aXRoKHN0ciwgc3Vic3RyKSAoc3RybmNtcChzdHIsIHN1YnN0ciwgc3Ry bGVuKHN1YnN0cikpID09IDApCisjZGVmaW5lIHN0cl9lbmRzX3dpdGgoc3RyLCBzdWJzdHIp IChzdHJjbXAoc3RyICsgc3RybGVuKHN0cikgLSBzdHJsZW4oc3Vic3RyKSwgc3Vic3RyKSA9 PSAwKQorCitzdGF0aWMgYm9vbAordGVybWluYWxfc3VwcG9ydHNfY29sb3Iodm9pZCkKK3sK Kwljb25zdCBjaGFyICp0ZXJtX2VudiA9IGdldGVudigiVEVSTSIpOworCisJaWYgKCF0ZXJt X2VudikKKwkJcmV0dXJuIGZhbHNlOworCWVsc2UgaWYgKHN0cmNtcCh0ZXJtX2VudiwgImFu c2kiKSA9PSAwKQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNlIGlmIChzdHJjbXAodGVybV9lbnYs ICJjeWd3aW4iKSA9PSAwKQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNlIGlmIChzdHJjbXAodGVy bV9lbnYsICJsaW51eCIpID09IDApCisJCXJldHVybiB0cnVlOworCWVsc2UgaWYgKHN0cl9z dGFydHNfd2l0aCh0ZXJtX2VudiwgInJ4dnQiKSkKKwkJcmV0dXJuIHRydWU7CisJZWxzZSBp ZiAoc3RyX3N0YXJ0c193aXRoKHRlcm1fZW52LCAic2NyZWVuIikpCisJCXJldHVybiB0cnVl OworCWVsc2UgaWYgKHN0cl9zdGFydHNfd2l0aCh0ZXJtX2VudiwgInh0ZXJtIikpCisJCXJl dHVybiB0cnVlOworCWVsc2UgaWYgKHN0cl9zdGFydHNfd2l0aCh0ZXJtX2VudiwgInZ0MTAw IikpCisJCXJldHVybiB0cnVlOworCWVsc2UgaWYgKHN0cl9lbmRzX3dpdGgodGVybV9lbnYs ICJjb2xvciIpKQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30K KwogLyoKICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IG91dHB1dCBoYXBw ZW5zLgogICovCkBAIC01Myw2ICs4NCwxNiBAQCBwZ19sb2dnaW5nX2luaXQoY29uc3QgY2hh ciAqYXJndjApCiAJCQkoc3RyY21wKHBnX2NvbG9yX2VudiwgImF1dG8iKSA9PSAwICYmIGlz YXR0eShmaWxlbm8oc3RkZXJyKSkpKQogCQkJbG9nX2NvbG9yID0gdHJ1ZTsKIAl9CisJZWxz ZSBpZiAoZ2V0ZW52KCJOT19DT0xPUiIpKQorCXsKKwkJLyogc2VlIGh0dHBzOi8vbm8tY29s b3Iub3JnLyAqLworCQlsb2dfY29sb3IgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJbG9n X2NvbG9yID0gaXNhdHR5KGZpbGVubyhzdGRlcnIpKSAmJgorCQkJdGVybWluYWxfc3VwcG9y dHNfY29sb3IoKTsKKwl9CiAKIAlpZiAobG9nX2NvbG9yKQogCXsKLS0gCjIuMjQuMQoK --------------3CCC0545D7E25557B23C6BE8--