From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: RFC: String interpolation Date: Mon, 12 Dec 2016 15:40:52 -0800 Organization: UCLA Computer Science Department Message-ID: <9e138d20-782d-2a56-75f8-37e3fa1885df@cs.ucla.edu> References: <51825111-ace4-f750-4077-026a3b648d27@gmail.com> <8737hwnc52.fsf@lifelogs.com> <8c117f5c-209a-97d8-79ce-a78f707f0545@gmail.com> <76c9c475-0180-aa49-3d4a-006d4e3f943c@gmail.com> <89a6a20d-e135-caad-6b31-760ab7ac90fc@cs.ucla.edu> <87fultkjte.fsf@lifelogs.com> <3ff9e7e4-aee7-191e-5e3b-4d4ac0006a1f@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C0097D0451E337A198583DD9" X-Trace: blaine.gmane.org 1481586103 26967 195.159.176.226 (12 Dec 2016 23:41:43 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 12 Dec 2016 23:41:43 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 Cc: Lars Ingebrigtsen To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Dec 13 00:41:39 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cGaDx-0005lK-6u for ged-emacs-devel@m.gmane.org; Tue, 13 Dec 2016 00:41:37 +0100 Original-Received: from localhost ([::1]:34227 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cGaDz-0002IO-On for ged-emacs-devel@m.gmane.org; Mon, 12 Dec 2016 18:41:39 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cGaDL-0001sI-Do for emacs-devel@gnu.org; Mon, 12 Dec 2016 18:41:03 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cGaDH-0001W8-Ga for emacs-devel@gnu.org; Mon, 12 Dec 2016 18:40:59 -0500 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:59630) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cGaDH-0001Vb-78 for emacs-devel@gnu.org; Mon, 12 Dec 2016 18:40:55 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7186816004E; Mon, 12 Dec 2016 15:40:53 -0800 (PST) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id XvHSIDSFLn3B; Mon, 12 Dec 2016 15:40:52 -0800 (PST) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 9106D160051; Mon, 12 Dec 2016 15:40:52 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id CsH9aB7zHGyJ; Mon, 12 Dec 2016 15:40:52 -0800 (PST) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 6FDA416004E; Mon, 12 Dec 2016 15:40:52 -0800 (PST) In-Reply-To: <3ff9e7e4-aee7-191e-5e3b-4d4ac0006a1f@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:210385 Archived-At: This is a multi-part message in MIME format. --------------C0097D0451E337A198583DD9 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is a proposed patch to implement string interpolation in 'format' and friends. It uses gotos; although I could rewrite it to use flags instead, that would bloat the patch considerably and the surrounding code is already goto-plagued. It needs documentation of course (which will be more work than the code, I expect ...). --------------C0097D0451E337A198583DD9 Content-Type: application/x-patch; name="0001-Add-string-interpolation-to-format.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-string-interpolation-to-format.patch" RnJvbSBhZmU1MzMzYTM3MjA0ZDZmZWY4MDk0NDkwOTVlY2M4ZGZkMzZiNzMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDEyIERlYyAyMDE2IDE1OjM0OjIyIC0wODAwClN1YmplY3Q6IFtQUk9Q T1NFRF0gQWRkIHN0cmluZyBpbnRlcnBvbGF0aW9uIHRvICdmb3JtYXQnCgpUaGlzIHN0aWxs IG5lZWRzIHRvIGJlIGRvY3VtZW50ZWQuCiogc3JjL2VkaXRmbnMuYyAoc3R5bGVkX2Zvcm1h dCk6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZm9ybWF0cyBhbmQKYXJndW1lbnRzLCBzbyBsb25n IGFzIGVhY2ggZWFybHkgZm9ybWF0IGNvbnRhaW5zIG9ubHkgb25lCmNvbnZlcnNpb24gc3Bl Y2lmaWNpYXRpb24gYXQgdGhlIGVuZCwgZm9sbG93ZWQgYnkgYSAnJScKY29udGludWF0aW9u IG1hcmtlciBzbyB0aGF0IHRoaXMgaXMgYSBwdXJlIGV4dGVuc2lvbiB0byBFbWFjcwpiZWhh dmlvci4gIFNlZSB0aGUgdGhyZWFkIHJvb3RlZCBoZXJlOgpodHRwOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNi0xMi9tc2cwMDQ5My5odG1sCi0tLQog c3JjL2VkaXRmbnMuYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjAgaW5zZXJ0aW9u cygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2VkaXRmbnMuYyBiL3Ny Yy9lZGl0Zm5zLmMKaW5kZXggNmVhOGNiYS4uN2NmZmQ4YSAxMDA2NDQKLS0tIGEvc3JjL2Vk aXRmbnMuYworKysgYi9zcmMvZWRpdGZucy5jCkBAIC0zOTY4LDE1ICszOTY4LDQxIEBAIHN0 eWxlZF9mb3JtYXQgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGJvb2wg bWVzc2FnZSkKICAgICBib29sX2JmIGludGVydmFscyA6IDE7CiAgIH0gKmluZm87CiAKKyAg cHRyZGlmZl90IGZvcm1hdF9pbmRleCA9IDA7CiAgIENIRUNLX1NUUklORyAoYXJnc1swXSk7 Ci0gIGNoYXIgKmZvcm1hdF9zdGFydCA9IFNTREFUQSAoYXJnc1swXSk7Ci0gIHB0cmRpZmZf dCBmb3JtYXRsZW4gPSBTQllURVMgKGFyZ3NbMF0pOworICBjaGFyICpmb3JtYXRfc3RhcnQ7 CisKKyAgLyogQ29tcHV0ZSBhIGJvdW5kIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRl cyBvZiBhbnkgZm9ybWF0IHN0cmluZy4KKworICAgICBBbHNvLCB0cnkgdG8gZGV0ZXJtaW5l IHdoZXRoZXIgdGhlIHJlc3VsdCBzaG91bGQgYmUgbXVsdGlieXRlLgorICAgICBUaGlzIGlz IG5vdCBhbHdheXMgcmlnaHQ7IHNvbWV0aW1lcyB0aGUgcmVzdWx0IG5lZWRzIHRvIGJlCisg ICAgIG11bHRpYnl0ZSBiZWNhdXNlIG9mIGFuIG9iamVjdCB0aGF0IHdlIHdpbGwgcGFzcyB0 aHJvdWdoIHByaW4xLAorICAgICBvciBiZWNhdXNlIGEgZ3JhdmUgYWNjZW50IG9yIGFwb3N0 cm9waGUgaXMgcmVxdW90ZWQsIGFuZCBpbiB0aGF0CisgICAgIGNhc2UsIHdlIHdvbid0IGtu b3cgaXQgaGVyZS4gICovCisgIHB0cmRpZmZfdCBmb3JtYXRsZW5fYm91bmQgPSAwOworICBi b29sIGRlZmluaXRlbHlfZm91bmRfYWxsX2Zvcm1hdHMgPSBmYWxzZTsKKyAgYm9vbCBtdWx0 aWJ5dGUgPSBmYWxzZTsKKyAgZm9yIChwdHJkaWZmX3QgaSA9IDA7IGkgPCBuYXJnczsgaSsr KQorICAgIGlmIChTVFJJTkdQIChhcmdzW2ldKSkKKyAgICAgIHsKKwlpZiAoU1RSSU5HX01V TFRJQllURSAoYXJnc1tpXSkpCisJICBtdWx0aWJ5dGUgPSB0cnVlOworCWlmICghZGVmaW5p dGVseV9mb3VuZF9hbGxfZm9ybWF0cykKKwkgIHsKKwkgICAgZm9ybWF0bGVuX2JvdW5kID0g bWF4IChmb3JtYXRsZW5fYm91bmQsIFNCWVRFUyAoYXJnc1tpXSkpOworCSAgICBkZWZpbml0 ZWx5X2ZvdW5kX2FsbF9mb3JtYXRzCisJICAgICAgPSAoU0JZVEVTIChhcmdzW2ldKSA9PSAw CisJCSB8fCBTUkVGIChhcmdzW2ldLCBTQllURVMgKGFyZ3NbaV0pIC0gMSkgIT0gJyUnKTsK KwkgIH0KKwlpZiAobXVsdGlieXRlICYmIGRlZmluaXRlbHlfZm91bmRfYWxsX2Zvcm1hdHMp CisJICBicmVhazsKKyAgICAgIH0KIAogICAvKiBBbGxvY2F0ZSB0aGUgaW5mbyBhbmQgZGlz Y2FyZGVkIHRhYmxlcy4gICovCiAgIHB0cmRpZmZfdCBhbGxvY2Ffc2l6ZTsKICAgaWYgKElO VF9NVUxUSVBMWV9XUkFQViAobmFyZ3MsIHNpemVvZiAqaW5mbywgJmFsbG9jYV9zaXplKQog ICAgICAgfHwgSU5UX0FERF9XUkFQViAoc2l6ZW9mICppbmZvLCBhbGxvY2Ffc2l6ZSwgJmFs bG9jYV9zaXplKQotICAgICAgfHwgSU5UX0FERF9XUkFQViAoZm9ybWF0bGVuLCBhbGxvY2Ff c2l6ZSwgJmFsbG9jYV9zaXplKQorICAgICAgfHwgSU5UX0FERF9XUkFQViAoZm9ybWF0bGVu X2JvdW5kLCBhbGxvY2Ffc2l6ZSwgJmFsbG9jYV9zaXplKQogICAgICAgfHwgU0laRV9NQVgg PCBhbGxvY2Ffc2l6ZSkKICAgICBtZW1vcnlfZnVsbCAoU0laRV9NQVgpOwogICAvKiBpbmZv WzBdIGlzIHVudXNlZC4gIFVudXNlZCBlbGVtZW50cyBoYXZlIC0xIGZvciBzdGFydC4gICov CkBAIC0zOTg5LDIwICs0MDE1LDggQEAgc3R5bGVkX2Zvcm1hdCAocHRyZGlmZl90IG5hcmdz LCBMaXNwX09iamVjdCAqYXJncywgYm9vbCBtZXNzYWdlKQogICAgICBJdCBpcyAyIGlmIGJ5 dGUgSSB3YXMgbm90IHRoZSBmaXJzdCBieXRlIG9mIGl0cyBjaGFyYWN0ZXIuICAqLwogICBj aGFyICpkaXNjYXJkZWQgPSAoY2hhciAqKSAmaW5mb1tuYXJncyArIDFdOwogCi0gIC8qIFRy eSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcmVzdWx0IHNob3VsZCBiZSBtdWx0aWJ5dGUu Ci0gICAgIFRoaXMgaXMgbm90IGFsd2F5cyByaWdodDsgc29tZXRpbWVzIHRoZSByZXN1bHQg bmVlZHMgdG8gYmUgbXVsdGlieXRlCi0gICAgIGJlY2F1c2Ugb2YgYW4gb2JqZWN0IHRoYXQg d2Ugd2lsbCBwYXNzIHRocm91Z2ggcHJpbjEuCi0gICAgIG9yIGJlY2F1c2UgYSBncmF2ZSBh Y2NlbnQgb3IgYXBvc3Ryb3BoZSBpcyByZXF1b3RlZCwKLSAgICAgYW5kIGluIHRoYXQgY2Fz ZSwgd2Ugd29uJ3Qga25vdyBpdCBoZXJlLiAgKi8KLQogICAvKiBUcnVlIGlmIHRoZSBmb3Jt YXQgaXMgbXVsdGlieXRlLiAgKi8KLSAgYm9vbCBtdWx0aWJ5dGVfZm9ybWF0ID0gU1RSSU5H X01VTFRJQllURSAoYXJnc1swXSk7Ci0gIC8qIFRydWUgaWYgdGhlIG91dHB1dCBzaG91bGQg YmUgYSBtdWx0aWJ5dGUgc3RyaW5nLAotICAgICB3aGljaCBpcyB0cnVlIGlmIGFueSBvZiB0 aGUgaW5wdXRzIGlzIG9uZS4gICovCi0gIGJvb2wgbXVsdGlieXRlID0gbXVsdGlieXRlX2Zv cm1hdDsKLSAgZm9yIChwdHJkaWZmX3QgaSA9IDE7ICFtdWx0aWJ5dGUgJiYgaSA8IG5hcmdz OyBpKyspCi0gICAgaWYgKFNUUklOR1AgKGFyZ3NbaV0pICYmIFNUUklOR19NVUxUSUJZVEUg KGFyZ3NbaV0pKQotICAgICAgbXVsdGlieXRlID0gdHJ1ZTsKKyAgYm9vbCBtdWx0aWJ5dGVf Zm9ybWF0OwogCiAgIGludCBxdW90aW5nX3N0eWxlID0gbWVzc2FnZSA/IHRleHRfcXVvdGlu Z19zdHlsZSAoKSA6IC0xOwogCkBAIC00MDEzLDExICs0MDI3LDE1IEBAIHN0eWxlZF9mb3Jt YXQgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGJvb2wgbWVzc2FnZSkK ICAgcCA9IGJ1ZjsKICAgbmNoYXJzID0gMDsKICAgbiA9IDA7CisgIG1heWJlX2NvbWJpbmVf Ynl0ZSA9IGZhbHNlOworCisgIC8qIEp1bXAgYmFjayB0byBoZXJlIHdoZW4gZmluZGluZyB0 aGUgbmV4dCBmb3JtYXQuICAqLworIG5leHRfZm9ybWF0OgogCiAgIC8qIFNjYW4gdGhlIGZv cm1hdCBhbmQgc3RvcmUgcmVzdWx0IGluIEJVRi4gICovCi0gIGZvcm1hdCA9IGZvcm1hdF9z dGFydDsKLSAgZW5kID0gZm9ybWF0ICsgZm9ybWF0bGVuOwotICBtYXliZV9jb21iaW5lX2J5 dGUgPSBmYWxzZTsKKyAgZm9ybWF0ID0gZm9ybWF0X3N0YXJ0ID0gU1NEQVRBIChhcmdzW2Zv cm1hdF9pbmRleF0pOworICBlbmQgPSBmb3JtYXQgKyBTQllURVMgKGFyZ3NbZm9ybWF0X2lu ZGV4XSk7CisgIG11bHRpYnl0ZV9mb3JtYXQgPSBTVFJJTkdfTVVMVElCWVRFIChhcmdzW2Zv cm1hdF9pbmRleF0pOwogCiAgIHdoaWxlIChmb3JtYXQgIT0gZW5kKQogICAgIHsKQEAgLTQw MjYsMjEgKzQwNDQsMjMgQEAgc3R5bGVkX2Zvcm1hdCAocHRyZGlmZl90IG5hcmdzLCBMaXNw X09iamVjdCAqYXJncywgYm9vbCBtZXNzYWdlKQogICAgICAgY2hhciAqZm9ybWF0MCA9IGZv cm1hdDsKICAgICAgIGNoYXIgY29uc3QgKmNvbnZzcmMgPSBmb3JtYXQ7CiAgICAgICB1bnNp Z25lZCBjaGFyIGZvcm1hdF9jaGFyID0gKmZvcm1hdCsrOworICAgICAgcHRyZGlmZl90IHVz ZWQ7CiAKICAgICAgIC8qIEJ5dGVzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIG91dHB1dCBv ZiB0aGlzIGNvbnZlcnNpb24uICAqLwogICAgICAgcHRyZGlmZl90IGNvbnZieXRlcyA9IDE7 CiAKICAgICAgIGlmIChmb3JtYXRfY2hhciA9PSAnJScpCiAJewotCSAgLyogR2VuZXJhbCBm b3JtYXQgc3BlY2lmaWNhdGlvbnMgbG9vayBsaWtlCisJICAvKiBHZW5lcmFsIGNvbnZlcnNp b24gc3BlY2lmaWNhdGlvbnMgbG9vayBsaWtlCiAKLQkgICAgICclJyBbZmxhZ3NdIFtmaWVs ZC13aWR0aF0gW3ByZWNpc2lvbl0gZm9ybWF0CisJICAgICAnJScgW2ZsYWdzXSBbZmllbGQt d2lkdGhdIFtwcmVjaXNpb25dIGZvcm1hdCBbY29udGludWVdCiAKIAkgICAgIHdoZXJlCiAK IAkgICAgIGZsYWdzIDo6PSBbLSswIyBdKwogCSAgICAgZmllbGQtd2lkdGggOjo9IFswLTld KwogCSAgICAgcHJlY2lzaW9uIDo6PSAnLicgWzAtOV0qCisJICAgICBjb250aW51ZSA6Oj0g JyUnIChvbmx5IGFmdGVyIGZpcnN0IHNwZWMgYW5kIGF0IHN0cmluZyBlbmQpCiAKIAkgICAg IElmIGEgZmllbGQtd2lkdGggaXMgc3BlY2lmaWVkLCBpdCBzcGVjaWZpZXMgdG8gd2hpY2gg d2lkdGgKIAkgICAgIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHBhZGRlZCB3aXRoIGJsYW5rcywg aWYgdGhlIG91dHB1dApAQCAtNDA0OCw3ICs0MDY4LDExIEBAIHN0eWxlZF9mb3JtYXQgKHB0 cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGJvb2wgbWVzc2FnZSkKIAogCSAg ICAgSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIg b2YKIAkgICAgIGRpZ2l0cyB0byBwcmludCBhZnRlciB0aGUgJy4nIGZvciBmbG9hdHMsIG9y IHRoZSBtYXguCi0JICAgICBudW1iZXIgb2YgY2hhcnMgdG8gcHJpbnQgZnJvbSBhIHN0cmlu Zy4gICovCisJICAgICBudW1iZXIgb2YgY2hhcnMgdG8gcHJpbnQgZnJvbSBhIHN0cmluZy4K KworCSAgICAgSWYgYSBmb3JtYXQgc3RyaW5nJ3MgZmlyc3QgY29udmVyc2lvbiBzcGVjIGlz IGZvbGxvd2VkIGJ5CisJICAgICAnJScgYW5kIHRoZW4gdGhlIHN0cmluZyBlbmQsIHRoZSBh cmd1bWVudCBhZnRlciB0aGUKKwkgICAgIGZvcm1hdHRlZCB2YWx1ZSBjb250aW51ZXMgdGhl IGZvcm1hdC4gICovCiAKIAkgIGJvb2wgbWludXNfZmxhZyA9IGZhbHNlOwogCSAgYm9vbCAg cGx1c19mbGFnID0gZmFsc2U7CkBAIC00MjMzLDcgKzQyNTcsNyBAQCBzdHlsZWRfZm9ybWF0 IChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBib29sIG1lc3NhZ2UpCiAJ CSAgaWYgKHN0cmluZ19pbnRlcnZhbHMgKGFyZ3Nbbl0pKQogCQkgICAgaW5mb1tuXS5pbnRl cnZhbHMgPSBhcmdfaW50ZXJ2YWxzID0gdHJ1ZTsKIAotCQkgIGNvbnRpbnVlOworCQkgIGdv dG8gbmV4dF9mb3JtYXRfY2hlY2s7CiAJCX0KIAkgICAgfQogCSAgZWxzZSBpZiAoISAoY29u dmVyc2lvbiA9PSAnYycgfHwgY29udmVyc2lvbiA9PSAnZCcKQEAgLTQ0NzcsNyArNDUwMSw3 IEBAIHN0eWxlZF9mb3JtYXQgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3Ms IGJvb2wgbWVzc2FnZSkKIAkJICAgIH0KIAkJICBpbmZvW25dLmVuZCA9IG5jaGFyczsKIAot CQkgIGNvbnRpbnVlOworCQkgIGdvdG8gbmV4dF9mb3JtYXRfY2hlY2s7CiAJCX0KIAkgICAg fQogCX0KQEAgLTQ1MzgsNyArNDU2Miw3IEBAIHN0eWxlZF9mb3JtYXQgKHB0cmRpZmZfdCBu YXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGJvb2wgbWVzc2FnZSkKIAkgY2hhcmFjdGVyLiAg Q09OVkJZVEVTIHNheXMgaG93IG11Y2ggcm9vbSBpcyBuZWVkZWQuICBBbGxvY2F0ZQogCSBl bm91Z2ggcm9vbSAoYW5kIHRoZW4gc29tZSkgYW5kIGRvIGl0IGFnYWluLiAgKi8KIAotICAg ICAgcHRyZGlmZl90IHVzZWQgPSBwIC0gYnVmOworICAgICAgdXNlZCA9IHAgLSBidWY7CiAg ICAgICBpZiAobWF4X2J1ZnNpemUgLSB1c2VkIDwgY29udmJ5dGVzKQogCXN0cmluZ19vdmVy ZmxvdyAoKTsKICAgICAgIGJ1ZnNpemUgPSB1c2VkICsgY29udmJ5dGVzOwpAQCAtNDU2MSw2 ICs0NTg1LDE3IEBAIHN0eWxlZF9mb3JtYXQgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmpl Y3QgKmFyZ3MsIGJvb2wgbWVzc2FnZSkKICAgICAgIHAgPSBidWYgKyB1c2VkOwogICAgICAg Zm9ybWF0ID0gZm9ybWF0MDsKICAgICAgIG4gPSBuMDsKKyAgICAgIGNvbnRpbnVlOworCisg ICAgbmV4dF9mb3JtYXRfY2hlY2s6CisgICAgICBpZiAoZm9ybWF0ICsgMSA9PSBlbmQgJiYg KmZvcm1hdCA9PSAnJScKKwkgICYmIG4gPT0gZm9ybWF0X2luZGV4ICsgMSAmJiBuICsgMSA8 IG5hcmdzKQorCXsKKwkgIG4rKzsKKwkgIENIRUNLX1NUUklORyAoYXJnc1tuXSk7CisJICBm b3JtYXRfaW5kZXggPSBuOworCSAgZ290byBuZXh0X2Zvcm1hdDsKKwl9CiAgICAgfQogCiAg IGlmIChidWZzaXplIDwgcCAtIGJ1ZikKLS0gCjIuNy40Cgo= --------------C0097D0451E337A198583DD9--