From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24435 invoked by alias); 28 Aug 2009 22:16:12 -0000 Received: (qmail 24426 invoked by uid 22791); 28 Aug 2009 22:16:10 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33,J_CHICKENPOX_37,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-yw0-f195.google.com (HELO mail-yw0-f195.google.com) (209.85.211.195) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 28 Aug 2009 22:16:03 +0000 Received: by ywh33 with SMTP id 33so3410495ywh.18 for ; Fri, 28 Aug 2009 15:16:00 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.4.5 with SMTP id g5mr2916194ybi.159.1251497760415; Fri, 28 Aug 2009 15:16:00 -0700 (PDT) In-Reply-To: References: Date: Fri, 28 Aug 2009 23:17:00 -0000 Message-ID: Subject: Re: Use external editor in 'commands' command From: Alfredo Ortega To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd29a207286e004723b076e 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: 2009-08/txt/msg00526.txt.bz2 --000e0cd29a207286e004723b076e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4990 Hi all, Sorry Tom for the very late answer. But I think I got all your recommendations implemented on the patch. Except that I couldn't find a way to do a cleanup erasing a file, without resorting to the ui_file functions. But that wouldn't work because I need a *FILE for instream. Any hint? Sending my latest patch anyway if someone want to take a look at it. Regards, Alfred 2009-08-28 Alfredo Ortega * breakpoint.c (commands_command,_initialize_breakpoint, edit_command,check_executing_commands, commands_edit_command, commands_dump_to_file): Add the 'edit' keyword to the 'commands' command. * utils.c,defs.h (external_editor,initialize_utils): Added an utility function to return the external text editor of the system. Added new "set external-editor" and "show external-editor" commands. 2009-08-28 Alfredo Ortega * gdb.texinfo, refcard.tex (breakpoint commands, set external-editor, show external-editor): Added documentation of the edit option for editing commands. 2009/2/24 Tom Tromey : >>>>>> "Alfredo" =3D=3D Alfredo Ortega writes: > > Alfredo> 2009-01-16 Alfredo Ortega > Alfredo> =A0 * breakpoint.c (commands_command,_initialize_breakpoint, > Alfredo> edit_command,check_executing_commands, commands_edit_command, > Alfredo> commands_dump_to_file): > Alfredo> =A0 Add the 'edit' keyword to the 'commands' command to allow the > Alfredo> =A0 use of an external editor to add or modify commands. > Alfredo> =A0 Added an utility function to dump breakpoint commands to a f= ile. > Alfredo> =A0 Added an utility function to launch an external editor on br= eakpoint commands. > Alfredo> =A0 Joined common checks in commands_command and edit_command. > > This is wordier than the norm. =A0Also, a comment describing a change > should be next to the name of the function it describes. =A0This seems > to list all the function names, then all the changes. > > See the existing ChangeLog for a lot of examples. =A0Also the GNU > standards have a section on writing a ChangeLog entry... > > Alfredo> +commands_dump_to_file (char *filename, struct breakpoint *b) > Alfredo> +{ > Alfredo> + =A0struct cleanup *cleanups; > Alfredo> + =A0struct ui_file *old, *outfile =3D gdb_fopen (filename, "w"); > > You have to check for a NULL return from gdb_fopen. > > Alfredo> + =A0do_cleanups (cleanups); > Alfredo> + > Alfredo> +} > > Extra blank line in there. > > Alfredo> +/* Launches the editor on the breakpoint command. =A0*/ > Alfredo> +char * > Alfredo> +commands_edit_command (int bnum) > > The header comment should describe the meaning of the return value and > the arguments. =A0For a string return, like this, it should also > describe how the memory is managed. > > Alfredo> + =A0if (!vitmp) > Alfredo> + =A0 =A0 =A0error (_("Can't create temporary file for editing."= )); > > Two extra spaces of indentation on the second line, not four. =A0This > occurs in a few spots. > > Alfredo> + =A0ALL_BREAKPOINTS (b) if (b->number =3D=3D bnum) > > The 'if' should go on a new line. > This will require some reindentation, as well. > > Alfredo> + =A0 =A0 =A0cmdline =3D xmalloc (strlen (editor) + strlen (vitm= p) + 50); > > Instead of 50, just use the correct number. > Or, use xstrprintf, which is simpler. > > Alfredo> + =A0 =A0 =A0if (sysret < 0) > Alfredo> + =A0 =A0 =A0 =A0error (_("Can't execute external editor.")); > Alfredo> + =A0 =A0 =A0if (sysret > 0) > Alfredo> + =A0 =A0 =A0 =A0error (_("External editor returned non-zero sta= tus.")); > > I think you need to use WEXITSTATUS and friends here. > > Alfredo> + =A0ALL_BREAKPOINTS (b) if (b->number =3D=3D bnum) > > Newline. > > Alfredo> + =A0 =A0{ > Alfredo> + =A0 =A0 =A0/* Redirect instream to the commands temporal file.= =A0*/ > > I think this can be just "Read commands from the temporary file." > > Alfredo> + =A0 =A0 =A0instream =3D fopen (vitmp, "r"); > > Needs error checking. > > Alfredo> + =A0 =A0 =A0unlink (vitmp); > > I suspect this should probably be done via a cleanup. > > Alfredo> +/* List of subcommands for "edit". =A0*/ > Alfredo> +static struct cmd_list_element *edit_command_list; > > I don't think you need this... > > Alfredo> + =A0add_prefix_cmd ("edit", class_breakpoint, edit_command,_("\ > > ... because I don't think "edit" needs to be a prefix command. > It can just be an ordinary command. > > Alfredo> +extern char *external_editor( void ); > > Should be " (void)", not "( void )". > > Alfredo> + =A0add_setshow_filename_cmd ("external-editor", no_class, &ext= ernal_editor_command, _("\ > > I don't remember... did we already discuss the name of the option? > Why "external-editor" and not the simpler "editor"? > > Alfredo> +/* Returns the external editor */ > > Needs period and 2 spaces at the end. > > Alfredo> + =A0return editor; > Alfredo> + > Alfredo> +} > > Extra blank line. > > This is pretty close to ready. =A0Thanks for persevering. > > Tom > --000e0cd29a207286e004723b076e Content-Type: text/x-diff; charset=US-ASCII; name="commands.patch" Content-Disposition: attachment; filename="commands.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fyxhb0h71 Content-length: 14425 ZGlmZiAtdSAtcCAtcjEuNDE4IGJyZWFrcG9pbnQuYwotLS0gZ2RiL2JyZWFr cG9pbnQuYwkyMSBBdWcgMjAwOSAxODo1NDo0NCAtMDAwMAkxLjQxOAorKysg Z2RiL2JyZWFrcG9pbnQuYwkyOCBBdWcgMjAwOSAyMjoxMTowNSAtMDAwMApA QCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNvbXBsZXRlci5oIgogI2lu Y2x1ZGUgImdkYi5oIgogI2luY2x1ZGUgInVpLW91dC5oIgorI2luY2x1ZGUg ImNsaS1vdXQuaCIKICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIgogI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKICNpbmNsdWRlICJibG9jay5oIgpAQCAt NjUyLDIwICs2NTMsMTI5IEBAIGJyZWFrcG9pbnRfc2V0X2NvbW1hbmRzIChz dHJ1Y3QgYnJlYWtwb2kKICAgb2JzZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRf bW9kaWZpZWQgKGItPm51bWJlcik7CiB9CiAKKy8qIER1bXBzIGJyZWFrcG9p bnQgY29tbWFuZHMgdG8gYSBmaWxlLiAgKi8KIHN0YXRpYyB2b2lkCi1jb21t YW5kc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK2NvbW1h bmRzX2R1bXBfdG9fZmlsZSAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBicmVh a3BvaW50ICpiKQogeworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Cisg IHN0cnVjdCB1aV9maWxlICpvbGQsICpvdXRmaWxlID0gZ2RiX2ZvcGVuIChm aWxlbmFtZSwgInciKTsKKyAgaWYgKG91dGZpbGU9PU5VTEwpCisgICAgICBl cnJvciAoXygiQ2FuJ3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlIGZvciBlZGl0 aW5nLiIpKTsKKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9k ZWxldGUgKG91dGZpbGUpOworICBvbGQgPSBjbGlfb3V0X3NldF9zdHJlYW0g KHVpb3V0LCBvdXRmaWxlKTsKKyAgcHJpbnRfY29tbWFuZF9saW5lcyAodWlv dXQsIGItPmNvbW1hbmRzLCA0KTsKKyAgY2xpX291dF9zZXRfc3RyZWFtICh1 aW91dCwgb2xkKTsKKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKK30KKwor LyogTGF1bmNoZXMgdGhlIGVkaXRvciBvbiB0aGUgYnJlYWtwb2ludCBjb21t YW5kLiAgCisgICBibnVtIGlzIHRoZSBicmVha3BvaW50IG51bWJlci4KKyAg IFJldHVybnMgdGhlIG5hbWUgb2YgYSB0ZW1wb3JhcnkgZmlsZSBjb250YWlu aW5nCisgICB0aGUgZWRpdGVkIGNvbW1hbmRzLiBUaGUgcmV0dXJuZWQgc3Ry aW5nIG11c3QgYmUgZnJlZWQuICovCitjaGFyICoKK2NvbW1hbmRzX2VkaXRf Y29tbWFuZCAoaW50IGJudW0pCit7CisgIGNoYXIgKnZpdG1wID0gTlVMTDsK KyAgY2hhciAqZWRpdG9yOwogICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKLSAg Y2hhciAqcDsKLSAgaW50IGJudW07Ci0gIHN0cnVjdCBjb21tYW5kX2xpbmUg Kmw7CisgIGNoYXIgKmNtZGxpbmUgPSBOVUxMOworICBpbnQgc3lzcmV0Owor ICAvKiBHZW5lcmF0ZXMgdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuICAqLwor ICB2aXRtcCA9IG1ha2VfdGVtcF9maWxlIChOVUxMKTsKKyAgaWYgKCF2aXRt cCkKKyAgICBlcnJvciAoXygiQ2FuJ3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxl IGZvciBlZGl0aW5nLiIpKTsKKyAgZWRpdG9yID0gZXh0ZXJuYWxfZWRpdG9y ICgpOworICBpZiAoIWVkaXRvcikKKyAgICBlcnJvciAoXygiRXh0ZXJuYWwg ZWRpdG9yIG5vdCBmb3VuZC4iKSk7CisgIEFMTF9CUkVBS1BPSU5UUyAoYikK KyAgICBpZiAoYi0+bnVtYmVyID09IGJudW0pCisgICAgICB7CisgICAgICAg IGlmICgmYi0+Y29tbWFuZHMpCisJICBjb21tYW5kc19kdW1wX3RvX2ZpbGUg KHZpdG1wLCBiKTsKKyAgICAgICAgLyogRWRpdCB0aGUgZmlsZS4gICovCisJ Y21kbGluZSA9IHhzdHJwcmludGYoIiVzIFwiJXNcIiIsZWRpdG9yLHZpdG1w KTsKKyAgICAgICAgc3lzcmV0ID0gc3lzdGVtIChjbWRsaW5lKTsKKyAgICAg ICAgeGZyZWUgKGNtZGxpbmUpOworICAgICAgICBpZiAoc3lzcmV0IDwgMCkK KyAgCSAgZXJyb3IgKF8oIkNhbid0IGV4ZWN1dGUgZXh0ZXJuYWwgZWRpdG9y LiIpKTsKKyAgICAgICAgaWYgKFdFWElUU1RBVFVTKHN5c3JldCkgPiAwKQor ICAJICBlcnJvciAoXygiRXh0ZXJuYWwgZWRpdG9yIHJldHVybmVkIG5vbi16 ZXJvIHN0YXR1cy4iKSk7CisgICAgICB9CisgIHJldHVybiB2aXRtcDsKK30K IAogICAvKiBJZiB3ZSBhbGxvd2VkIHRoaXMsIHdlIHdvdWxkIGhhdmUgcHJv YmxlbXMgd2l0aCB3aGVuIHRvCiAgICAgIGZyZWUgdGhlIHN0b3JhZ2UsIGlm IHdlIGNoYW5nZSB0aGUgY29tbWFuZHMgY3VycmVudGx5CiAgICAgIGJlaW5n IHJlYWQgZnJvbS4gICovCiAKK3N0YXRpYyB2b2lkCitjaGVja19leGVjdXRp bmdfY29tbWFuZHMgKCkKK3sKICAgaWYgKGV4ZWN1dGluZ19icmVha3BvaW50 X2NvbW1hbmRzKQogICAgIGVycm9yIChfKCJDYW4ndCB1c2UgdGhlIFwiY29t bWFuZHNcIiBjb21tYW5kIGFtb25nIGEgYnJlYWtwb2ludCdzIGNvbW1hbmRz LiIpKTsKK30KKworLyogTGlrZSBjb21tYW5kc19jb21tYW5kIGJ1dCB1c2lu ZyBhbiBleHRlcm5hbCBlZGl0b3IuICAqLworc3RhdGljIHZvaWQKK2VkaXRf Y29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQoreworICBpbnQg Ym51bTsKKyAgY2hhciAqcDsKKyAgY2hhciAqdml0bXA7CisgIHN0cnVjdCBi cmVha3BvaW50ICpiOworICBzdHJ1Y3QgY29tbWFuZF9saW5lICpsOworICBG SUxFICp0bXBzdHJlYW0gPSBOVUxMOworICBzdHJ1Y3QgY2xlYW51cCAqY2xl YW51cHM7CisKKyAgY2hlY2tfZXhlY3V0aW5nX2NvbW1hbmRzICgpOworICBw ID0gYXJnczsKKyAgaWYgKCFwKQorICAgIGVycm9yIChfKCJObyBicmVha3Bv aW50IG51bWJlci4iKSk7CisgIGJudW0gPSBnZXRfbnVtYmVyICgmcCk7Cisg IGlmIChwICYmICpwKQorICAgIGVycm9yIChfKCJVbmV4cGVjdGVkIGV4dHJh IGFyZ3VtZW50cyBmb2xsb3dpbmcgYnJlYWtwb2ludCBudW1iZXIuIikpOwor ICAvKiBMYXVuY2hlcyB0aGUgZWRpdG9yLiAgKi8KKyAgdml0bXAgPSBjb21t YW5kc19lZGl0X2NvbW1hbmQgKGJudW0pOworICBpZiAoIXZpdG1wKQorICAg IGVycm9yIChfKCJDYW4ndCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgZm9yIGVk aXRpbmcuIikpOworICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCh4ZnJlZSx2 aXRtcCk7CisKKyAgQUxMX0JSRUFLUE9JTlRTIChiKQorICAgIGlmIChiLT5u dW1iZXIgPT0gYm51bSkKKyAgICAgIHsKKyAgICAgICAgLyogUmVhZCBjb21t YW5kcyBmcm9tIHRoZSB0ZW1wb3JhcnkgZmlsZS4gICovCisgICAgICAgIHRt cHN0cmVhbSA9IGluc3RyZWFtOworICAgICAgICBpbnN0cmVhbSA9IGZvcGVu ICh2aXRtcCwgInIiKTsKKwlpZiAoaW5zdHJlYW09PU5VTEwpCisJICB7CisJ ICBpbnN0cmVhbT10bXBzdHJlYW07CisgICAgCSAgZXJyb3IgKF8oIkNhbid0 IG9wZW4gY29tbWFuZHMgdGVtcG9yYXJ5IGZpbGUuIikpOworCSAgfQorICAg ICAgICBsID0gcmVhZF9jb21tYW5kX2xpbmVzIChOVUxMLCBmcm9tX3R0eSwg MSk7CisgICAgICAgIGZyZWVfY29tbWFuZF9saW5lcyAoJmItPmNvbW1hbmRz KTsKKyAgICAgICAgYi0+Y29tbWFuZHMgPSBsOworICAgICAgICBicmVha3Bv aW50c19jaGFuZ2VkICgpOworICAgICAgICBvYnNlcnZlcl9ub3RpZnlfYnJl YWtwb2ludF9tb2RpZmllZCAoYi0+bnVtYmVyKTsKKyAgICAgICAgLyogUmVz dG9yZSBpbnN0cmVhbSBhbmQgZXJhc2UgdGVtcG9yYWwgZmlsZS4gICovCisg ICAgICAgIGluc3RyZWFtID0gdG1wc3RyZWFtOworCXVubGluayh2aXRtcCk7 CisgIAlkb19jbGVhbnVwcyAoY2xlYW51cHMpOworICAgICAgICByZXR1cm47 CisgICAgICB9CisgIHVubGluayh2aXRtcCk7CisgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CisgIGVycm9yIChfKCJObyBicmVha3BvaW50IG51bWJlciAl ZC4iKSwgYm51bSk7Cit9CisKK3N0YXRpYyB2b2lkCitjb21tYW5kc19jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IGJy ZWFrcG9pbnQgKmI7CisgIGNoYXIgKnA7CisgIGludCBibnVtOworICBzdHJ1 Y3QgY29tbWFuZF9saW5lICpsOworCisgIGNoZWNrX2V4ZWN1dGluZ19jb21t YW5kcygpOwogCiAgIHAgPSBhcmc7CiAgIGJudW0gPSBnZXRfbnVtYmVyICgm cCk7CkBAIC04ODkxLDYgKzkwMDEsOSBAQCBNdWx0aXBsZSBicmVha3BvaW50 cyBhdCBvbmUgcGxhY2UgYXJlIHBlCiBcblwKIERvIFwiaGVscCBicmVha3Bv aW50c1wiIGZvciBpbmZvIG9uIG90aGVyIGNvbW1hbmRzIGRlYWxpbmcgd2l0 aCBicmVha3BvaW50cy4iCiAKKy8qIExpc3Qgb2Ygc3ViY29tbWFuZHMgZm9y ICJjb21tYW5kcyIuICAqLworc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjb21tYW5kc19jb21tYW5kX2xpc3Q7CisKIC8qIExpc3Qgb2Ygc3Vi Y29tbWFuZHMgZm9yICJjYXRjaCIuICAqLwogc3RhdGljIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpjYXRjaF9jbWRsaXN0OwogCkBAIC04OTQxLDE0ICs5 MDU0LDIwIEBAIFVzYWdlIGlzIGBpZ25vcmUgTiBDT1VOVCcuIikpOwogICBp ZiAoeGRiX2NvbW1hbmRzKQogICAgIGFkZF9jb21fYWxpYXMgKCJiYyIsICJp Z25vcmUiLCBjbGFzc19icmVha3BvaW50LCAxKTsKIAotICBhZGRfY29tICgi Y29tbWFuZHMiLCBjbGFzc19icmVha3BvaW50LCBjb21tYW5kc19jb21tYW5k LCBfKCJcCisgIGFkZF9wcmVmaXhfY21kICgiY29tbWFuZHMiLCBjbGFzc19i cmVha3BvaW50LCBjb21tYW5kc19jb21tYW5kLCBfKCJcCiBTZXQgY29tbWFu ZHMgdG8gYmUgZXhlY3V0ZWQgd2hlbiBhIGJyZWFrcG9pbnQgaXMgaGl0Llxu XAogR2l2ZSBicmVha3BvaW50IG51bWJlciBhcyBhcmd1bWVudCBhZnRlciBc ImNvbW1hbmRzXCIuXG5cCiBXaXRoIG5vIGFyZ3VtZW50LCB0aGUgdGFyZ2V0 ZWQgYnJlYWtwb2ludCBpcyB0aGUgbGFzdCBvbmUgc2V0LlxuXAogVGhlIGNv bW1hbmRzIHRoZW1zZWx2ZXMgZm9sbG93IHN0YXJ0aW5nIG9uIHRoZSBuZXh0 IGxpbmUuXG5cCiBUeXBlIGEgbGluZSBjb250YWluaW5nIFwiZW5kXCIgdG8g aW5kaWNhdGUgdGhlIGVuZCBvZiB0aGVtLlxuXAogR2l2ZSBcInNpbGVudFwi IGFzIHRoZSBmaXJzdCBsaW5lIHRvIG1ha2UgdGhlIGJyZWFrcG9pbnQgc2ls ZW50O1xuXAotdGhlbiBubyBvdXRwdXQgaXMgcHJpbnRlZCB3aGVuIGl0IGlz IGhpdCwgZXhjZXB0IHdoYXQgdGhlIGNvbW1hbmRzIHByaW50LiIpKTsKK3Ro ZW4gbm8gb3V0cHV0IGlzIHByaW50ZWQgd2hlbiBpdCBpcyBoaXQsIGV4Y2Vw dCB3aGF0IHRoZSBjb21tYW5kcyBwcmludC4iKSwKKwkJICAgICAgJmNvbW1h bmRzX2NvbW1hbmRfbGlzdCwgImNvbW1hbmRzICIsIDEsICZjbWRsaXN0KTsK KworICBhZGRfY21kICgiZWRpdCIsIGNsYXNzX2JyZWFrcG9pbnQsIGVkaXRf Y29tbWFuZCxfKCJcCitFZGl0IHRoZSBjb21tYW5kIHVzaW5nIHRoZSBleHRl cm5hbC1lZGl0b3IgdmFyaWFibGUsIEVESVRPUiBlbnZpcm9ubWVudFxuXAor dmFyaWFibGUgb3IgL2Jpbi9leCwgaW4gdGhhdCBwcmVjZWRlbmNlLiIpLAor CQkgICAgICAmY29tbWFuZHNfY29tbWFuZF9saXN0KTsKIAogICBhZGRfY29t ICgiY29uZGl0aW9uIiwgY2xhc3NfYnJlYWtwb2ludCwgY29uZGl0aW9uX2Nv bW1hbmQsIF8oIlwKIFNwZWNpZnkgYnJlYWtwb2ludCBudW1iZXIgTiB0byBi cmVhayBvbmx5IGlmIENPTkQgaXMgdHJ1ZS5cblwKSW5kZXg6IGdkYi9kZWZz LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9kZWZzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjU0CmRp ZmYgLXUgLXAgLXIxLjI1NCBkZWZzLmgKLS0tIGdkYi9kZWZzLmgJMyBBdWcg MjAwOSAxMjoyNjozNyAtMDAwMAkxLjI1NAorKysgZ2RiL2RlZnMuaAkyOCBB dWcgMjAwOSAyMjoxMTowNiAtMDAwMApAQCAtMzM1LDYgKzMzNSw4IEBAIGV4 dGVybiBpbnQgc3Vic2V0X2NvbXBhcmUgKGNoYXIgKiwgY2hhciAKIAogZXh0 ZXJuIGNoYXIgKnNhZmVfc3RyZXJyb3IgKGludCk7CiAKK2V4dGVybiBjaGFy ICpleHRlcm5hbF9lZGl0b3Iodm9pZCk7CisKICNkZWZpbmUJQUxMX0NMRUFO VVBTCSgoc3RydWN0IGNsZWFudXAgKikwKQogCiBleHRlcm4gdm9pZCBkb19j bGVhbnVwcyAoc3RydWN0IGNsZWFudXAgKik7CkluZGV4OiBnZGIvdXRpbHMu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL3V0aWxzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjE5CmRp ZmYgLXUgLXAgLXIxLjIxOSB1dGlscy5jCi0tLSBnZGIvdXRpbHMuYwkxOCBB dWcgMjAwOSAxNjoxNzoxNiAtMDAwMAkxLjIxOQorKysgZ2RiL3V0aWxzLmMJ MjggQXVnIDIwMDkgMjI6MTE6MDcgLTAwMDAKQEAgLTk4LDYgKzk4LDEwIEBA IHN0YXRpYyB2b2lkIHByb21wdF9mb3JfY29udGludWUgKHZvaWQpOwogc3Rh dGljIHZvaWQgc2V0X3NjcmVlbl9zaXplICh2b2lkKTsKIHN0YXRpYyB2b2lk IHNldF93aWR0aCAodm9pZCk7CiAKKy8qIEV4dGVybmFsIHRleHQgZWRpdG9y ICovCisKK3N0YXRpYyBjaGFyICpleHRlcm5hbF9lZGl0b3JfY29tbWFuZCA9 IE5VTEw7CisKIC8qIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gdGlt ZXN0YW1wIGRlYnVnZ2luZyBtZXNzYWdlcy4gICovCiAKIHN0YXRpYyBpbnQg ZGVidWdfdGltZXN0YW1wID0gMDsKQEAgLTI4MzQsNiArMjgzOCwxMiBAQCBX aGVuIHNldCwgZGVidWdnaW5nIG1lc3NhZ2VzIHdpbGwgYmUgbWFyCiAJCQkg ICBOVUxMLAogCQkJICAgc2hvd19kZWJ1Z190aW1lc3RhbXAsCiAJCQkgICAm c2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisgIGFkZF9zZXRzaG93 X2ZpbGVuYW1lX2NtZCAoImV4dGVybmFsLWVkaXRvciIsIG5vX2NsYXNzLCAm ZXh0ZXJuYWxfZWRpdG9yX2NvbW1hbmQsIF8oIlwKK1NldCB0aGUgZXh0ZXJu YWwgdGV4dCBlZGl0b3IgdGhhdCBnZGIgdXNlcy4iKSwKKwkJCSAgICBfKCJc CitTaG93IHRoZSBleHRlcm5hbCB0ZXh0IGVkaXRvci4iKSwgTlVMTCwKKwkJ CSAgICBOVUxMLCBOVUxMLAorCQkJICAgICZzZXRsaXN0LCAmc2hvd2xpc3Qp OwogfQogCiAvKiBNYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGhhbmRs ZSBTSUdXSU5DSCBzaWduYWwuICovCkBAIC0zNTYzLDMgKzM1NzMsMTUgQEAg X2luaXRpYWxpemVfdXRpbHMgKHZvaWQpCiAgIGFkZF9pbnRlcm5hbF9wcm9i bGVtX2NvbW1hbmQgKCZpbnRlcm5hbF9lcnJvcl9wcm9ibGVtKTsKICAgYWRk X2ludGVybmFsX3Byb2JsZW1fY29tbWFuZCAoJmludGVybmFsX3dhcm5pbmdf cHJvYmxlbSk7CiB9CisKKy8qIFJldHVybnMgdGhlIGV4dGVybmFsIGVkaXRv ci4gICovCitjaGFyICoKK2V4dGVybmFsX2VkaXRvciAodm9pZCkKK3sKKyAg Y2hhciAqZWRpdG9yOworICBpZiAoZXh0ZXJuYWxfZWRpdG9yX2NvbW1hbmQp CisgICAgcmV0dXJuIGV4dGVybmFsX2VkaXRvcl9jb21tYW5kOworICBpZiAo KGVkaXRvciA9IChjaGFyICopIGdldGVudiAoIkVESVRPUiIpKSA9PSBOVUxM KQorICAgIGVkaXRvciA9ICIvYmluL2V4IjsKKyAgcmV0dXJuIGVkaXRvcjsK K30KSW5kZXg6IGdkYi9kb2MvZ2RiLnRleGluZm8KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjE4CmRpZmYgLXUgLXAg LXIxLjYxOCBnZGIudGV4aW5mbwotLS0gZ2RiL2RvYy9nZGIudGV4aW5mbwky NyBBdWcgMjAwOSAyMTo1NjozOCAtMDAwMAkxLjYxOAorKysgZ2RiL2RvYy9n ZGIudGV4aW5mbwkyOCBBdWcgMjAwOSAyMjoxMToxNyAtMDAwMApAQCAtNDAy NCw2ICs0MDI0LDggQEAgZm9sbG93IGl0IGltbWVkaWF0ZWx5IHdpdGggQGNv ZGV7ZW5kfTsgdAogV2l0aCBubyBAdmFye2JudW19IGFyZ3VtZW50LCBAY29k ZXtjb21tYW5kc30gcmVmZXJzIHRvIHRoZSBsYXN0CiBicmVha3BvaW50LCB3 YXRjaHBvaW50LCBvciBjYXRjaHBvaW50IHNldCAobm90IHRvIHRoZSBicmVh a3BvaW50IG1vc3QKIHJlY2VudGx5IGVuY291bnRlcmVkKS4KK0BpdGVtIGNv bW1hbmRzIGVkaXQgQHJ7W31AdmFye2JudW19QHJ7XX0KK1RoaXMgc3Bhd25z IGFuIGV4dGVybmFsIGVkaXRvciBmb3IgYWRkaW5nIG9yIGVkaXRpbmcgY29t bWFuZHMuICBUaGUgZmluYWwgIEBjb2Rle2VuZH0gaXMgbm90IG5lY2Vzc2Fy eSBpbiB0aGlzIGNhc2UuICBAeHJlZntDaG9vc2luZyB5b3VyIEVkaXRvcn0u CiBAZW5kIHRhYmxlCiAKIFByZXNzaW5nIEBrZXl7UkVUfSBhcyBhIG1lYW5z IG9mIHJlcGVhdGluZyB0aGUgbGFzdCBAdmFsdWV7R0RCTn0gY29tbWFuZCBp cwpAQCAtNTY3NSw2ICs1Njc3LDcgQEAgcHJlZmVyIHRvIHVzZSBFbWFjcyBm YWNpbGl0aWVzIHRvIHZpZXcgcwogKiBMaXN0OjogICAgICAgICAgICAgICAg ICAgICAgICBQcmludGluZyBzb3VyY2UgbGluZXMKICogU3BlY2lmeSBMb2Nh dGlvbjo6ICAgICAgICAgICAgSG93IHRvIHNwZWNpZnkgY29kZSBsb2NhdGlv bnMKICogRWRpdDo6ICAgICAgICAgICAgICAgICAgICAgICAgRWRpdGluZyBz b3VyY2UgZmlsZXMKKyogQ2hvb3NpbmcgeW91ciBFZGl0b3I6OiAgICAgICAg U3BlY2lmeWluZyB5b3VyIHRleHQgZWRpdG9yCiAqIFNlYXJjaDo6ICAgICAg ICAgICAgICAgICAgICAgIFNlYXJjaGluZyBzb3VyY2UgZmlsZXMKICogU291 cmNlIFBhdGg6OiAgICAgICAgICAgICAgICAgU3BlY2lmeWluZyBzb3VyY2Ug ZGlyZWN0b3JpZXMKICogTWFjaGluZSBDb2RlOjogICAgICAgICAgICAgICAg U291cmNlIGFuZCBtYWNoaW5lIGNvZGUKQEAgLTU4NzgsNiArNTg4MSw3IEBA IEVkaXQgdGhlIGZpbGUgY29udGFpbmluZyBAdmFye2Z1bmN0aW9ufSAKIAog QGVuZCB0YWJsZQogCitAbm9kZSBDaG9vc2luZyB5b3VyIEVkaXRvcgogQHN1 YnNlY3Rpb24gQ2hvb3NpbmcgeW91ciBFZGl0b3IKIFlvdSBjYW4gY3VzdG9t aXplIEB2YWx1ZXtHREJOfSB0byB1c2UgYW55IGVkaXRvciB5b3Ugd2FudAog QGZvb3Rub3RlewpAQCAtNTkwMiw2ICs1OTA2LDE5IEBAIG9yIGluIHRoZSBA Y29kZXtjc2h9IHNoZWxsLAogc2V0ZW52IEVESVRPUiAvdXNyL2Jpbi92aQog Z2RiIEBkb3Rze30KIEBlbmQgc21hbGxleGFtcGxlCitBbm90aGVyIG9wdGlv biBpcyB0byB1c2UgdGhlIEBjb2Rle3NldCBleHRlcm5hbC1lZGl0b3J9IGNv bW1hbmQ6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gc2V0IGV4dGVybmFsLWVk aXRvcgorQGtpbmRleCBzZXQgZXh0ZXJuYWwtZWRpdG9yCitUaGlzIGNvbW1h bmQgY29udHJvbHMgdGhlIGV4dGVybmFsIHRleHQgZWRpdG9yIHRoYXQgaW50 ZXJuYWwgZ2RiIGNvbW1hbmRzIHVzZS4gVGhlIGV4dGVybmFsLWVkaXRvciB2 YXJpYWJsZSBoYXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBAY29kZXtFRElUT1J9 IGVudmlyb21lbnQgdmFyaWFibGUuCitAZW5kIHRhYmxlCisKK0B0YWJsZSBA Y29kZQorQGl0ZW0gc2hvdyBleHRlcm5hbC1lZGl0b3IKK0BraW5kZXggc2hv dyBleHRlcm5hbC1lZGl0b3IKK1RoaXMgY29tbWFuZCBzaG93cyB0aGUgZXh0 ZXJuYWwgdGV4dCBlZGl0b3IgdGhhdCBpbnRlcm5hbCBnZGIgY29tbWFuZHMg dXNlLiAKK0BlbmQgdGFibGUKIAogQG5vZGUgU2VhcmNoCiBAc2VjdGlvbiBT ZWFyY2hpbmcgU291cmNlIEZpbGVzCkluZGV4OiBnZGIvZG9jL3JlZmNhcmQu dGV4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy9nZGIvZG9jL3JlZmNhcmQudGV4LHYKcmV0cmlldmluZyByZXZpc2lv biAxLjYKZGlmZiAtdSAtcCAtcjEuNiByZWZjYXJkLnRleAotLS0gZ2RiL2Rv Yy9yZWZjYXJkLnRleAkyNyBNYXIgMjAwNyAxODowOTozNSAtMDAwMAkxLjYK KysrIGdkYi9kb2MvcmVmY2FyZC50ZXgJMjggQXVnIDIwMDkgMjI6MTE6MTcg LTAwMDAKQEAgLTM1NSwxMCArMzU1LDkgQEAgZGVsZXRlIHdoZW4gcmVhY2hl ZAogaWdub3JlIHtcaXQgbn0ge1xpdCBjb3VudH0maWdub3JlIGJyZWFrcG9p bnQge1xpdCBufSwge1xpdCBjb3VudH0KIHRpbWVzXGNyCiBcY3IKLWNvbW1h bmRzIHtcaXQgbn1ccGFyCitjb21tYW5kcyBcb3B0e3tcaXQgZWRpdH19IHtc aXQgbn1ccGFyCiBccXF1YWQgXG9wdHtcdHQgc2lsZW50fVxwYXIKLVxxcXVh ZCB7XGl0IGNvbW1hbmQtbGlzdH0mZXhlY3V0ZSBHREIge1xpdCBjb21tYW5k LWxpc3R9IGV2ZXJ5IHRpbWUgYnJlYWtwb2ludCB7XGl0IG59IGlzIHJlYWNo ZWQuIFxvcHR7e1x0dCBzaWxlbnR9IHN1cHByZXNzZXMgZGVmYXVsdAotZGlz cGxheX1cY3IKK1xxcXVhZCB7XGl0IGNvbW1hbmQtbGlzdH0mZXhlY3V0ZSBH REIge1xpdCBjb21tYW5kLWxpc3R9IGV2ZXJ5IHRpbWUgYnJlYWtwb2ludCB7 XGl0IG59IGlzIHJlYWNoZWQgIFxvcHR7e1x0dCBlZGl0fSB1c2luZyBleHRl cm5hbCBlZGl0b3J9LiBcb3B0e3tcdHQgc2lsZW50fSBzdXBwcmVzc2VzIGRl ZmF1bHQgZGlzcGxheX0gXGNyCiBlbmQmZW5kIG9mIHtcaXQgY29tbWFuZC1s aXN0fVxjcgogXGVuZHNlYwogCg== --000e0cd29a207286e004723b076e--