From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26757 invoked by alias); 4 Aug 2011 07:51:35 -0000 Received: (qmail 26749 invoked by uid 22791); 4 Aug 2011 07:51:32 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-ew0-f41.google.com (HELO mail-ew0-f41.google.com) (209.85.215.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Aug 2011 07:51:16 +0000 Received: by ewy9 with SMTP id 9so918057ewy.0 for ; Thu, 04 Aug 2011 00:51:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.213.4.82 with SMTP id 18mr175341ebq.64.1312444274292; Thu, 04 Aug 2011 00:51:14 -0700 (PDT) Received: by 10.213.16.210 with HTTP; Thu, 4 Aug 2011 00:51:14 -0700 (PDT) In-Reply-To: References: <20110802065411.GA23915@host1.jankratochvil.net> <20110802154450.GA19759@host1.jankratochvil.net> Date: Thu, 04 Aug 2011 07:51:00 -0000 Message-ID: Subject: Re: [PATCH] An implementation of pipe to make I/O communication between gdb and shell. From: Abhijit Halder To: Sergio Durigan Junior Cc: gdb-patches@sourceware.org, Jan Kratochvil Content-Type: multipart/mixed; boundary=0015174c1298c1b88d04a9a93e18 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-08/txt/msg00063.txt.bz2 --0015174c1298c1b88d04a9a93e18 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4930 On Wed, Aug 3, 2011 at 11:16 PM, Sergio Durigan Junior wrote: > Abhijit Halder writes: > >> I have made corrections suggested by Sergio Durigan Junior in his >> code-review. Only the documentation section I am leaving for the time >> being. > > Almost there :-). > >> +/* List of characters that can be used as delimiter to separate out >> + =A0 gdb-command and shell command. =A0*/ >> +#define PIPE_DELIMITER "|/\\'\"`#@!$%<^>-" >> + >> +typedef char *iostream_mode_t; >> + >> +#define RD_TEXT "r" >> +#define WR_TEXT "w" > > Based on the discussion with Jan, I thought you would get rid of the `r' > argument, right? =A0I'm not sure, so please correct me if I'm wrong. > I thought I will keep the -r option available for future use. Just to resemble with gdb_stdin I created read terminal of pipe. If in future some command started using gdb_stdin, there will be no coding effort to make use of that command with pipe. Please suggest me whether I should remove these (-r as well as -w) options. >> +/* Prototype of local function. =A0*/ > > `functions.' > Sorry for this typo! I will correct this. >> +static struct pipe_t * >> +construct_pipe (char *p) >> +{ >> + =A0struct pipe_t *pipe =3D NULL; >> + =A0int found_mode =3D 0, pipe_opt_done =3D 0; >> + =A0struct cleanup *old_chain; >> + >> + =A0if (p !=3D NULL && *p !=3D '\0') >> + =A0 =A0{ >> + =A0 =A0 =A0pipe =3D xmalloc (sizeof (struct pipe_t)); >> + =A0 =A0 =A0old_chain =3D make_cleanup (xfree, pipe); >> + >> + =A0 =A0 =A0/* Default mode of pipe. =A0*/ >> + =A0 =A0 =A0pipe->mode =3D WR_TEXT; >> + >> + =A0 =A0 =A0while (!pipe_opt_done) >> + =A0 =A0 =A0 =A0{ >> + =A0 =A0 =A0 =A0 =A0p =3D skip_spaces (p); >> + >> + =A0 =A0 =A0 =A0 =A0/* If we don't get an argument started with '-' and= which is not >> + =A0 =A0 =A0 =A0 =A0 =A0 even a value associated with some option, we c= onsider it as a >> + =A0 =A0 =A0 =A0 =A0 =A0 potential delimiter and stop parsing for furth= er option >> + =A0 =A0 =A0 =A0 =A0 =A0 arguments. =A0*/ > > Thanks for fixing the indentation problems. =A0But I still see one nit: > according to the GNU Coding Standards, whenever you have 8 spaces, you > must convert them to a TAB character. =A0I know it is kind of a pain, but > we try to follow the convention. =A0If you use Vim, ping me offlist and I > can provide you a code that does that. > I am still not fully familiar with GNU style. I am sending my .vimrc to you. It will be a great help if you correct that. > Also, I see you have an extra space in the end of some lines. =A0Please > remove them. > >> + =A0 =A0 =A0 =A0 =A0 =A0case 'r': >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0if (found_mode) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0{ >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0error (_("Invalid option")); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0do_cleanups (old_chain); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return NULL; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > > Some things I'd like to comment about this. > > First, I think the error message could be better, explaining what is the > invalid option. > > Second, the `error' routine already calls `do_cleanups', so you don't > need to call it directly here. > > Third, you don't need to return because the `error' routine takes care > of returning the prompt to the user. > >> + =A0 =A0 =A0if (pipe->dlim =3D=3D '\0' >> + =A0 =A0 =A0 =A0 =A0|| strchr (PIPE_DELIMITER, pipe->dlim) =3D=3D NULL) >> + =A0 =A0 =A0 =A0{ >> + =A0 =A0 =A0 =A0 =A0error (_("Invalid delimiter '%c'"), pipe->dlim); >> + =A0 =A0 =A0 =A0 =A0do_cleanups (old_chain); >> + =A0 =A0 =A0 =A0 =A0return NULL; >> + =A0 =A0 =A0 =A0} > > Same comment about `error' and `do_cleanups', here and in the other > places as well. > >> + =A0 =A0 =A0if (!pipe->handle) >> + =A0 =A0 =A0 =A0{ >> + =A0 =A0 =A0 =A0 =A0error (_("Failed to create pipe.\n%s"), strerror (e= rrno)); >> + =A0 =A0 =A0 =A0 =A0do_cleanups (old_chain); >> + =A0 =A0 =A0 =A0 =A0return NULL; >> + =A0 =A0 =A0 =A0} >> + =A0 =A0} >> + >> + =A0return pipe; >> +} > > Before returning, you must call `discard_cleanups' if everything went OK. > >> +void >> +_initialize_pipe (void) >> +{ >> + =A0add_cmd ("pipe", no_class, pipe_command, _("\ >> +Create pipe between gdb and shell for I/O based communication.\n\ >> +Arguments are option(s) to the command, then a delimiter character, \ >> +then the gdb-command and finally the shell-command.\n\ >> +If no option is given, the default behavior of pipe will be to \ >> +pass the gdb-command output to the shell."), >> + =A0 =A0 =A0 =A0 =A0 &cmdlist); >> +} > > Is the user able to use the `-w' argument? =A0If so, I think you should > mention is here as well. > > I think that is it. =A0Thank you for your work on this patch. =A0I would > appreciate if some maintainer could review it too, in order to catch > things that I didn't see. > > Regards, > > Sergio. > Please find the corrected patch. Thanks, Abhijit Halder --0015174c1298c1b88d04a9a93e18 Content-Type: text/x-patch; charset=US-ASCII; name="gdb-pipe-command.patch" Content-Disposition: attachment; filename="gdb-pipe-command.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqxfev3p0 Content-length: 10728 ZGlmZiAtcnVwIHNyYy9nZGIvTWFrZWZpbGUuaW4gZHN0L2dkYi9NYWtlZmls ZS5pbgotLS0gc3JjL2dkYi9NYWtlZmlsZS5pbgkyMDExLTA3LTI3IDIzOjU1 OjI2LjAwMDAwMDAwMCArMDUzMAorKysgZHN0L2dkYi9NYWtlZmlsZS5pbgky MDExLTA3LTI5IDE2OjEyOjMyLjU3ODA0ODc5NyArMDUzMApAQCAtNzEzLDcg KzcxMyw3IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10 eXBlcHIKIAlvYmpjLWV4cC55IG9iamMtbGFuZy5jIFwKIAlvYmpmaWxlcy5j IG9zYWJpLmMgb2JzZXJ2ZXIuYyBvc2RhdGEuYyBcCiAJb3BlbmNsLWxhbmcu YyBcCi0JcC1leHAueSBwLWxhbmcuYyBwLXR5cGVwcmludC5jIHAtdmFscHJp bnQuYyBwYXJzZS5jIHByaW50Y21kLmMgXAorCXAtZXhwLnkgcC1sYW5nLmMg cC10eXBlcHJpbnQuYyBwLXZhbHByaW50LmMgcGFyc2UuYyBwaXBlLmMgcHJp bnRjbWQuYyBcCiAJcHJvYy1zZXJ2aWNlLmxpc3QgcHJvZ3NwYWNlLmMgXAog CXByb2xvZ3VlLXZhbHVlLmMgcHN5bXRhYi5jIFwKIAlyZWdjYWNoZS5jIHJl Z2dyb3Vwcy5jIHJlbW90ZS5jIHJlbW90ZS1maWxlaW8uYyByZXZlcnNlLmMg XApAQCAtODcwLDcgKzg3MCw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVT KSAkKENPTkZJR19PQlMpICQKIAltaS1jb21tb24ubyBcCiAJZXZlbnQtbG9v cC5vIGV2ZW50LXRvcC5vIGluZi1sb29wLm8gY29tcGxldGVyLm8gXAogCWdk YmFyY2gubyBhcmNoLXV0aWxzLm8gZ2RidHlwZXMubyBvc2FiaS5vIGNvcHlp bmcubyBcCi0JbWVtYXR0ci5vIG1lbS1icmVhay5vIHRhcmdldC5vIHBhcnNl Lm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKKwltZW1hdHRyLm8gbWVtLWJy ZWFrLm8gdGFyZ2V0Lm8gcGFyc2UubyBwaXBlLm8gbGFuZ3VhZ2UubyBidWls ZHN5bS5vIFwKIAlmaW5kY21kLm8gXAogCXN0ZC1yZWdzLm8gXAogCXNpZ25h bHMubyBcCmRpZmYgLXJ1cCBzcmMvZ2RiL3BpcGUuYyBkc3QvZ2RiL3BpcGUu YwotLS0gc3JjL2dkYi9waXBlLmMJMjAxMS0wNy0yOSAxNToxNToyNi4wNzgw NDg1MTcgKzA1MzAKKysrIGRzdC9nZGIvcGlwZS5jCTIwMTEtMDgtMDQgMTI6 NTE6MDEuNTgzMTE3MDQ1ICswNTMwCkBAIC0wLDAgKzEsMjA3IEBACisvKiBF dmVyeXRoaW5nIGFib3V0IHBpcGUsIGZvciBHREIuCisKKyAgIENvcHlyaWdo dCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor CisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUg ImdkYmNtZC5oIgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSAiZ2Ri X3N0cmluZy5oIgorI2luY2x1ZGUgInVpLWZpbGUuaCIKKyNpbmNsdWRlICJj bGkvY2xpLXV0aWxzLmgiCisKKy8qIExpc3Qgb2YgY2hhcmFjdGVycyB0aGF0 IGNhbiBiZSB1c2VkIGFzIGRlbGltaXRlciB0byBzZXBhcmF0ZSBvdXQKKyAg IGdkYi1jb21tYW5kIGFuZCBzaGVsbCBjb21tYW5kLiAgKi8KKyNkZWZpbmUg UElQRV9ERUxJTUlURVIgInwvXFwnXCJgI0AhJCU8Xj4tIgorCit0eXBlZGVm IGNoYXIgKmlvc3RyZWFtX21vZGVfdDsKKworI2RlZmluZSBSRF9URVhUICJy IgorI2RlZmluZSBXUl9URVhUICJ3IgorCitzdHJ1Y3QgcGlwZV90Cit7Cisg IC8qIFRoZSBzaGVsbC1jb21tYW5kLiAgKi8KKyAgY2hhciAqc2hlbGxfY21k OworCisgIC8qIFRoZSBnZGItY29tbWFuZC4gICovCisgIGNoYXIgKmdkYl9j bWQ7CisKKyAgLyogVGhlIGRlbGltaXRlciB0byBzZXBhcmF0ZSBvdXQgZ2Ri LWNvbW1hbmQgYW5kIHNoZWxsLWNvbW1hbmQuICAqLworICBjaGFyIGRsaW07 CisKKyAgLyogVGhlIG1vZGUgb2YgZ2RiIHNpZGUgcGlwZSAocmVhZCBvciB3 cml0ZSkuICAqLworICBpb3N0cmVhbV9tb2RlX3QgbW9kZTsKKworICAvKiBU aGUgc3RyZWFtIHBvaW50ZXIgb2YgcGlwZS4gICovCisgIEZJTEUgKmhhbmRs ZTsKK307CisKKy8qIFByb3RvdHlwZSBvZiBsb2NhbCBmdW5jdGlvbnMuICAq LworCitzdGF0aWMgc3RydWN0IHBpcGVfdCAqY29uc3RydWN0X3BpcGUgKGNo YXIgKik7CisKK3N0YXRpYyB2b2lkIGRlc3RydWN0X3BpcGUgKHN0cnVjdCBw aXBlX3QgKik7CisKK3N0YXRpYyBzdHJ1Y3QgcGlwZV90ICpleGVjdXRlX2Nv bW1hbmRfdG9fcGlwZSAoc3RydWN0IHBpcGVfdCAqLCBpbnQpOworCitzdGF0 aWMgdm9pZCBwaXBlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKKworc3RhdGlj IHN0cnVjdCBwaXBlX3QgKgorY29uc3RydWN0X3BpcGUgKGNoYXIgKnApCit7 CisgIHN0cnVjdCBwaXBlX3QgKnBpcGUgPSBOVUxMOworICBpbnQgZm91bmRf bW9kZSA9IDAsIHBpcGVfb3B0X2RvbmUgPSAwOworICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluOworCisgIGlmIChwICE9IE5VTEwgJiYgKnAgIT0gJ1ww JykKKyAgICB7CisgICAgICBwaXBlID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3QgcGlwZV90KSk7CisgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAg KHhmcmVlLCBwaXBlKTsKKworICAgICAgLyogRGVmYXVsdCBtb2RlIG9mIHBp cGUuICAqLworICAgICAgcGlwZS0+bW9kZSA9IFdSX1RFWFQ7CisKKyAgICAg IHdoaWxlICghcGlwZV9vcHRfZG9uZSkKKwl7CisJICBwID0gc2tpcF9zcGFj ZXMgKHApOworCisJICAvKiBJZiB3ZSBkb24ndCBnZXQgYW4gYXJndW1lbnQg c3RhcnRlZCB3aXRoICctJyBhbmQgd2hpY2ggaXMgbm90CisJICAgICBldmVu IGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3B0aW9uLCB3ZSBjb25z aWRlciBpdCBhcyBhCisJICAgICBwb3RlbnRpYWwgZGVsaW1pdGVyIGFuZCBz dG9wIHBhcnNpbmcgZm9yIGZ1cnRoZXIgb3B0aW9uCisJICAgICBhcmd1bWVu dHMuICAqLworCSAgaWYgKCpwICE9ICctJykKKwkgICAgYnJlYWs7CisKKwkg IHN3aXRjaCAoKisrcCkKKwkgICAgeworCSAgICBjYXNlICdyJzoKKwkgICAg ICBpZiAoZm91bmRfbW9kZSkKKwkJZXJyb3IgKF8oIkludmFsaWQgb3B0aW9u IikpOworCSAgICAgIHBpcGUtPm1vZGUgPSBSRF9URVhUOworCSAgICAgIGZv dW5kX21vZGUgPSAxOworCSAgICAgICsrcDsKKwkgICAgICBicmVhazsKKwor CSAgICBjYXNlICd3JzoKKwkgICAgICBpZiAoZm91bmRfbW9kZSkKKwkJZXJy b3IgKF8oIkludmFsaWQgb3B0aW9uIikpOworCSAgICAgIHBpcGUtPm1vZGUg PSBXUl9URVhUOworCSAgICAgIGZvdW5kX21vZGUgPSAxOworCSAgICAgICsr cDsKKwkgICAgICBicmVhazsKKworCSAgICBjYXNlICcgJzoKKwkgICAgICBw aXBlX29wdF9kb25lID0gMTsKKwkgICAgICArK3A7CisJICAgICAgYnJlYWs7 CisKKwkgICAgZGVmYXVsdDoKKwkgICAgICBlcnJvciAoXygiSW52YWxpZCBv cHRpb24iKSk7CisJICAgIH0KKwl9CisKKyAgICAgIHAgPSBza2lwX3NwYWNl cyAocCk7CisgICAgICBwaXBlLT5kbGltID0gKnArKzsKKyAgICAgIHAgPSBz a2lwX3NwYWNlcyAocCk7CisgICAgICBwaXBlLT5nZGJfY21kID0gcDsKKwor ICAgICAgLyogVmFsaWRhdGUgdGhlIGRlbGltaXRlciBmcm9tIGEgcHJlLWRl ZmluZWQgd2hpdGVsaXN0IGNoYXJhY3RlcnMuCisJIFRoaXMgd2lsbCBlbmZv cmNlIG5vdCB0byB1c2Ugc3BlY2lhbCAoZS5nLiwgYWxwaGEtbnVtZXJpYykg bGlzdAorCSBvZiBjaGFyYWN0ZXJzLiAgKi8KKyAgICAgIC8qIE5PVEU6IElm IERMSU0gYmVjb21lIG51bGwsIFAgcG9pbnRzIHRvIGEgYmFkIHN0cmluZywg aGVuY2UKKwkgYmVmb3JlIGRvaW5nIGZ1cnRoZXIgcHJvY2Vzc2luZyBvZiBQ IHdlIHNob3VsZCBjaGVjayBETElNLiAgKi8KKyAgICAgIGlmIChwaXBlLT5k bGltID09ICdcMCcKKwkgIHx8IHN0cmNociAoUElQRV9ERUxJTUlURVIsIHBp cGUtPmRsaW0pID09IE5VTEwpCisJZXJyb3IgKF8oIkludmFsaWQgZGVsaW1p dGVyICclYyciKSwgcGlwZS0+ZGxpbSk7CisKKyAgICAgIGlmICgocCA9IHN0 cmNociAocCwgcGlwZS0+ZGxpbSkpID09IE5VTEwpCisJZXJyb3IgKF8oIkZv dW5kIG5vIHNoZWxsIGNvbW1hbmQiKSk7CisKKyAgICAgICpwKysgPSAnXDAn OworICAgICAgcGlwZS0+c2hlbGxfY21kID0gcDsKKworICAgICAgcGlwZS0+ aGFuZGxlID0gcG9wZW4gKHBpcGUtPnNoZWxsX2NtZCwgcGlwZS0+bW9kZSk7 CisKKyAgICAgIGlmICghcGlwZS0+aGFuZGxlKQorCWVycm9yIChfKCJGYWls ZWQgdG8gY3JlYXRlIHBpcGUuXG4lcyIpLCBzdHJlcnJvciAoZXJybm8pKTsK KworICAgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAgICB9 CisKKyAgcmV0dXJuIHBpcGU7Cit9CisKK3N0YXRpYyB2b2lkCitkZXN0cnVj dF9waXBlIChzdHJ1Y3QgcGlwZV90ICpwaXBlKQoreworICBwY2xvc2UgKHBp cGUtPmhhbmRsZSk7CisgIHhmcmVlIChwaXBlKTsKK30KKworc3RhdGljIHN0 cnVjdCBwaXBlX3QgKgorZXhlY3V0ZV9jb21tYW5kX3RvX3BpcGUgKHN0cnVj dCBwaXBlX3QgKnBpcGUsIGludCBmcm9tX3R0eSkKK3sKKyAgRklMRSAqZnN0 cmVhbSwgKnBzdHJlYW07CisgIHN0cnVjdCB1aV9maWxlICpnZGJfc3RkaW87 CisKKyAgaWYgKCFwaXBlLT5tb2RlKQorICAgIGludGVybmFsX2Vycm9yIChf X0ZJTEVfXywgX19MSU5FX18sCisJCSAgICBfKCJleGVjdXRlX2NvbW1hbmRf dG9fcGlwZTogdW4taW5pdGlhbGl6ZWQgcGlwZSIpKTsKKyAgZWxzZSBpZiAo IXN0cmNtcCAocGlwZS0+bW9kZSwgUkRfVEVYVCkpCisgICAgZ2RiX3N0ZGlv ID0gZ2RiX3N0ZGluOworICBlbHNlIGlmICghc3RyY21wIChwaXBlLT5tb2Rl LCBXUl9URVhUKSkKKyAgICBnZGJfc3RkaW8gPSBnZGJfc3Rkb3V0OworICBl bHNlCisgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywK KwkJICAgIF8oImV4ZWN1dGVfY29tbWFuZF90b19waXBlOiBiYWQgcGlwZSBt b2RlIikpOworICBwc3RyZWFtID0gcGlwZS0+aGFuZGxlOworICBmc3RyZWFt ID0gZ2RiX21vZGlmeV9pbyAoZ2RiX3N0ZGlvLCBwc3RyZWFtKTsKKyAgZXhl Y3V0ZV9jb21tYW5kIChwaXBlLT5nZGJfY21kLCBmcm9tX3R0eSk7CisgIHBz dHJlYW0gPSBnZGJfbW9kaWZ5X2lvIChnZGJfc3RkaW8sIGZzdHJlYW0pOwor ICBwaXBlLT5oYW5kbGUgPSBwc3RyZWFtOworICByZXR1cm4gcGlwZTsKK30K Kworc3RhdGljIHZvaWQKK3BpcGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHkpCit7CisgIHN0cnVjdCBwaXBlX3QgKnBpcGU7CisKKyAgcGlw ZSA9IGNvbnN0cnVjdF9waXBlIChhcmcpOworICBpZiAocGlwZSAhPSBOVUxM KSAKKyAgICB7CisgICAgICBwaXBlID0gZXhlY3V0ZV9jb21tYW5kX3RvX3Bp cGUgKHBpcGUsIGZyb21fdHR5KTsKKyAgICAgIGRlc3RydWN0X3BpcGUgKHBp cGUpOworICAgIH0KK30KKwordm9pZAorX2luaXRpYWxpemVfcGlwZSAodm9p ZCkKK3sKKyAgYWRkX2NtZCAoInBpcGUiLCBub19jbGFzcywgcGlwZV9jb21t YW5kLCBfKCJcCitDcmVhdGUgcGlwZSBiZXR3ZWVuIGdkYiBhbmQgc2hlbGwg Zm9yIEkvTyBiYXNlZCBjb21tdW5pY2F0aW9uLlxuXAorQXJndW1lbnRzIGFy ZSBvcHRpb24ocykgdG8gdGhlIGNvbW1hbmQsIHRoZW4gYSBkZWxpbWl0ZXIg Y2hhcmFjdGVyLCBcCit0aGVuIHRoZSBnZGItY29tbWFuZCBhbmQgZmluYWxs eSB0aGUgc2hlbGwtY29tbWFuZC5cblwKK0xpc3Qgb2Ygb3B0aW9ucyBhdmFp bGFibGU6XG5cCisgIC1yICAgIGdkYiByZWFkcyBvdXRwdXQgb2Ygc2hlbGwt Y29tbWFuZCBmcm9tIHBpcGUuXG5cCisgIC13ICAgIGdkYiBwYXNzZXMgb3V0 cHV0IG9mIGEgY29tbWFuZCB0byBzaGVsbC5cblwKKyAgLSAgICAgZW5kIG9m IGdkYiBvcHRpb24gbGlzdC5cblwKK0lmIG5vIG9wdGlvbiBpcyBnaXZlbiwg dGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgcGlwZSB3aWxsIGJlIHRvIFwKK3Bh c3MgdGhlIGdkYi1jb21tYW5kIG91dHB1dCB0byB0aGUgc2hlbGwuIiksCisJ ICAgJmNtZGxpc3QpOworfQpkaWZmIC1ydXAgc3JjL2dkYi91aS1maWxlLmMg ZHN0L2dkYi91aS1maWxlLmMKLS0tIHNyYy9nZGIvdWktZmlsZS5jCTIwMTEt MDUtMTQgMTE6MTQ6MzYuMDAwMDAwMDAwICswNTMwCisrKyBkc3QvZ2RiL3Vp LWZpbGUuYwkyMDExLTA4LTA0IDEyOjE3OjU0LjUxOTExNTkzMyArMDUzMApA QCAtNjE5LDYgKzYxOSwyMCBAQCBzdGRpb19maWxlb3BlbiAoRklMRSAqZmls ZSkKICAgcmV0dXJuIHN0ZGlvX2ZpbGVfbmV3IChmaWxlLCAwKTsKIH0KIAor RklMRSAqCitnZGJfbW9kaWZ5X2lvIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg RklMRSAqaW9zdHJlYW1fbmV3KQoreworICBGSUxFICppb3N0cmVhbV9vbGQ7 CisgIHN0cnVjdCBzdGRpb19maWxlICpzdGRpbyA9IHVpX2ZpbGVfZGF0YSAo ZmlsZSk7CisKKyAgaWYgKHN0ZGlvLT5tYWdpYyAhPSAmc3RkaW9fZmlsZV9t YWdpYykKKyAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9f LAorCQkgICAgXygiZ2RiX21vZGlmeV9pbzogYmFkIG1hZ2ljIG51bWJlciIp KTsKKyAgaW9zdHJlYW1fb2xkID0gc3RkaW8tPmZpbGU7CisgIHN0ZGlvLT5m aWxlID0gaW9zdHJlYW1fbmV3OworICByZXR1cm4gaW9zdHJlYW1fb2xkOwor fQorCiBzdHJ1Y3QgdWlfZmlsZSAqCiBnZGJfZm9wZW4gKGNoYXIgKm5hbWUs IGNoYXIgKm1vZGUpCiB7CmRpZmYgLXJ1cCBzcmMvZ2RiL3VpLWZpbGUuaCBk c3QvZ2RiL3VpLWZpbGUuaAotLS0gc3JjL2dkYi91aS1maWxlLmgJMjAxMS0w NS0xMyAyMjo1ODoyMC4wMDAwMDAwMDAgKzA1MzAKKysrIGRzdC9nZGIvdWkt ZmlsZS5oCTIwMTEtMDgtMDIgMTc6MTc6NTQuMTMwNDQyOTk0ICswNTMwCkBA IC0xMjYsNiArMTI2LDkgQEAgZXh0ZXJuIHN0cnVjdCB1aV9maWxlICpzdGRp b19maWxlb3BlbiAoRgogLyogT3BlbiBOQU1FIHJldHVybmluZyBhbiBTVERJ TyBiYXNlZCBVSV9GSUxFLiAgKi8KIGV4dGVybiBzdHJ1Y3QgdWlfZmlsZSAq Z2RiX2ZvcGVuIChjaGFyICpuYW1lLCBjaGFyICptb2RlKTsKIAorLyogTW9k aWZ5IHRoZSBmaWxlIEkvTyBzdHJlYW0gcG9pbnRlciBvZiBhbiBTVERJTyBi YXNlZCBVSV9GSUxFLiAgKi8KK2V4dGVybiBGSUxFICpnZGJfbW9kaWZ5X2lv IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgRklMRSAqaW9zdHJlYW1fbmV3KTsK KwogLyogQ3JlYXRlIGEgZmlsZSB3aGljaCB3cml0ZXMgdG8gYm90aCBPTkUg YW5kIFRXTy4gIENMT1NFX09ORQogICAgYW5kIENMT1NFX1RXTyBpbmRpY2F0 ZSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBmaWxlcyBzaG91bGQgYmUKICAgIGNs b3NlZCB3aGVuIHRoZSBuZXcgZmlsZSBpcyBjbG9zZWQuICAqLwo= --0015174c1298c1b88d04a9a93e18--