From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/1534 Path: news.gmane.org!not-for-mail From: =?ISO-8859-2?Q?Daniel_Cegie=B3ka?= Newsgroups: gmane.linux.lib.musl.general Subject: Re: Priorities for next release? Date: Sat, 11 Aug 2012 22:26:35 +0200 Message-ID: References: <20120810191254.GA13232@brightrain.aerifal.cx> <20120811195649.GK27715@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=14dae93993cf1ee7aa04c7034827 X-Trace: dough.gmane.org 1344716833 13251 80.91.229.3 (11 Aug 2012 20:27:13 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 11 Aug 2012 20:27:13 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-1535-gllmg-musl=m.gmane.org@lists.openwall.com Sat Aug 11 22:27:12 2012 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1T0IH7-00020L-4U for gllmg-musl@plane.gmane.org; Sat, 11 Aug 2012 22:27:09 +0200 Original-Received: (qmail 3086 invoked by uid 550); 11 Aug 2012 20:27:07 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 3078 invoked from network); 11 Aug 2012 20:27:07 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=MCdRv4SucjbRQpgulJSOGpFCEx4MGqH8eOjAQi3LI+Q=; b=MZuNAodvS0cgb4RBDve6RVaky2RfoOIaZPrDJzbpiUQZqHNGtcgvbgNvGQpv2pCbWi Yl5P5kMZjOAMR9PaZiETWzi42fiEsHagU1lvlNAs0AZW4S4KbIaWr9GfN7QNXkGyV0hq WEEmb6seRM4xYrGq9FGQeiBPwuBAVSN0eiZzDL9lUTmeBUEH7nmU1FOj+qTHmvvBjyOR dQ1uovPxNYK7lYm/RQQbmdsEm0mXkHtoycyI/XaF8cRWLHTqZ3L96mhNcnHjl78BBuZL 1zaf5ZUsnilGCoKMFqc+rrsPjg/uNv3X8Em6Ze4q6U9o/bq/fnY8wnFQszU5v5+kgQyD cIzw== In-Reply-To: <20120811195649.GK27715@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:1534 Archived-At: --14dae93993cf1ee7aa04c7034827 Content-Type: text/plain; charset=ISO-8859-1 2012/8/11 Rich Felker : > On Fri, Aug 10, 2012 at 03:12:55PM -0400, Rich Felker wrote: >> Other requests? > > Summary so far: > > - significand - easy to do > - __progname - questionable whether it should be added > - _XOPEN_SOURCE versions - hard to do, also questionable > - unit tests - very desirable, not going to happen in short time > - md5/sha crypt - seems harder than i thought; can't find small code > > Did I miss anything? Other additions to the wishlist for next release? Support for the man pages? This can be simple dir in musl (man/man{1,2,...) and "--with-man" option in configure. I'm sending fgetln.c (+my diff), but please check it... btw. it based on /usr.bin/make/util.c from OpenBSD: http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/make/util.c?rev=1.26;content-type=text%2Fplain Daniel > Rich --14dae93993cf1ee7aa04c7034827 Content-Type: application/octet-stream; name="openbsd_fgetln.diff" Content-Disposition: attachment; filename="openbsd_fgetln.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5r57kd01 ZGlmZiAtdXJOIG11c2wub3JpZy8vaW5jbHVkZS9zdGRpby5oIG11c2wvaW5jbHVkZS9zdGRpby5o Ci0tLSBtdXNsLm9yaWcvL2luY2x1ZGUvc3RkaW8uaAkyMDEyLTA4LTExIDE4OjAyOjU4LjAwMDAw MDAwMCArMDIwMAorKysgbXVzbC9pbmNsdWRlL3N0ZGlvLmgJMjAxMi0wOC0xMSAxODowNzozOC41 MjI4MDc2MjcgKzAyMDAKQEAgLTkyLDYgKzkyLDEwIEBACiBjaGFyICpmZ2V0cyhjaGFyICosIGlu dCwgRklMRSAqKTsKIGNoYXIgKmdldHMoY2hhciAqKTsKIAorI2lmZGVmIF9CU0RfU09VUkNFCitj aGFyICpmZ2V0bG4oRklMRSAqLCBzaXplX3QgKik7CisjZW5kaWYKKwogaW50IGZwdXRzKGNvbnN0 IGNoYXIgKiwgRklMRSAqKTsKIGludCBwdXRzKGNvbnN0IGNoYXIgKik7CiAKZGlmZiAtdXJOIG11 c2wub3JpZy8vc3JjL3N0ZGlvL2ZnZXRsbi4zIG11c2wvc3JjL3N0ZGlvL2ZnZXRsbi4zCi0tLSBt dXNsLm9yaWcvL3NyYy9zdGRpby9mZ2V0bG4uMwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAorKysgbXVzbC9zcmMvc3RkaW8vZmdldGxuLjMJMjAwNy0wNi0yMSAxNTo0NzowNy4w MDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwxNDYgQEAKKy5cIgkkT3BlbkJTRDogZmdldGxuLjMs diAxLjE1IDIwMDcvMDYvMjEgMTM6NDc6MDcgbW9yaXR6IEV4cCAkCisuXCIKKy5cIiBDb3B5cmln aHQgKGMpIDE5OTAsIDE5OTEsIDE5OTMKKy5cIglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy5cIgorLlwiIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucworLlwiIGFyZSBtZXQ6CisuXCIgMS4gUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu CisuXCIgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisuXCIgICAgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K Ky5cIiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMg b2YgaXRzIGNvbnRyaWJ1dG9ycworLlwiICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorLlwiICAgIHdpdGhvdXQg c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLlwiCisuXCIgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB TkQKKy5cIiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKy5cIiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLlwiIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRQorLlwiIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisuXCIgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKy5cIiBP UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikKKy5cIiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLlwiIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK Ky5cIiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFIFBPU1NJQklMSVRZIE9GCisuXCIgU1VDSCBEQU1BR0UuCisuXCIKKy5EZCAkTWRvY2RhdGU6 IEp1bmUgMjEgMjAwNyAkCisuRHQgRkdFVExOIDMKKy5PcworLlNoIE5BTUUKKy5ObSBmZ2V0bG4K Ky5OZCBnZXQgYSBsaW5lIGZyb20gYSBzdHJlYW0KKy5TaCBTWU5PUFNJUworLkZkICNpbmNsdWRl IDxzdGRpby5oPgorLkZ0IGNoYXIgKgorLkZuIGZnZXRsbiAiRklMRSAqc3RyZWFtIiAic2l6ZV90 ICpsZW4iCisuU2ggREVTQ1JJUFRJT04KK1RoZQorLkZuIGZnZXRsbgorZnVuY3Rpb24gcmV0dXJu cyBhIHBvaW50ZXIgdG8gdGhlIG5leHQgbGluZSBmcm9tIHRoZSBzdHJlYW0gcmVmZXJlbmNlZCBi eQorLkZhIHN0cmVhbSAuCitUaGlzIGxpbmUgaXMKKy5FbSBub3QKK2EgQyBzdHJpbmcgYXMgaXQg ZG9lcyBub3QgZW5kIHdpdGggYSB0ZXJtaW5hdGluZworLlRuIE5VTAorY2hhcmFjdGVyLgorVGhl IGxlbmd0aCBvZiB0aGUgbGluZSwgaW5jbHVkaW5nIHRoZSBmaW5hbCBuZXdsaW5lLAoraXMgc3Rv cmVkIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gdG8gd2hpY2gKKy5GYSBsZW4KK3BvaW50cyBhbmQg aXMgZ3VhcmFudGVlZCB0byBiZSBncmVhdGVyIHRoYW4gMCB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxl dGlvbi4KKyhOb3RlLCBob3dldmVyLCB0aGF0IGlmIHRoZSBsYXN0IGxpbmUgaW4gdGhlIHN0cmVh bSBkb2VzIG5vdCBlbmQgaW4gYSBuZXdsaW5lLAordGhlIHJldHVybmVkIHRleHQgd2lsbCBub3Qg Y29udGFpbiBhIG5ld2xpbmUuKQorLlNoIFJFVFVSTiBWQUxVRVMKK1Vwb24gc3VjY2Vzc2Z1bCBj b21wbGV0aW9uIGEgcG9pbnRlciBpcyByZXR1cm5lZDsKK3RoaXMgcG9pbnRlciBiZWNvbWVzIGlu dmFsaWQgYWZ0ZXIgdGhlIG5leHQKKy5UbiBJL08KK29wZXJhdGlvbiBvbgorLkZhIHN0cmVhbQor KHdoZXRoZXIgc3VjY2Vzc2Z1bCBvciBub3QpCitvciBhcyBzb29uIGFzIHRoZSBzdHJlYW0gaXMg Y2xvc2VkLgorT3RoZXJ3aXNlLAorLkR2IE5VTEwKK2lzIHJldHVybmVkLgorLlBwCitUaGUKKy5G biBmZ2V0bG4KK2Z1bmN0aW9uIGRvZXMgbm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gZW5kLW9mLWZp bGUgYW5kIGVycm9yOyB0aGUgcm91dGluZXMKKy5YciBmZW9mIDMKK2FuZAorLlhyIGZlcnJvciAz CittdXN0IGJlIHVzZWQKK3RvIGRldGVybWluZSB3aGljaCBvY2N1cnJlZC4KK0lmIGFuIGVycm9y IG9jY3VycywgdGhlIGdsb2JhbCB2YXJpYWJsZQorLlZhIGVycm5vCitpcyBzZXQgdG8gaW5kaWNh dGUgdGhlIGVycm9yLgorVGhlIGVuZC1vZi1maWxlIGNvbmRpdGlvbiBpcyByZW1lbWJlcmVkLCBl dmVuIG9uIGEgdGVybWluYWwsIGFuZCBhbGwKK3N1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gcmVhZCB3 aWxsIHJldHVybgorLkR2IE5VTEwKK3VudGlsIHRoZSBjb25kaXRpb24gaXMKK2NsZWFyZWQgd2l0 aAorLlhyIGNsZWFyZXJyIDMgLgorLlBwCitUaGUgdGV4dCB0byB3aGljaCB0aGUgcmV0dXJuZWQg cG9pbnRlciBwb2ludHMgbWF5IGJlIG1vZGlmaWVkLAorcHJvdmlkZWQgdGhhdCBubyBjaGFuZ2Vz IGFyZSBtYWRlIGJleW9uZCB0aGUgcmV0dXJuZWQgc2l6ZS4KK1RoZXNlIGNoYW5nZXMgYXJlIGxv c3QgYXMgc29vbiBhcyB0aGUgcG9pbnRlciBiZWNvbWVzIGludmFsaWQuCisuU2ggRVJST1JTCisu QmwgLXRhZyAtd2lkdGggW0VCQURGXQorLkl0IEJxIEVyIEVCQURGCitUaGUgYXJndW1lbnQKKy5G YSBzdHJlYW0KK2lzIG5vdCBhIHN0cmVhbSBvcGVuIGZvciByZWFkaW5nLgorLkVsCisuUHAKK1Ro ZQorLkZuIGZnZXRsbgorZnVuY3Rpb24gbWF5IGFsc28gZmFpbCBhbmQgc2V0CisuVmEgZXJybm8K K2ZvciBhbnkgb2YgdGhlIGVycm9ycyBzcGVjaWZpZWQgZm9yIHRoZSByb3V0aW5lcworLlhyIGZm bHVzaCAzICwKKy5YciBtYWxsb2MgMyAsCisuWHIgcmVhZCAyICwKKy5YciBzdGF0IDIgLAorb3IK Ky5YciByZWFsbG9jIDMgLgorLlNoIFNFRSBBTFNPCisuWHIgZmVycm9yIDMgLAorLlhyIGZnZXRz IDMgLAorLlhyIGZvcGVuIDMgLAorLlhyIGZwYXJzZWxuIDMgLAorLlhyIHB1dGMgMworLlNoIEhJ U1RPUlkKK1RoZQorLkZuIGZnZXRsbgorZnVuY3Rpb24gZmlyc3QgYXBwZWFyZWQgaW4KKy5CeCA0 LjQgLgorLlNoIENBVkVBVFMKK1NpbmNlIHRoZSByZXR1cm5lZCBidWZmZXIgaXMgbm90IGEgQyBz dHJpbmcgKGl0IGlzIG5vdCBOVUwgdGVybWluYXRlZCksIGEKK2NvbW1vbiBwcmFjdGljZSBpcyB0 byByZXBsYWNlIHRoZSBuZXdsaW5lIGNoYXJhY3RlciB3aXRoCisuU3EgXGUwIC4KK0hvd2V2ZXIs IGlmIHRoZSBsYXN0IGxpbmUgaW4gYSBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYSBuZXdsaW5lLAor dGhlIHJldHVybmVkIHRleHQgd29uJ3QgY29udGFpbiBhIG5ld2xpbmUgZWl0aGVyLgorVGhlIGZv bGxvd2luZyBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdG8gZGVhbCB3aXRoIHRoaXMgcHJvYmxlbSBi eSBhbGxvY2F0aW5nIGEKK3RlbXBvcmFyeSBidWZmZXI6CisuQmQgLWxpdGVyYWwKKwljaGFyICpi dWYsICpsYnVmOworCXNpemVfdCBsZW47CisKKwlsYnVmID0gTlVMTDsKKwl3aGlsZSAoKGJ1ZiA9 IGZnZXRsbihmcCwgJmxlbikpKSB7CisJCWlmIChidWZbbGVuIC0gMV0gPT0gJ1xlbicpCisJCQli dWZbbGVuIC0gMV0gPSAnXGUwJzsKKwkJZWxzZSB7CisJCQkvKiBFT0Ygd2l0aG91dCBFT0wsIGNv cHkgYW5kIGFkZCB0aGUgTlVMICovCisJCQlpZiAoKGxidWYgPSBtYWxsb2MobGVuICsgMSkpID09 IE5VTEwpCisJCQkJZXJyKDEsIE5VTEwpOworCQkJbWVtY3B5KGxidWYsIGJ1ZiwgbGVuKTsKKwkJ CWxidWZbbGVuXSA9ICdcZTAnOworCQkJYnVmID0gbGJ1ZjsKKwkJfQorCQlwcmludGYoIiVzXGVu IiwgYnVmKTsKKwl9CisJZnJlZShsYnVmKTsKKy5FZApkaWZmIC11ck4gbXVzbC5vcmlnLy9zcmMv c3RkaW8vZmdldGxuLmMgbXVzbC9zcmMvc3RkaW8vZmdldGxuLmMKLS0tIG11c2wub3JpZy8vc3Jj L3N0ZGlvL2ZnZXRsbi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBt dXNsL3NyYy9zdGRpby9mZ2V0bG4uYwkyMDEyLTA4LTExIDE4OjA0OjMzLjg3NTkyOTI3OCArMDIw MApAQCAtMCwwICsxLDM4IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5 cy90eXBlcy5oPgorCitjaGFyICoKK2ZnZXRsbihzdHJlYW0sIGxlbikKKyAgICBGSUxFICpzdHJl YW07CisgICAgc2l6ZV90ICpsZW47Cit7CisgICAgc3RhdGljIGNoYXIgKmJ1ZmZlciA9IE5VTEw7 CisgICAgc3RhdGljIHNpemVfdCBidWZsZW4gPSAwOworCisgICAgaWYgKGJ1ZmxlbiA9PSAwKSB7 CisJYnVmbGVuID0gNTEyOworCWlmICgoYnVmZmVyID0gbWFsbG9jKGJ1ZmxlbisxKSkgPT0gTlVM TCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIm1hbGxvYzogJXMgKCV6dSlcbiIsIHN0cmVycm9yKGVy cm5vKSwKKwkJCWJ1ZmxlbisxKTsKKwkJZXhpdCgyKTsKKwl9CisgICAgfQorICAgIGlmIChmZ2V0 cyhidWZmZXIsIGJ1ZmxlbisxLCBzdHJlYW0pID09IE5VTEwpCisJcmV0dXJuIE5VTEw7CisgICAg KmxlbiA9IHN0cmxlbihidWZmZXIpOworICAgIHdoaWxlICgqbGVuID09IGJ1ZmxlbiAmJiBidWZm ZXJbKmxlbi0xXSAhPSAnXG4nKSB7CisJaWYgKChidWZmZXIgPSByZWFsbG9jKGJ1ZmZlciwgMipi dWZsZW4rMSkpID09IE5VTEwpIHsKKwkJZnByaW50ZihzdGRlcnIsICJyZWFsbG9jOiAlcyAoJXp1 KVxuIiwgc3RyZXJyb3IoZXJybm8pLAorCQkJMipidWZsZW4rMSk7CisJCWV4aXQoMik7CisJfQor CWlmIChmZ2V0cyhidWZmZXIgKyBidWZsZW4sIGJ1ZmxlbiArIDEsIHN0cmVhbSkgPT0gTlVMTCkK KwkgICAgcmV0dXJuIE5VTEw7CisJKmxlbiArPSBzdHJsZW4oYnVmZmVyICsgYnVmbGVuKTsKKwli dWZsZW4gKj0gMjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30K --14dae93993cf1ee7aa04c7034827 Content-Type: text/x-csrc; charset=US-ASCII; name="fgetln.c" Content-Disposition: attachment; filename="fgetln.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5r5e49m1 I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5o PgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoKY2hhciAqCmZnZXRs bihzdHJlYW0sIGxlbikKICAgIEZJTEUgKnN0cmVhbTsKICAgIHNpemVfdCAqbGVuOwp7CiAgICBz dGF0aWMgY2hhciAqYnVmZmVyID0gTlVMTDsKICAgIHN0YXRpYyBzaXplX3QgYnVmbGVuID0gMDsK CiAgICBpZiAoYnVmbGVuID09IDApIHsKCWJ1ZmxlbiA9IDUxMjsKCWlmICgoYnVmZmVyID0gbWFs bG9jKGJ1ZmxlbisxKSkgPT0gTlVMTCkgewoJCWZwcmludGYoc3RkZXJyLCAibWFsbG9jOiAlcyAo JXp1KVxuIiwgc3RyZXJyb3IoZXJybm8pLAoJCQlidWZsZW4rMSk7CgkJZXhpdCgyKTsKCX0KICAg IH0KICAgIGlmIChmZ2V0cyhidWZmZXIsIGJ1ZmxlbisxLCBzdHJlYW0pID09IE5VTEwpCglyZXR1 cm4gTlVMTDsKICAgICpsZW4gPSBzdHJsZW4oYnVmZmVyKTsKICAgIHdoaWxlICgqbGVuID09IGJ1 ZmxlbiAmJiBidWZmZXJbKmxlbi0xXSAhPSAnXG4nKSB7CglpZiAoKGJ1ZmZlciA9IHJlYWxsb2Mo YnVmZmVyLCAyKmJ1ZmxlbisxKSkgPT0gTlVMTCkgewoJCWZwcmludGYoc3RkZXJyLCAicmVhbGxv YzogJXMgKCV6dSlcbiIsIHN0cmVycm9yKGVycm5vKSwKCQkJMipidWZsZW4rMSk7CgkJZXhpdCgy KTsKCX0KCWlmIChmZ2V0cyhidWZmZXIgKyBidWZsZW4sIGJ1ZmxlbiArIDEsIHN0cmVhbSkgPT0g TlVMTCkKCSAgICByZXR1cm4gTlVMTDsKCSpsZW4gKz0gc3RybGVuKGJ1ZmZlciArIGJ1Zmxlbik7 CglidWZsZW4gKj0gMjsKICAgIH0KICAgIHJldHVybiBidWZmZXI7Cn0K --14dae93993cf1ee7aa04c7034827--