From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14563 invoked by alias); 19 Jan 2009 11:45:44 -0000 Received: (qmail 14549 invoked by uid 22791); 19 Jan 2009 11:45:42 -0000 X-SWARE-Spam-Status: No, hits=1.0 required=5.0 tests=AWL,BAYES_50,J_CHICKENPOX_33,J_CHICKENPOX_37,J_CHICKENPOX_74,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from yx-out-1718.google.com (HELO yx-out-1718.google.com) (74.125.44.158) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 19 Jan 2009 11:45:33 +0000 Received: by yx-out-1718.google.com with SMTP id 3so1256790yxi.48 for ; Mon, 19 Jan 2009 03:45:31 -0800 (PST) MIME-Version: 1.0 Received: by 10.100.119.18 with SMTP id r18mr1474289anc.98.1232365531201; Mon, 19 Jan 2009 03:45:31 -0800 (PST) In-Reply-To: References: Date: Mon, 19 Jan 2009 11:45: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=0016e644012cb880dd0460d475c0 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-01/txt/msg00418.txt.bz2 --0016e644012cb880dd0460d475c0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 2430 2009/1/17 Eli Zaretskii : >> Date: Fri, 16 Jan 2009 20:08:06 -0200 >> From: Alfredo Ortega >> Cc: gdb-patches@sourceware.org >> >> gcc will complain about tmpnamp() like this: >> >> test.c:(.text+0x13): warning: the use of `tempnam' is dangerous, >> better use `mkstemp' > > You say "tmpnam ()", but the GCC message is for `tempnam'. Which one > is it? These are different functions. > You are right, I screwed with the test, but the error is the same: /home/alfred/gdb/gdb-6.8/src/gdb/breakpoint.c:609: warning: the use of `tmpnam' is dangerous, better use `mkstemp' I'm posting my latest patch, there are multiple changes: 1) Following the suggestion of Tom Tromey, i made "commands" a prefix command, and now it is "commands edit n". The change is still backwards compatible. (Didn't made it to auto-complete like other commands...need to read a little on how to do this) 2) Now there is a "set external-editor" and "show external-editor", this variable has precedence over the "EDITOR" environment variable, (If not set, GDB follows the old behavior with "EDITOR" and "/bin/ex") 3) There is a external_editor() utility function in utils.c that one should call if needing an external text editor. 4) Following the suggestions of Eli, now I use an auxiliary function of libiberty for temporary file generation, all strings are dynamic and there is much better error reporting. This is a much better patch, but also is a much bigger one (I already sent the FSF form that Tom suggested), so surely there are plenty of errors. Corrections are welcomed. Regards, Alfredo 2009-01-16 Alfredo Ortega * breakpoint.c (commands_command,_initialize_breakpoint): Add the 'edit' keyword to the 'commands' command to allow the use of an external editor to add or modify commands. * utils.c,defs.h (external_editor,initialize_utils): Added an utility function to return the external text editor of the system. Added "set external-editor" and "show external-editor" commands to set/show the external editor variable 2009-01-16 Alfredo Ortega * gdb.texinfo, refcard.tex (breakpoint commands, set external-editor, show external-editor): Added documentation of the edit option, for editing commands with an external editor. Also, added a brief description of the "set external-editor" and "show external-editor" commands. --0016e644012cb880dd0460d475c0 Content-Type: text/x-diff; charset=US-ASCII; name="commands.diff" Content-Disposition: attachment; filename="commands.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fq52avk01 Content-length: 12554 ZGlmZiAtdXByIE9MRC9zcmMvZ2RiL2JyZWFrcG9pbnQuYyBORVcvc3JjL2dk Yi9icmVha3BvaW50LmMKLS0tIE9MRC9zcmMvZ2RiL2JyZWFrcG9pbnQuYwky MDA5LTAxLTE0IDAzOjEwOjI5LjAwMDAwMDAwMCAtMDIwMAorKysgTkVXL3Ny Yy9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDEtMTkgMDk6MzY6MDYuMDAwMDAw MDAwIC0wMjAwCkBAIC01ODUsMTMgKzU4NSwyMCBAQCBjb25kaXRpb25fY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90CiAgIGVycm9yIChfKCJObyBi cmVha3BvaW50IG51bWJlciAlZC4iKSwgYm51bSk7CiB9CiAKKyNkZWZpbmUg Q09NTUFORFNfRURDT01NQU5EICJlZGl0IgorCiBzdGF0aWMgdm9pZAogY29t bWFuZHNfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiB7CiAg IHN0cnVjdCBicmVha3BvaW50ICpiOwogICBjaGFyICpwOwotICBpbnQgYm51 bTsKKyAgaW50IGJudW0sIGZzaXplOwogICBzdHJ1Y3QgY29tbWFuZF9saW5l ICpsOworICBjaGFyICp2aXRtcCA9IE5VTEw7CisgIGNoYXIgKmNtZGxpbmUg PSBOVUxMOworICBGSUxFICp0bXBzdHJlYW0gPSBOVUxMOworICBjaGFyICpl ZGl0b3I7CisgIGludCBzeXNyZXQ7CiAKICAgLyogSWYgd2UgYWxsb3dlZCB0 aGlzLCB3ZSB3b3VsZCBoYXZlIHByb2JsZW1zIHdpdGggd2hlbiB0bwogICAg ICBmcmVlIHRoZSBzdG9yYWdlLCBpZiB3ZSBjaGFuZ2UgdGhlIGNvbW1hbmRz IGN1cnJlbnRseQpAQCAtNTk5LDMwICs2MDYsMTAyIEBAIGNvbW1hbmRzX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHQKIAogICBpZiAoZXhlY3V0 aW5nX2JyZWFrcG9pbnRfY29tbWFuZHMpCiAgICAgZXJyb3IgKF8oIkNhbid0 IHVzZSB0aGUgXCJjb21tYW5kc1wiIGNvbW1hbmQgYW1vbmcgYSBicmVha3Bv aW50J3MgY29tbWFuZHMuIikpOwotCiAgIHAgPSBhcmc7Ci0gIGJudW0gPSBn ZXRfbnVtYmVyICgmcCk7Ci0KKyAgLyogRWRpdCBjb21tYW5kcyB3aXRoIGV4 dGVybmFsIGVkaXRvciAqLworICBpZiAocCAmJiAoIXN0cm5jbXAgKENPTU1B TkRTX0VEQ09NTUFORCwgcCwgc3RybGVuIChDT01NQU5EU19FRENPTU1BTkQp KSkpCisgICAgeworICAgICAgLyogZGlzY2FyZCB0aGUgImVkaXQiIGNvbW1h bmQgKi8KKyAgICAgIGdldF9udW1iZXIgKCZwKTsKKyAgICAgIGJudW0gPSBn ZXRfbnVtYmVyICgmcCk7CisgICAgICAvKiBHZW5lcmF0ZXMgdGhlIHRlbXBv cmFyeSBmaWxlIG5hbWUgKi8KKyAgICAgIC8qIHZpdG1wID0gdGVtcG5hbShO VUxMLCIuZ2RiIik7IHRoaXMgaXMgbW9yZSBzZWN1cmUgYWNjb3JkaW5nIHRv IG1hbiBta3N0ZW1wLCBidXQgZ2NjIGNvbXBsYWlucy4uLiAqLworICAgICAg cCA9IE5VTEw7CisgICAgICBpZiAoISh2aXRtcCA9IG1ha2VfdGVtcF9maWxl IChOVUxMKSkpCisJeworCSAgZXJyb3IgKF8oIkNhbid0IGNyZWF0ZSB0ZW1w b3JhcnkgZmlsZSBmb3IgZWRpdGluZy4iKSk7CisJICByZXR1cm47CisJfQor ICAgICAgaWYgKChlZGl0b3IgPSBleHRlcm5hbF9lZGl0b3IgKCkpID09IE5V TEwpCisJeworCSAgZXJyb3IgKF8oIkV4dGVybmFsIGVkaXRvciBub3QgZm91 bmQuIikpOworCSAgcmV0dXJuOworCX0KKyAgICAgIEFMTF9CUkVBS1BPSU5U UyAoYikgaWYgKGItPm51bWJlciA9PSBibnVtKQorCXsKKwkgIGlmICgmYi0+ Y29tbWFuZHMpCisJICAgIHsKKwkgICAgICAvKiBjb21tYW5kcyBleGlzdHMs IG11c3QgZHVtcCB0aGVtIHRvIHRoZSB0ZW1wb3JhbCBmaWxlICovCisJICAg ICAgdG1wc3RyZWFtID0gZm9wZW4gKHZpdG1wLCAidyIpOworCSAgICAgIGwg PSBiLT5jb21tYW5kczsKKwkgICAgICB3aGlsZSAobCkKKwkJeworCQkgIGZz aXplID0gMDsKKwkJICBmc2l6ZSArPSBmd3JpdGUgKGwtPmxpbmUsIDEsIHN0 cmxlbiAobC0+bGluZSksIHRtcHN0cmVhbSk7CisJCSAgZnNpemUgKz0gZndy aXRlICgiXG4iLCAxLCBzdHJsZW4gKCJcbiIpLCB0bXBzdHJlYW0pOworCQkg IGlmIChmc2l6ZSA8IHN0cmxlbiAobC0+bGluZSkgKyAxKQorCQkgICAgewor CQkgICAgICBlcnJvciAoXygiRXJyb3Igd3JpdGluZyB0byB0ZW1wb3Jhcnkg ZmlsZS4iKSk7CisJCSAgICAgIGZjbG9zZSAodG1wc3RyZWFtKTsKKwkJICAg ICAgdW5saW5rICh2aXRtcCk7CisJCSAgICAgIHJldHVybjsKKwkJICAgIH07 CisJCSAgbCA9IGwtPm5leHQ7CisJCX0KKwkgICAgICBmY2xvc2UgKHRtcHN0 cmVhbSk7CisJICAgIH0KKwkgIC8qIEVkaXQgdGhlIGZpbGUgKi8KKwkgIGNt ZGxpbmUgPSB4bWFsbG9jIChzdHJsZW4gKGVkaXRvcikgKyBzdHJsZW4gKHZp dG1wKSArIDUwKTsKKwkgIHNwcmludGYgKGNtZGxpbmUsICIlcyBcIiVzXCIi LCBlZGl0b3IsIHZpdG1wKTsKKwkgIHN5c3JldCA9IHN5c3RlbSAoY21kbGlu ZSk7CisJICB4ZnJlZSAoY21kbGluZSk7CisJICBpZiAoc3lzcmV0IDwgMCkK KwkgICAgeworCSAgICAgIGVycm9yIChfKCJFZGl0b3IgY29tbWFuZCBmYWls ZWQuIikpOworCSAgICAgIHJldHVybjsKKwkgICAgfQorCX0KKyAgICB9Cisg IGVsc2UKKyAgICBibnVtID0gZ2V0X251bWJlciAoJnApOwogICBpZiAocCAm JiAqcCkKICAgICBlcnJvciAoXygiVW5leHBlY3RlZCBleHRyYSBhcmd1bWVu dHMgZm9sbG93aW5nIGJyZWFrcG9pbnQgbnVtYmVyLiIpKTsKIAotICBBTExf QlJFQUtQT0lOVFMgKGIpCi0gICAgaWYgKGItPm51bWJlciA9PSBibnVtKQot ICAgICAgewotCWNoYXIgKnRtcGJ1ZiA9IHhzdHJwcmludGYgKCJUeXBlIGNv bW1hbmRzIGZvciB3aGVuIGJyZWFrcG9pbnQgJWQgaXMgaGl0LCBvbmUgcGVy IGxpbmUuIiwgCi0JCQkJIGJudW0pOwotCXN0cnVjdCBjbGVhbnVwICpjbGVh bnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHRtcGJ1Zik7Ci0JbCA9IHJl YWRfY29tbWFuZF9saW5lcyAodG1wYnVmLCBmcm9tX3R0eSwgMSk7Ci0JZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKLQlmcmVlX2NvbW1hbmRfbGluZXMgKCZi LT5jb21tYW5kcyk7Ci0JYi0+Y29tbWFuZHMgPSBsOwotCWJyZWFrcG9pbnRz X2NoYW5nZWQgKCk7Ci0Jb2JzZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRfbW9k aWZpZWQgKGItPm51bWJlcik7Ci0JcmV0dXJuOworICBBTExfQlJFQUtQT0lO VFMgKGIpIGlmIChiLT5udW1iZXIgPT0gYm51bSkKKyAgICB7CisgICAgICBp ZiAodml0bXApCisJeworCSAgLyogcmVkaXJlY3QgaW5zdHJlYW0gKi8KKwkg IHRtcHN0cmVhbSA9IGluc3RyZWFtOworCSAgaW5zdHJlYW0gPSBmb3BlbiAo dml0bXAsICJyIik7CisJICBsID0gcmVhZF9jb21tYW5kX2xpbmVzIChOVUxM LCBmcm9tX3R0eSwgMSk7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGNoYXIg KnRtcGJ1ZiA9CisJICAgIHhzdHJwcmludGYKKwkgICAgKCJUeXBlIGNvbW1h bmRzIGZvciB3aGVuIGJyZWFrcG9pbnQgJWQgaXMgaGl0LCBvbmUgcGVyIGxp bmUuIiwKKwkgICAgIGJudW0pOworCSAgc3RydWN0IGNsZWFudXAgKmNsZWFu dXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgdG1wYnVmKTsKKwkgIGwgPSBy ZWFkX2NvbW1hbmRfbGluZXMgKHRtcGJ1ZiwgZnJvbV90dHksIDEpOworCSAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKwl9CisgICAgICBmcmVlX2NvbW1h bmRfbGluZXMgKCZiLT5jb21tYW5kcyk7CisgICAgICBiLT5jb21tYW5kcyA9 IGw7CisgICAgICBicmVha3BvaW50c19jaGFuZ2VkICgpOworICAgICAgb2Jz ZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRfbW9kaWZpZWQgKGItPm51bWJlcik7 CisgICAgICBpZiAodml0bXApCisJeworCSAgLyogcmVzdG9yZSBpbnN0cmVh bSAqLworCSAgaW5zdHJlYW0gPSB0bXBzdHJlYW07CisJICAvKiBlcmFzZSB0 ZW1wb3JhbCBmaWxlICovCisJICB1bmxpbmsgKHZpdG1wKTsKKwl9CisgICAg ICByZXR1cm47CiAgICAgfQogICBlcnJvciAoXygiTm8gYnJlYWtwb2ludCBu dW1iZXIgJWQuIiksIGJudW0pOwogfQogCisKIC8qIExpa2UgY29tbWFuZHNf Y29tbWFuZCwgYnV0IGluc3RlYWQgb2YgcmVhZGluZyB0aGUgY29tbWFuZHMg ZnJvbQogICAgaW5wdXQgc3RyZWFtLCB0YWtlcyB0aGVtIGZyb20gYW4gYWxy ZWFkeSBwYXJzZWQgY29tbWFuZCBzdHJ1Y3R1cmUuCiAKQEAgLTgxMDMsNiAr ODE4MiwxMCBAQCBVc2FnZSBpcyBgaWdub3JlIE4gQ09VTlQnLiIpKTsKICAg YWRkX2NvbSAoImNvbW1hbmRzIiwgY2xhc3NfYnJlYWtwb2ludCwgY29tbWFu ZHNfY29tbWFuZCwgXygiXAogU2V0IGNvbW1hbmRzIHRvIGJlIGV4ZWN1dGVk IHdoZW4gYSBicmVha3BvaW50IGlzIGhpdC5cblwKIEdpdmUgYnJlYWtwb2lu dCBudW1iZXIgYXMgYXJndW1lbnQgYWZ0ZXIgXCJjb21tYW5kc1wiLlxuXAor QmVmb3JlIHRoZSBjb21tYW5kIG51bWJlciB5b3UgY2FuIGVudGVyIHRoZSBg ZWRpdCcga2V5d29yZCwgYW5kIHRoZW4geW91IGNhbiBcblwKK3VzZSB0aGUg ZXh0ZXJuYWwgZWRpdG9yIHRvIGFkZCBvciBtb2RpZnkgY29tbWFuZHMuXG5c CitVc2VzIHRoZSBleHRlcm5hbC1lZGl0b3IgdmFyaWFibGUsIEVESVRPUiBl bnZpcm9ubWVudCB2YXJpYWJsZSBvciAvYmluL2V4LFxuXAoraW4gdGhhdCBw cmVjZWRlbmNlLlxuXAogV2l0aCBubyBhcmd1bWVudCwgdGhlIHRhcmdldGVk IGJyZWFrcG9pbnQgaXMgdGhlIGxhc3Qgb25lIHNldC5cblwKIFRoZSBjb21t YW5kcyB0aGVtc2VsdmVzIGZvbGxvdyBzdGFydGluZyBvbiB0aGUgbmV4dCBs aW5lLlxuXAogVHlwZSBhIGxpbmUgY29udGFpbmluZyBcImVuZFwiIHRvIGlu ZGljYXRlIHRoZSBlbmQgb2YgdGhlbS5cblwKZGlmZiAtdXByIE9MRC9zcmMv Z2RiL2RlZnMuaCBORVcvc3JjL2dkYi9kZWZzLmgKLS0tIE9MRC9zcmMvZ2Ri L2RlZnMuaAkyMDA5LTAxLTE0IDAzOjEwOjI4LjAwMDAwMDAwMCAtMDIwMAor KysgTkVXL3NyYy9nZGIvZGVmcy5oCTIwMDktMDEtMTkgMDg6NTc6MDQuMDAw MDAwMDAwIC0wMjAwCkBAIC0zMzAsNiArMzMwLDggQEAgZXh0ZXJuIGludCBz dWJzZXRfY29tcGFyZSAoY2hhciAqLCBjaGFyIAogCiBleHRlcm4gY2hhciAq c2FmZV9zdHJlcnJvciAoaW50KTsKIAorZXh0ZXJuIGNoYXIgKmV4dGVybmFs X2VkaXRvciggdm9pZCApOworCiAjZGVmaW5lCUFMTF9DTEVBTlVQUwkoKHN0 cnVjdCBjbGVhbnVwICopMCkKIAogZXh0ZXJuIHZvaWQgZG9fY2xlYW51cHMg KHN0cnVjdCBjbGVhbnVwICopOwpkaWZmIC11cHIgT0xEL3NyYy9nZGIvZG9j L2dkYi50ZXhpbmZvIE5FVy9zcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwotLS0g T0xEL3NyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMDEtMTQgMDM6MTA6 MjcuMDAwMDAwMDAwIC0wMjAwCisrKyBORVcvc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAwOS0wMS0xOSAwOToyNjozNy4wMDAwMDAwMDAgLTAyMDAKQEAg LTM5NzYsNiArMzk3Niw4IEBAIGZvbGxvdyBpdCBpbW1lZGlhdGVseSB3aXRo IEBjb2Rle2VuZH07IHQKIFdpdGggbm8gQHZhcntibnVtfSBhcmd1bWVudCwg QGNvZGV7Y29tbWFuZHN9IHJlZmVycyB0byB0aGUgbGFzdAogYnJlYWtwb2lu dCwgd2F0Y2hwb2ludCwgb3IgY2F0Y2hwb2ludCBzZXQgKG5vdCB0byB0aGUg YnJlYWtwb2ludCBtb3N0CiByZWNlbnRseSBlbmNvdW50ZXJlZCkuCitAaXRl bSBjb21tYW5kcyBlZGl0IEBye1t9QHZhcntibnVtfUBye119CitUaGlzIHNw YXducyBhbiBleHRlcm5hbCBlZGl0b3IgZm9yIGFkZGluZyBvciBlZGl0aW5n IGNvbW1hbmRzLiAgVGhlIGZpbmFsICBAY29kZXtlbmR9IGlzIG5vdCBuZWNl c3NhcnkgaW4gdGhpcyBjYXNlLiAgQHhyZWZ7Q2hvb3NpbmcgeW91ciBFZGl0 b3J9LgogQGVuZCB0YWJsZQogCiBQcmVzc2luZyBAa2V5e1JFVH0gYXMgYSBt ZWFucyBvZiByZXBlYXRpbmcgdGhlIGxhc3QgQHZhbHVle0dEQk59IGNvbW1h bmQgaXMKQEAgLTUzODQsNiArNTM4Niw3IEBAIHByZWZlciB0byB1c2UgRW1h Y3MgZmFjaWxpdGllcyB0byB2aWV3IHMKICogTGlzdDo6ICAgICAgICAgICAg ICAgICAgICAgICAgUHJpbnRpbmcgc291cmNlIGxpbmVzCiAqIFNwZWNpZnkg TG9jYXRpb246OiAgICAgICAgICAgIEhvdyB0byBzcGVjaWZ5IGNvZGUgbG9j YXRpb25zCiAqIEVkaXQ6OiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRp bmcgc291cmNlIGZpbGVzCisqIENob29zaW5nIHlvdXIgRWRpdG9yOjogICAg ICAgIFNwZWNpZnlpbmcgeW91ciB0ZXh0IGVkaXRvcgogKiBTZWFyY2g6OiAg ICAgICAgICAgICAgICAgICAgICBTZWFyY2hpbmcgc291cmNlIGZpbGVzCiAq IFNvdXJjZSBQYXRoOjogICAgICAgICAgICAgICAgIFNwZWNpZnlpbmcgc291 cmNlIGRpcmVjdG9yaWVzCiAqIE1hY2hpbmUgQ29kZTo6ICAgICAgICAgICAg ICAgIFNvdXJjZSBhbmQgbWFjaGluZSBjb2RlCkBAIC01NTg3LDYgKzU1OTAs NyBAQCBFZGl0IHRoZSBmaWxlIGNvbnRhaW5pbmcgQHZhcntmdW5jdGlvbn0g CiAKIEBlbmQgdGFibGUKIAorQG5vZGUgQ2hvb3NpbmcgeW91ciBFZGl0b3IK IEBzdWJzZWN0aW9uIENob29zaW5nIHlvdXIgRWRpdG9yCiBZb3UgY2FuIGN1 c3RvbWl6ZSBAdmFsdWV7R0RCTn0gdG8gdXNlIGFueSBlZGl0b3IgeW91IHdh bnQKIEBmb290bm90ZXsKQEAgLTU2MTEsNiArNTYxNSwxOSBAQCBvciBpbiB0 aGUgQGNvZGV7Y3NofSBzaGVsbCwKIHNldGVudiBFRElUT1IgL3Vzci9iaW4v dmkKIGdkYiBAZG90c3t9CiBAZW5kIHNtYWxsZXhhbXBsZQorQW5vdGhlciBv cHRpb24gaXMgdG8gdXNlIHRoZSBAY29kZXtzZXQgZXh0ZXJuYWwtZWRpdG9y fSBjb21tYW5kOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIHNldCBleHRlcm5h bC1lZGl0b3IKK0BraW5kZXggc2V0IGV4dGVybmFsLWVkaXRvcgorVGhpcyBj b21tYW5kIGNvbnRyb2xzIHRoZSBleHRlcm5hbCB0ZXh0IGVkaXRvciB0aGF0 IGludGVybmFsIGdkYiBjb21tYW5kcyB1c2UuIFRoZSBleHRlcm5hbC1lZGl0 b3IgdmFyaWFibGUgaGFzIHByZWNlZGVuY2Ugb3ZlciB0aGUgQGNvZGV7RURJ VE9SfSBlbnZpcm9tZW50IHZhcmlhYmxlLgorQGVuZCB0YWJsZQorCitAdGFi bGUgQGNvZGUKK0BpdGVtIHNob3cgZXh0ZXJuYWwtZWRpdG9yCitAa2luZGV4 IHNob3cgZXh0ZXJuYWwtZWRpdG9yCitUaGlzIGNvbW1hbmQgc2hvd3MgdGhl IGV4dGVybmFsIHRleHQgZWRpdG9yIHRoYXQgaW50ZXJuYWwgZ2RiIGNvbW1h bmRzIHVzZS4gCitAZW5kIHRhYmxlCiAKIEBub2RlIFNlYXJjaAogQHNlY3Rp b24gU2VhcmNoaW5nIFNvdXJjZSBGaWxlcwpkaWZmIC11cHIgT0xEL3NyYy9n ZGIvZG9jL3JlZmNhcmQudGV4IE5FVy9zcmMvZ2RiL2RvYy9yZWZjYXJkLnRl eAotLS0gT0xEL3NyYy9nZGIvZG9jL3JlZmNhcmQudGV4CTIwMDktMDEtMTQg MDM6MTA6MjcuMDAwMDAwMDAwIC0wMjAwCisrKyBORVcvc3JjL2dkYi9kb2Mv cmVmY2FyZC50ZXgJMjAwOS0wMS0xOSAwODo1NzoxOS4wMDAwMDAwMDAgLTAy MDAKQEAgLTM1NSwxMCArMzU1LDkgQEAgZGVsZXRlIHdoZW4gcmVhY2hlZAog aWdub3JlIHtcaXQgbn0ge1xpdCBjb3VudH0maWdub3JlIGJyZWFrcG9pbnQg e1xpdCBufSwge1xpdCBjb3VudH0KIHRpbWVzXGNyCiBcY3IKLWNvbW1hbmRz IHtcaXQgbn1ccGFyCitjb21tYW5kcyBcb3B0e3tcaXQgZWRpdH19IHtcaXQg bn1ccGFyCiBccXF1YWQgXG9wdHtcdHQgc2lsZW50fVxwYXIKLVxxcXVhZCB7 XGl0IGNvbW1hbmQtbGlzdH0mZXhlY3V0ZSBHREIge1xpdCBjb21tYW5kLWxp c3R9IGV2ZXJ5IHRpbWUgYnJlYWtwb2ludCB7XGl0IG59IGlzIHJlYWNoZWQu IFxvcHR7e1x0dCBzaWxlbnR9IHN1cHByZXNzZXMgZGVmYXVsdAotZGlzcGxh eX1cY3IKK1xxcXVhZCB7XGl0IGNvbW1hbmQtbGlzdH0mZXhlY3V0ZSBHREIg e1xpdCBjb21tYW5kLWxpc3R9IGV2ZXJ5IHRpbWUgYnJlYWtwb2ludCB7XGl0 IG59IGlzIHJlYWNoZWQgIFxvcHR7e1x0dCBlZGl0fSB1c2luZyBleHRlcm5h bCBlZGl0b3J9LiBcb3B0e3tcdHQgc2lsZW50fSBzdXBwcmVzc2VzIGRlZmF1 bHQgZGlzcGxheX0gXGNyCiBlbmQmZW5kIG9mIHtcaXQgY29tbWFuZC1saXN0 fVxjcgogXGVuZHNlYwogCmRpZmYgLXVwciBPTEQvc3JjL2dkYi91dGlscy5j IE5FVy9zcmMvZ2RiL3V0aWxzLmMKLS0tIE9MRC9zcmMvZ2RiL3V0aWxzLmMJ MjAwOS0wMS0xNCAwMzoxMDoyNy4wMDAwMDAwMDAgLTAyMDAKKysrIE5FVy9z cmMvZ2RiL3V0aWxzLmMJMjAwOS0wMS0xOSAwOToyNToxOS4wMDAwMDAwMDAg LTAyMDAKQEAgLTk2LDYgKzk2LDEwIEBAIHN0YXRpYyB2b2lkIHByb21wdF9m b3JfY29udGludWUgKHZvaWQpOwogc3RhdGljIHZvaWQgc2V0X3NjcmVlbl9z aXplICh2b2lkKTsKIHN0YXRpYyB2b2lkIHNldF93aWR0aCAodm9pZCk7CiAK Ky8qIEV4dGVybmFsIHRleHQgZWRpdG9yICovCisKK3N0YXRpYyBjaGFyICpl eHRlcm5hbF9lZGl0b3JfY29tbWFuZCA9IE5VTEw7CisKIC8qIEEgZmxhZyBp bmRpY2F0aW5nIHdoZXRoZXIgdG8gdGltZXN0YW1wIGRlYnVnZ2luZyBtZXNz YWdlcy4gICovCiAKIHN0YXRpYyBpbnQgZGVidWdfdGltZXN0YW1wID0gMDsK QEAgLTI2OTQsNiArMjY5OCwxMiBAQCBXaGVuIHNldCwgZGVidWdnaW5nIG1l c3NhZ2VzIHdpbGwgYmUgbWFyCiAJCQkgICBOVUxMLAogCQkJICAgc2hvd19k ZWJ1Z190aW1lc3RhbXAsCiAJCQkgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2Rl YnVnbGlzdCk7CisgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImV4dGVy bmFsLWVkaXRvciIsIG5vX2NsYXNzLCAmZXh0ZXJuYWxfZWRpdG9yX2NvbW1h bmQsIF8oIlwKK1NldCB0aGUgZXh0ZXJuYWwgdGV4dCBlZGl0b3IgdGhhdCBn ZGIgdXNlcy4iKSwKKwkJCSAgICBfKCJcCitTaG93IHRoZSBleHRlcm5hbCB0 ZXh0IGVkaXRvci4iKSwgTlVMTCwKKwkJCSAgICBOVUxMLCBOVUxMLAorCQkJ ICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwogfQogCiAvKiBNYWNoaW5lIHNw ZWNpZmljIGZ1bmN0aW9uIHRvIGhhbmRsZSBTSUdXSU5DSCBzaWduYWwuICov CkBAIC0zNDQzLDMgKzM0NTMsMTYgQEAgZ2RiX2J1aWxkYXJndiAoY29uc3Qg Y2hhciAqcykKICAgICBub21lbSAoMCk7CiAgIHJldHVybiBhcmd2OwogfQor CisvKiBSZXR1cm5zIHRoZSBleHRlcm5hbCBlZGl0b3IgKi8KK2NoYXIgKgor ZXh0ZXJuYWxfZWRpdG9yICh2b2lkKQoreworICBjaGFyICplZGl0b3I7Cisg IGlmIChleHRlcm5hbF9lZGl0b3JfY29tbWFuZCkKKyAgICByZXR1cm4gZXh0 ZXJuYWxfZWRpdG9yX2NvbW1hbmQ7CisgIGlmICgoZWRpdG9yID0gKGNoYXIg KikgZ2V0ZW52ICgiRURJVE9SIikpID09IE5VTEwpCisgICAgZWRpdG9yID0g Ii9iaW4vZXgiOworICByZXR1cm4gZWRpdG9yOworCit9Cg== --0016e644012cb880dd0460d475c0--