From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Philipp Stephani Newsgroups: gmane.emacs.devel Subject: Re: i18n/l10n summary Date: Wed, 31 May 2017 22:18:11 +0000 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11492b2e555f600550d94c42" X-Trace: blaine.gmane.org 1496269477 27053 195.159.176.226 (31 May 2017 22:24:37 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 31 May 2017 22:24:37 +0000 (UTC) To: Jean-Christophe Helary , emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jun 01 00:24:32 2017 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 1dGC2Z-0006jd-CH for ged-emacs-devel@m.gmane.org; Thu, 01 Jun 2017 00:24:31 +0200 Original-Received: from localhost ([::1]:34157 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGC2e-0004Xt-Rb for ged-emacs-devel@m.gmane.org; Wed, 31 May 2017 18:24:36 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGBwh-00086F-Ar for emacs-devel@gnu.org; Wed, 31 May 2017 18:18:29 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGBwf-0003zD-4w for emacs-devel@gnu.org; Wed, 31 May 2017 18:18:27 -0400 Original-Received: from mail-oi0-x233.google.com ([2607:f8b0:4003:c06::233]:33892) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dGBwe-0003xK-SN for emacs-devel@gnu.org; Wed, 31 May 2017 18:18:25 -0400 Original-Received: by mail-oi0-x233.google.com with SMTP id o65so8669862oif.1 for ; Wed, 31 May 2017 15:18:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=DAwEzBCNkAhzbO/k0GgNmQbxJr9zQs4V6AwNeVnxHw8=; b=pWyvsGkuKFvbq39O5G2z2lAiMJy9BP6tBQKlPVzntvrC0m93izKdBY2o5WQxYTauUh Q/DgiO4bQWHZqI5TbCeU0TphNcypFxicu1zh4tTulj0SkXtUeWKmXYoxqsBjikYK1yGD 9JatxgHgmykwLlbKhid1fd8WwdiRdT2YGEqJrLbiMKAj03VHr8JxRfHyt26DJOjKqD54 5KbDtGt8XJfTIpv2miYWtjK6ot6QMY5G0MjmUA/iUpmsnUTsr1xbnpnLYQev+WxqqxHW jYM2z6HTKFq1ehFyZ6uZCUFnoux8Iw1RbpIQU+3OBKBF8Y816p+X9/+OYsnmDzna58OQ gv6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=DAwEzBCNkAhzbO/k0GgNmQbxJr9zQs4V6AwNeVnxHw8=; b=AKRs5KLSXec1gcVK0sX5OXGnnsEYW75Es5oXLs9aKbgDgPTXVsrPeOgCxs1dSZDbRb oNDA9TWABQYxJVM0eaIK/9QvH55sF+vmEL3hdoJGkMgyD2RPf9gha1LqcKCx7CGHsF5F V3zTYUnhSsho6jNqtIQAbdUHUY9iZuuYf6E6jIIL7IBeTOxo8rLjCb3tnmpvS8bus8lh 452jbmBszEDCubvWtbcfIiN1d8q4Puz1s09RX32pRbWiTsWPpwZHvyCXHG3ixUD06hck KgH8A/ZXltS1BhHm6wap13jsgdiWp+7zwo9scQOYYGkkJpfS1PdhSQ/oaZjPcFkk/ux3 zDTw== X-Gm-Message-State: AODbwcBjDaPGsSu/WCJU3jeI1BdD5i1n6WvypNkgFi3AUqIE+6Zy2xx8 v2fzeAtETpvvT+7Ql4AUpsKi72Fnbg== X-Received: by 10.157.61.180 with SMTP id l49mr14852471otc.80.1496269102275; Wed, 31 May 2017 15:18:22 -0700 (PDT) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4003:c06::233 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:215377 Archived-At: --001a11492b2e555f600550d94c42 Content-Type: multipart/alternative; boundary="001a11492b2e555f5a0550d94c40" --001a11492b2e555f5a0550d94c40 Content-Type: text/plain; charset="UTF-8" Jean-Christophe Helary schrieb am So., 28. Mai 2017 um 07:29 Uhr: > The discussion so far seems to point at modifying 'message' and the likes > so that developers don't have to bother with any l10n mechanism on their > part (besides for writing clean strings). > > ==================================================== > On May 27, 2017, at 10:52, Jean-Christophe Helary < > jean.christophe.helary@gmail.com> wrote: > > My very uninformed idea is that we need an independent function that > handles the preferred language check and the catalog parsing based on a > key, and all the string displaying functions (message etc) would be > redefined to call that function when a non default preferred langage > (currently English) is detected. > > > On May 27, 2017, at 16:43, Eli Zaretskii wrote: > > Yes but from what I've seen in package/el, a lot of translatable texts are > not displayed with "message". Some > use "error", some use other mechanisms. > > > Internally, they all boil down to a small set of C functions, which is > where we should make these changes. > ==================================================== > > Since it's C, I'm not going to be able to contribute to that before I > understand the language, and the function definitions. I guess it's time I > open that K&R that's been on my shelves forever... > One small aspect would be to implement field numbers for `format' so that argument indices can be explicitly specified. That is probably quite important because the word order is different between languages, but it's also useful in other situations (e.g. when repeating an argument). I've implemented this in the attached patch. --001a11492b2e555f5a0550d94c40 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Jean-C= hristophe Helary <je= an.christophe.helary@gmail.com> schrieb am So., 28. Mai 2017 um 07:2= 9=C2=A0Uhr:
The discussion so far seems to point at modifying 'message= ' and the likes so that developers don't have to bother=C2=A0with a= ny l10n mechanism on their part (besides for writing clean strings).
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D
On May 27, 2017, at 10:52, Jean-Christophe Helary <jean.christo= phe.helary@gmail.com> wrote:

My very uninformed idea is that we need an indep= endent function that handles the=C2=A0preferred language check and=C2=A0the= catalog parsing based on a key, and all the string=C2=A0displaying functio= ns (message etc) would be redefined to call=C2=A0that function when a=C2=A0= non default preferred langage (currently English) is detected.

On May 27, 2017, at 16:43, Eli Zaretskii <eliz@gnu.org> wrote:

<= blockquote type=3D"cite" style=3D"font-family:Menlo-Regular">Yes but from w= hat I've seen in package/el, a lot of translatable texts are not=C2=A0d= isplayed with "message". Some
use "error", some use = other mechanisms.

Internally, they all boil down to a s= mall set of C functions, which is
where we should make these changes.=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D

Since it's C, I'm not going to be able to contribu= te to that before I understand the language, and the function definitions. = I guess it's time I open that K&R that's been on my shelves for= ever...
One small aspect would be to implement field numbers for `form= at' so that argument indices can be explicitly specified. That is proba= bly quite important because the word order is different between languages, = but it's also useful in other situations (e.g. when repeating an argume= nt). I've implemented this in the attached patch.=C2=A0
--001a11492b2e555f5a0550d94c40-- --001a11492b2e555f600550d94c42 Content-Type: text/plain; charset="US-ASCII"; name="0001-Implement-field-numbers-in-format-strings.txt" Content-Disposition: attachment; filename="0001-Implement-field-numbers-in-format-strings.txt" Content-Transfer-Encoding: base64 Content-ID: <15c609650b5eb06746a1> X-Attachment-Id: 15c609650b5eb06746a1 RnJvbSAzOWEwZjc0MzliNmNkODA0YzQ5ZWE5MWI0MTJiMGFkYjExODUxY2RkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFRodSwgMSBKdW4gMjAxNyAwMDowOTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxl bWVudCBmaWVsZCBudW1iZXJzIGluIGZvcm1hdCBzdHJpbmdzCgpBIGZpZWxkIG51bWJlciBleHBs aWNpdGx5IHNwZWNpZmllcyB0aGUgYXJndW1lbnQgdG8gYmUgZm9ybWF0dGVkLgpUaGlzIGlzIGVz cGVjaWFsbHkgaW1wb3J0YW50IGZvciBwb3RlbnRpYWwgbG9jYWxpemF0aW9uIHdvcmssIHNpbmNl CmdyYW1tYXJzIG9mIHZhcmlvdXMgbGFuZ3VhZ2VzIGRpY3RhdGUgZGlmZmVyZW50IHdvcmQgb3Jk ZXJzLgoKKiBzcmMvZWRpdGZucy5jIChGZm9ybWF0KTogVXBkYXRlIGRvY3VtZW50YXRpb24uCihz dHlsZWRfZm9ybWF0KTogSW1wbGVtZW50IGZpZWxkIG51bWJlcnMuCgoqIGRvYy9saXNwcmVmL3N0 cmluZ3MudGV4aSAoRm9ybWF0dGluZyBTdHJpbmdzKTogRG9jdW1lbnQgZmllbGQgbnVtYmVycy4K CiogbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVsIChieXRlLWNvbXBpbGUtZm9ybWF0LXdhcm4p OiBBZGFwdC4KCiogdGVzdC9zcmMvZWRpdGZucy10ZXN0cy5lbCAoZm9ybWF0LXdpdGgtZmllbGQp OiBOZXcgdW5pdCB0ZXN0LgotLS0KIGRvYy9saXNwcmVmL3N0cmluZ3MudGV4aSAgICB8IDMxICsr KysrKysrKysrKysrKysrKysrKystLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgICB8ICAz ICsrKwogbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVsIHwgMTEgKysrKysrLS0tCiBzcmMvZWRp dGZucy5jICAgICAgICAgICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KIHRlc3Qvc3JjL2VkaXRmbnMtdGVzdHMuZWwgICB8IDE4ICsrKysrKysr KysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvc3RyaW5ncy50ZXhpIGIvZG9jL2xpc3ByZWYv c3RyaW5ncy50ZXhpCmluZGV4IDk0MzZhOTZlYWQuLjliZjUyZjI0MTQgMTAwNjQ0Ci0tLSBhL2Rv Yy9saXNwcmVmL3N0cmluZ3MudGV4aQorKysgYi9kb2MvbGlzcHJlZi9zdHJpbmdzLnRleGkKQEAg LTg2NCw3ICs4NjQsOCBAQCBGb3JtYXR0aW5nIFN0cmluZ3MKICAgKGZvcm1hdCAiJXMiIEB2YXJ7 YXJiaXRyYXJ5LXN0cmluZ30pCiBAZW5kIGV4YW1wbGUKIAotICBJZiBAdmFye3N0cmluZ30gY29u dGFpbnMgbW9yZSB0aGFuIG9uZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgdGhlCisgIElmIEB2YXJ7 c3RyaW5nfSBjb250YWlucyBtb3JlIHRoYW4gb25lIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGFuZCBu b25lCitvZiB0aGUgZm9ybWF0IHNwZWNpZmljYXRpb25zIGNvbnRhaW4gYW4gZXhwbGljaXQgZmll bGQgbnVtYmVyLCB0aGUKIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBjb3JyZXNwb25kIHRvIHN1Y2Nl c3NpdmUgdmFsdWVzIGZyb20KIEB2YXJ7b2JqZWN0c30uICBUaHVzLCB0aGUgZmlyc3QgZm9ybWF0 IHNwZWNpZmljYXRpb24gaW4gQHZhcntzdHJpbmd9CiB1c2VzIHRoZSBmaXJzdCBzdWNoIHZhbHVl LCB0aGUgc2Vjb25kIGZvcm1hdCBzcGVjaWZpY2F0aW9uIHVzZXMgdGhlCkBAIC05NjEsNiArOTYy LDI1IEBAIEZvcm1hdHRpbmcgU3RyaW5ncwogQGVuZCBncm91cAogQGVuZCBleGFtcGxlCiAKK0Bj aW5kZXggZmllbGQgbnVtYmVyCisgIEEgc3BlY2lmaWNhdGlvbiBjYW4gaGF2ZSBhIEBkZm57Zmll bGQgbnVtYmVyfSwgd2hpY2ggaXMgYSBkZWNpbWFsCitudW1iZXIgYWZ0ZXIgdGhlIGluaXRpYWwg QHNhbXB7JX0sIGZvbGxvd2VkIGJ5IGEgbGl0ZXJhbCBkb2xsYXIgc2lnbgorQHNhbXB7JH0uICBJ ZiB5b3UgcHJvdmlkZSBhIGZpZWxkIG51bWVyLCB0aGVuIHRoZSBhcmd1bWVudCB0byBiZQorcHJp bnRlZCBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gZmllbGQgbnVtYmVyIGluc3RlYWQgb2YgdGhl IG5leHQKK2FyZ3VtZW50LiAgRmllbGQgbnVtYmVycyBzdGFydCBhdCAxLgorCitZb3UgY2FuIG1p eCBzcGVjaWZpY2F0aW9ucyB3aXRoIGFuZCB3aXRob3V0IGZpZWxkIG51bWJlcnMuICBBCitzcGVj aWZpY2F0aW9uIHdpdGhvdXQgYSBmaWVsZCBudW1iZXIgdGhhdCBmb2xsb3dzIGEgc3BlY2lmaWNh dGlvbiB3aXRoCithIGZpZWxkIG51bWJlciB3aWxsIGNvbnZlcnQgdGhlIGFyZ3VtZW50IGFmdGVy IHRoZSBvbmUgc3BlY2lmaWVkIGJ5Cit0aGUgZmllbGQgbnVtYmVyOgorCitAZXhhbXBsZQorKGZv cm1hdCAiRmlyc3QgYXJndW1lbnQgJTIkcywgdGhlbiAlcywgdGhlbiAlMSRzIiAxIDIgMykKKyAg ICAgQHJlc3VsdHt9ICJGaXJzdCBhcmd1bWVudCAyLCB0aGVuIDMsIHRoZW4gMSIKK0BlbmQgZXhh bXBsZQorCitZb3UgY2FuJ3QgdXNlIGZpZWxkIG51bWJlcnMgaW4gYSBAc2FtcHslJX0gc3BlY2lm aWNhdGlvbi4KKwogQGNpbmRleCBmaWVsZCB3aWR0aAogQGNpbmRleCBwYWRkaW5nCiAgIEEgc3Bl Y2lmaWNhdGlvbiBjYW4gaGF2ZSBhIEBkZm57d2lkdGh9LCB3aGljaCBpcyBhIGRlY2ltYWwgbnVt YmVyCkBAIC05OTYsOSArMTAxNiwxNCBAQCBGb3JtYXR0aW5nIFN0cmluZ3MKIEBlbmQgZ3JvdXAK IEBlbmQgZXhhbXBsZQogCitJZiB5b3Ugd2FudCB0byB1c2UgYm90aCBhIGZpZWxkIG51bWJlciBh bmQgYSB3aWR0aCwgcGxhY2UgdGhlIGZpZWxkCitudW1iZXIgYmVmb3JlIHRoZSB3aWR0aC4gIEZv ciBleGFtcGxlLCBpbiBAc2FtcHslMiQ3c30sIEBzYW1wezJ9IGlzCit0aGUgZmllbGQgbnVtYmVy IGFuZCBAc2FtcHs3fSBpcyB0aGUgd2lkdGguCisKIEBjaW5kZXggZmxhZ3MgaW4gZm9ybWF0IHNw ZWNpZmljYXRpb25zCi0gIEltbWVkaWF0ZWx5IGFmdGVyIHRoZSBAc2FtcHslfSBhbmQgYmVmb3Jl IHRoZSBvcHRpb25hbCB3aWR0aAotc3BlY2lmaWVyLCB5b3UgY2FuIGFsc28gcHV0IGNlcnRhaW4g QGRmbntmbGFnIGNoYXJhY3RlcnN9LgorICBBZnRlciB0aGUgQHNhbXB7JX0gYW5kIGJlZm9yZSB0 aGUgb3B0aW9uYWwgd2lkdGggc3BlY2lmaWVyLCB5b3UgY2FuCithbHNvIHB1dCBjZXJ0YWluIEBk Zm57ZmxhZyBjaGFyYWN0ZXJzfS4gIFRoZSBmbGFnIGNoYXJhY3RlcnMgbmVlZCB0bworY29tZSBk aXJlY3RseSBhZnRlciBhIHBvdGVudGlhbCBmaWVsZCBudW1iZXIuCiAKICAgVGhlIGZsYWcgQHNh bXB7K30gaW5zZXJ0cyBhIHBsdXMgc2lnbiBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIsIHNvCiB0 aGF0IGl0IGFsd2F5cyBoYXMgYSBzaWduLiAgQSBzcGFjZSBjaGFyYWN0ZXIgYXMgZmxhZyBpbnNl cnRzIGEgc3BhY2UKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggNDNlNzg5 NzEyMC4uZTMxYzBjN2NiMCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAg LTM2NCw2ICszNjQsOSBAQCBsYXJnZSBpbnRlZ2VycyBmcm9tIGJlaW5nIGRpc3BsYXllZCBhcyBj aGFyYWN0ZXJzLgogKiogVHdvIG5ldyBjb21tYW5kcyBmb3IgZmluZGluZyB0aGUgc291cmNlIGNv ZGUgb2YgRW1hY3MgTGlzcAogbGlicmFyaWVzOiAnZmluZC1saWJyYXJ5LW90aGVyLXdpbmRvdycg YW5kICdmaW5kLWxpYnJhcnktb3RoZXItZnJhbWUnLgogCisqKiBZb3UgY2FuIG5vdyBwcm92aWRl IGV4cGxpY2l0IGZpZWxkIG51bWJlcnMgaW4gZm9ybWF0IHNwZWNpZmllcnMuCitGb3IgZXhhbXBs ZSwgJyhmb3JtYXQgIiUyJHMgJTEkcyIgMSAyKScgcHJvZHVjZXMgIjIgMSIuCisKIAwKICogRWRp dGluZyBDaGFuZ2VzIGluIEVtYWNzIDI2LjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNw L2J5dGVjb21wLmVsIGIvbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVsCmluZGV4IDEyYTdkNGFm YzIuLmU1YjliNDdiMWQgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbAor KysgYi9saXNwL2VtYWNzLWxpc3AvYnl0ZWNvbXAuZWwKQEAgLTEzNzUsMTAgKzEzNzUsMTUgQEAg Ynl0ZS1jb21waWxlLWZvcm1hdC13YXJuCiAgICAgKGxldCAoKG5maWVsZHMgKHdpdGgtdGVtcC1i dWZmZXIKIAkJICAgICAoaW5zZXJ0IChudGggMSBmb3JtKSkKIAkJICAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQotCQkgICAgIChsZXQgKChuIDApKQorCQkgICAgIChsZXQgKChpIDApIChuIDAp KQogCQkgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiJS4iIG5pbCB0KQotCQkJICh1 bmxlc3MgKGVxID8lIChjaGFyLWFmdGVyICgxKyAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCi0JCQkg ICAoc2V0cSBuICgxKyBuKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrd2FyZC1j aGFyKQorCQkJICh1bmxlc3MgKGVxID8lIChjaGFyLWFmdGVyKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIGkgKGlmIChsb29raW5nLWF0ICJcXChbMC05XStcXClcXCQiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1iZXIgKG1h dGNoLXN0cmluZyAxKSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MSsgaSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuIChtYXggbiBpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhcikpCiAJCSAgICAgICBuKSkpCiAJ ICAobmFyZ3MgKC0gKGxlbmd0aCBmb3JtKSAyKSkpCiAgICAgICAodW5sZXNzICg9IG5hcmdzIG5m aWVsZHMpCmRpZmYgLS1naXQgYS9zcmMvZWRpdGZucy5jIGIvc3JjL2VkaXRmbnMuYwppbmRleCBh NTE2NzBjZmRmLi5iNzYyMDhmOGJlIDEwMDY0NAotLS0gYS9zcmMvZWRpdGZucy5jCisrKyBiL3Ny Yy9lZGl0Zm5zLmMKQEAgLTQ4LDYgKzQ4LDcgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2luY2x1ZGUgPGZs b2F0Lmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlIDxjLWN0eXBlLmg+CiAjaW5j bHVkZSA8aW50cHJvcHMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJmdGlt ZS5oPgpAQCAtMzg1Nyw3ICszODU4LDcgQEAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgZm9ybWF0 IGNvbnRyb2wgc3RyaW5nLgogVGhlIG90aGVyIGFyZ3VtZW50cyBhcmUgc3Vic3RpdHV0ZWQgaW50 byBpdCB0byBtYWtlIHRoZSByZXN1bHQsIGEgc3RyaW5nLgogCiBUaGUgZm9ybWF0IGNvbnRyb2wg c3RyaW5nIG1heSBjb250YWluICUtc2VxdWVuY2VzIG1lYW5pbmcgdG8gc3Vic3RpdHV0ZQotdGhl IG5leHQgYXZhaWxhYmxlIGFyZ3VtZW50OgordGhlIG5leHQgYXZhaWxhYmxlIGFyZ3VtZW50LCBv ciB0aGUgYXJndW1lbnQgZXhwbGljaXRseSBzcGVjaWZpZWQ6CiAKICVzIG1lYW5zIHByaW50IGEg c3RyaW5nIGFyZ3VtZW50LiAgQWN0dWFsbHksIHByaW50cyBhbnkgb2JqZWN0LCB3aXRoIGBwcmlu YycuCiAlZCBtZWFucyBwcmludCBhcyBzaWduZWQgbnVtYmVyIGluIGRlY2ltYWwuCkBAIC0zODc0 LDEzICszODc1LDE3IEBAIHRoZSBuZXh0IGF2YWlsYWJsZSBhcmd1bWVudDoKIFRoZSBhcmd1bWVu dCB1c2VkIGZvciAlZCwgJW8sICV4LCAlZSwgJWYsICVnIG9yICVjIG11c3QgYmUgYSBudW1iZXIu CiBVc2UgJSUgdG8gcHV0IGEgc2luZ2xlICUgaW50byB0aGUgb3V0cHV0LgogCi1BICUtc2VxdWVu Y2UgbWF5IGNvbnRhaW4gb3B0aW9uYWwgZmxhZywgd2lkdGgsIGFuZCBwcmVjaXNpb24KLXNwZWNp ZmllcnMsIGFzIGZvbGxvd3M6CitBICUtc2VxdWVuY2UgbWF5IGNvbnRhaW4gb3B0aW9uYWwgZmll bGQgbnVtYmVyLCBmbGFnLCB3aWR0aCwgYW5kCitwcmVjaXNpb24gc3BlY2lmaWVycywgYXMgZm9s bG93czoKIAotICAlPGZsYWdzPjx3aWR0aD48cHJlY2lzaW9uPmNoYXJhY3RlcgorICAlPGZpZWxk PjxmbGFncz48d2lkdGg+PHByZWNpc2lvbj5jaGFyYWN0ZXIKIAotd2hlcmUgZmxhZ3MgaXMgWysg Iy0wXSssIHdpZHRoIGlzIFswLTldKywgYW5kIHByZWNpc2lvbiBpcyBhIGxpdGVyYWwKLXBlcmlv ZCAiLiIgZm9sbG93ZWQgYnkgWzAtOV0rCit3aGVyZSBmaWVsZCBpcyBbMC05XSsgZm9sbG93ZWQg YnkgYSBsaXRlcmFsIGRvbGxhciAiJCIsIGZsYWdzIGlzCitbKyAjLTBdKywgd2lkdGggaXMgWzAt OV0rLCBhbmQgcHJlY2lzaW9uIGlzIGEgbGl0ZXJhbCBwZXJpb2QgIi4iCitmb2xsb3dlZCBieSBb MC05XSsuCisKK0lmIGZpZWxkIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgb25lLWJhc2VkIGFyZ3Vt ZW50IG51bWJlcjsgdGhlIGdpdmVuCithcmd1bWVudCBpcyBzdWJzdGl0dXRlZCBpbnN0ZWFkIG9m IHRoZSBuZXh0IG9uZS4KIAogVGhlICsgZmxhZyBjaGFyYWN0ZXIgaW5zZXJ0cyBhICsgYmVmb3Jl IGFueSBwb3NpdGl2ZSBudW1iZXIsIHdoaWxlIGEKIHNwYWNlIGluc2VydHMgYSBzcGFjZSBiZWZv cmUgYW55IHBvc2l0aXZlIG51bWJlcjsgdGhlc2UgZmxhZ3Mgb25seQpAQCAtNDAzMywxNCArNDAz OCwxOSBAQCBzdHlsZWRfZm9ybWF0IChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdz LCBib29sIG1lc3NhZ2UpCiAJewogCSAgLyogR2VuZXJhbCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMg bG9vayBsaWtlCiAKLQkgICAgICclJyBbZmxhZ3NdIFtmaWVsZC13aWR0aF0gW3ByZWNpc2lvbl0g Zm9ybWF0CisJICAgICAnJScgW2ZpZWxkLW51bWJlcl0gW2ZsYWdzXSBbZmllbGQtd2lkdGhdIFtw cmVjaXNpb25dIGZvcm1hdAogCiAJICAgICB3aGVyZQogCisgICAgICAgICAgICAgZmllbGQtbnVt YmVyIDo6PSBbMC05XSsgJyQnCiAJICAgICBmbGFncyA6Oj0gWy0rMCMgXSsKIAkgICAgIGZpZWxk LXdpZHRoIDo6PSBbMC05XSsKIAkgICAgIHByZWNpc2lvbiA6Oj0gJy4nIFswLTldKgogCisgICAg ICAgICAgICAgSWYgYSBmaWVsZC1udW1iZXIgaXMgc3BlY2lmaWVkLCBpdCBzcGVjaWZpZXMgdGhl IGFyZ3VtZW50CisgICAgICAgICAgICAgbnVtYmVyIHRvIHN1YnN0aXR1dGUuICBPdGhlcndpc2Us IHRoZSBuZXh0IGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgdGFrZW4uCisKIAkgICAgIElmIGEg ZmllbGQtd2lkdGggaXMgc3BlY2lmaWVkLCBpdCBzcGVjaWZpZXMgdG8gd2hpY2ggd2lkdGgKIAkg ICAgIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHBhZGRlZCB3aXRoIGJsYW5rcywgaWYgdGhlIG91dHB1 dAogCSAgICAgc3RyaW5nIGlzIHNob3J0ZXIgdGhhbiBmaWVsZC13aWR0aC4KQEAgLTQwNDksNiAr NDA1OSwyOSBAQCBzdHlsZWRfZm9ybWF0IChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICph cmdzLCBib29sIG1lc3NhZ2UpCiAJICAgICBkaWdpdHMgdG8gcHJpbnQgYWZ0ZXIgdGhlICcuJyBm b3IgZmxvYXRzLCBvciB0aGUgbWF4LgogCSAgICAgbnVtYmVyIG9mIGNoYXJzIHRvIHByaW50IGZy b20gYSBzdHJpbmcuICAqLwogCisgICAgICAgICAgY2hhciAqZmllbGRfZW5kOworICAgICAgICAg IHVpbnRtYXhfdCByYXdfZmllbGQgPSBzdHJ0b3VtYXggKGZvcm1hdCwgJmZpZWxkX2VuZCwgMTAp OworICAgICAgICAgIGJvb2wgaGFzX2ZpZWxkID0gZmFsc2U7CisgICAgICAgICAgaWYgKGNfaXNk aWdpdCAoKmZvcm1hdCkgJiYgKmZpZWxkX2VuZCA9PSAnJCcpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGlmIChyYXdfZmllbGQgPCAxIHx8IHJhd19maWVsZCA+PSBQVFJESUZGX01BWCkK KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAvKiBkb3BybnQgZG9lc24ndCBz dXBwb3J0ICUuKnMsIHNvIHdlIG5lZWQgdG8gY29weQorICAgICAgICAgICAgICAgICAgICAgdGhl IGZpZWxkIG51bWJlciBzdHJpbmcuICAqLworICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxl bmd0aCA9IGZpZWxkX2VuZCAtIGZvcm1hdDsKKyAgICAgICAgICAgICAgICAgIGVhc3NlcnQgKGxl bmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgZWFzc2VydCAobGVuZ3RoIDwgUFRSRElGRl9N QVgpOworICAgICAgICAgICAgICAgICAgY2hhciAqZmllbGQgPSBTQUZFX0FMTE9DQSAobGVuZ3Ro ICsgMSk7CisgICAgICAgICAgICAgICAgICBtZW1jcHkgKGZpZWxkLCBmb3JtYXQsIGxlbmd0aCk7 CisgICAgICAgICAgICAgICAgICBmaWVsZFtsZW5ndGhdID0gJ1wwJzsKKyAgICAgICAgICAgICAg ICAgIGVycm9yICgiSW52YWxpZCBmaWVsZCBudW1iZXIgYCVzJyIsIGZpZWxkKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgIGhhc19maWVsZCA9IHRydWU7CisgICAgICAgICAgICAg IC8qIG4gaXMgaW5jcmVtZW50ZWQgYmVsb3cuICAqLworICAgICAgICAgICAgICBuID0gcmF3X2Zp ZWxkIC0gMTsKKyAgICAgICAgICAgICAgZm9ybWF0ID0gZmllbGRfZW5kICsgMTsKKyAgICAgICAg ICAgIH0KKwogCSAgYm9vbCBtaW51c19mbGFnID0gZmFsc2U7CiAJICBib29sICBwbHVzX2ZsYWcg PSBmYWxzZTsKIAkgIGJvb2wgc3BhY2VfZmxhZyA9IGZhbHNlOwpAQCAtNDA5MSw3ICs0MTI0LDEz IEBAIHN0eWxlZF9mb3JtYXQgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGJv b2wgbWVzc2FnZSkKIAkgIG1lbXNldCAoJmRpc2NhcmRlZFtmb3JtYXQwIC0gZm9ybWF0X3N0YXJ0 XSwgMSwKIAkJICBmb3JtYXQgLSBmb3JtYXQwIC0gKGNvbnZlcnNpb24gPT0gJyUnKSk7CiAJICBp ZiAoY29udmVyc2lvbiA9PSAnJScpCi0JICAgIGdvdG8gY29weV9jaGFyOworICAgICAgICAgICAg eworICAgICAgICAgICAgICBpZiAoaGFzX2ZpZWxkKQorICAgICAgICAgICAgICAgIC8qIEZJWE1F OiBgZXJyb3InIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQgYCUlJy4gICovCisgICAgICAgICAg ICAgICAgZXJyb3IgKCJGaWVsZCBudW1iZXIgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYCVjJyBj b252ZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgJyUnKTsKKyAgICAgICAgICAgICAg Z290byBjb3B5X2NoYXI7CisgICAgICAgICAgICB9CiAKIAkgICsrbjsKIAkgIGlmICghIChuIDwg bmFyZ3MpKQpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMvZWRpdGZucy10ZXN0cy5lbCBiL3Rlc3Qvc3Jj L2VkaXRmbnMtdGVzdHMuZWwKaW5kZXggODAxOWViMDM4My4uZjc2YzZjOWZkMyAxMDA2NDQKLS0t IGEvdGVzdC9zcmMvZWRpdGZucy10ZXN0cy5lbAorKysgYi90ZXN0L3NyYy9lZGl0Zm5zLXRlc3Rz LmVsCkBAIC0xNzcsNCArMTc3LDIyIEBAIHRyYW5zcG9zZS10ZXN0LWdldC1ieXRlLXBvc2l0aW9u cwogICAgICAgICAgICAoZm9ybWF0LXRpbWUtc3RyaW5nICIlWS0lbS0lZCAlSDolTTolUy4lM04g JXoiIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKG1ha2Utc3Ry aW5nIDIwNDggP1gpICIwIikpKSkpCiAKKyhlcnQtZGVmdGVzdCBmb3JtYXQtd2l0aC1maWVsZCAo KQorICAoc2hvdWxkIChlcXVhbCAoZm9ybWF0ICJGaXJzdCBhcmd1bWVudCAlMiRzLCB0aGVuICVz LCB0aGVuICUxJHMiIDEgMiAzKQorICAgICAgICAgICAgICAgICAiRmlyc3QgYXJndW1lbnQgMiwg dGhlbiAzLCB0aGVuIDEiKSkKKyAgKHNob3VsZCAoZXF1YWwgKGZvcm1hdCAiYSAlMiRzICVkICUx JGQgJTIkUyAlZCAlZCBiIiAxMSAiMjIiIDMzIDQ0KQorICAgICAgICAgICAgICAgICAiYSAyMiAz MyAxMSBcIjIyXCIgMzMgNDQgYiIpKQorICAoc2hvdWxkIChlcXVhbCAoZm9ybWF0ICJhICUwOCRz ICVzIGIiIDEgMiAzIDQgNSA2IDcgOCA5KSAiYSA4IDkgYiIpKQorICAoc2hvdWxkIChlcXVhbCAo c2hvdWxkLWVycm9yIChmb3JtYXQgImEgJTk5OTk5OSRzIGIiIDExKSkKKyAgICAgICAgICAgICAg ICAgJyhlcnJvciAiTm90IGVub3VnaCBhcmd1bWVudHMgZm9yIGZvcm1hdCBzdHJpbmciKSkpCisg IChzaG91bGQgKGVxdWFsIChzaG91bGQtZXJyb3IgKGZvcm1hdCAiYSAlJHMgYiIgMTEpKQorICAg ICAgICAgICAgICAgICA7OyBGSVhNRTogdGhlcmUgc2hvdWxkbid0IGJlIHR3byAlIGluIHRoZSBl cnJvcgorICAgICAgICAgICAgICAgICA7OyBzdHJpbmchCisgICAgICAgICAgICAgICAgICcoZXJy b3IgIkludmFsaWQgZm9ybWF0IG9wZXJhdGlvbiAlJSQiKSkpCisgIChzaG91bGQgKGVxdWFsIChz aG91bGQtZXJyb3IgKGZvcm1hdCAiYSAlMCRzIGIiIDExKSkKKyAgICAgICAgICAgICAgICAgJyhl cnJvciAiSW52YWxpZCBmaWVsZCBudW1iZXIgYDAnIikpKQorICAoc2hvdWxkIChlcXVhbAorICAg ICAgICAgICAoc2hvdWxkLWVycm9yIChmb3JtYXQgImEgJTEkJSAlcyBiIiAxMSkpCisgICAgICAg ICAgICcoZXJyb3IgIkZpZWxkIG51bWJlciBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgJScgY29u dmVyc2lvbiIpKSkpCisKIDs7OyBlZGl0Zm5zLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi4xMy4w Cgo= --001a11492b2e555f600550d94c42--