From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.org!.POSTED!not-for-mail
From: Paul Eggert <eggert@cs.ucla.edu>
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> <m34m2bj2m2.fsf@gnus.org>
	<8c117f5c-209a-97d8-79ce-a78f707f0545@gmail.com>
	<m3wpf7hjzf.fsf@gnus.org>
	<76c9c475-0180-aa49-3d4a-006d4e3f943c@gmail.com>
	<m3oa0ifgvd.fsf@gnus.org>
	<m2k2b6rxaj.fsf@gmail.com> <m38trmdun6.fsf@gnus.org>
	<jwvr35dub31.fsf-monnier+gmane.emacs.devel@gnu.org>
	<m3r35dcwht.fsf@gnus.org>
	<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 <larsi@gnus.org>
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: <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>
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 <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>)
	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 <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>)
	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 <eggert@cs.ucla.edu>) 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 <eggert@cs.ucla.edu>) 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 <eggert@cs.ucla.edu>) 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." <emacs-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-devel>,
	<mailto:emacs-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/archive/html/emacs-devel/>
List-Post: <mailto:emacs-devel@gnu.org>
List-Help: <mailto:emacs-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-devel>,
	<mailto:emacs-devel-request@gnu.org?subject=subscribe>
Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org
Original-Sender: "Emacs-devel" <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>
Xref: news.gmane.org gmane.emacs.devel:210385
Archived-At: <http://permalink.gmane.org/gmane.emacs.devel/210385>

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--