From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11452 invoked by alias); 16 Aug 2011 12:45:45 -0000 Received: (qmail 11443 invoked by uid 22791); 16 Aug 2011 12:45:42 -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,TW_TD 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; Tue, 16 Aug 2011 12:45:21 +0000 Received: by ewy9 with SMTP id 9so2533912ewy.0 for ; Tue, 16 Aug 2011 05:45:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.213.3.19 with SMTP id 19mr1551211ebl.36.1313498719314; Tue, 16 Aug 2011 05:45:19 -0700 (PDT) Received: by 10.213.33.142 with HTTP; Tue, 16 Aug 2011 05:45:19 -0700 (PDT) In-Reply-To: <20110814195523.GA7588@host1.jankratochvil.net> References: <20110813205053.GB22058@host1.jankratochvil.net> <20110814121407.GA29236@host1.jankratochvil.net> <83y5ywulun.fsf@gnu.org> <20110814170136.GA26819@host1.jankratochvil.net> <83sjp3vkze.fsf@gnu.org> <20110814195523.GA7588@host1.jankratochvil.net> Date: Tue, 16 Aug 2011 12:45:00 -0000 Message-ID: Subject: Re: [PATCH] An implementation of pipe to make I/O communication between gdb and shell. [MinGW question] From: Abhijit Halder To: Jan Kratochvil Cc: Eli Zaretskii , sergiodj@redhat.com, tromey@redhat.com, pedro@codesourcery.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0015174c162893e32104aa9ec01b 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/msg00326.txt.bz2 --0015174c162893e32104aa9ec01b Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1363 On Mon, Aug 15, 2011 at 1:25 AM, Jan Kratochvil wrote: > On Sun, 14 Aug 2011 21:41:57 +0200, Eli Zaretskii wrote: >> > Abhijit Halder has suggested the suggested >> > =A0 =A0 const char *argv[] =3D { "sh", "-c", "cat >/dev/null", NULL }; >> > =A0 =A0 pex_run (pipe->pex, PEX_LAST, "/bin/sh", argv, NULL, NULL, &st= atus); >> > works on UNIX but it will probably not work on MinGW as there is no "/= bin/sh", >> > is it? >> >> The file name of the shell, the "-c" switch, and the null device >> should all be system-dependent. =A0For MinGW, they should be, >> respectively, "cmd.exe", "/c", and "nul". > > "cat >/dev/null" itself is user-entered command so that part is OK to be > non-cross-platform (therefore also "nul" is not valid). > > OK, "cmd.exe" with "/c" seems easy enough. > > >> > The current implementation: >> > =A0 =A0 const char *argv[] =3D { "cat", ">/dev/null", NULL }; >> > =A0 =A0 pex_run (pipe->pex, PEX_SEARCH | PEX_LAST, "cat", argv, NULL, = NULL, &status); >> > produces that - therefore not working on UNIX: >> > =A0 =A0 cat: >/dev/null: No such file or directory >> >> How hard is it to parse the redirection characters? > > Very, >, >>, &>, >&, &>>, x>&y, x>&y-, x<>y, many more. > > > Thanks, > Jan > Corrected the pattern matching code and added code to take care MinGW. Working on testcase and doc part. --0015174c162893e32104aa9ec01b Content-Type: text/x-patch; charset=US-ASCII; name="gdb-pipe-command-corrected.patch" Content-Disposition: attachment; filename="gdb-pipe-command-corrected.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_grev6nr80 Content-length: 10061 ZGlmZiAtcnVwIHNyYy9nZGIvTWFrZWZpbGUuaW4gZHN0L2dkYi9NYWtlZmls ZS5pbgotLS0gc3JjL2dkYi9NYWtlZmlsZS5pbgkyMDExLTA3LTI3IDIzOjU1 OjI2LjAwMDAwMDAwMCArMDUzMAorKysgZHN0L2dkYi9NYWtlZmlsZS5pbgky MDExLTA4LTE0IDA3OjMxOjE1LjgwMjIzMzAwNCArMDUzMApAQCAtNzEzLDcg KzcxMyw3IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10 eXBlcHIKIAlvYmpjLWV4cC55IG9iamMtbGFuZy5jIFwKIAlvYmpmaWxlcy5j IG9zYWJpLmMgb2JzZXJ2ZXIuYyBvc2RhdGEuYyBcCiAJb3BlbmNsLWxhbmcu YyBcCi0JcC1leHAueSBwLWxhbmcuYyBwLXR5cGVwcmludC5jIHAtdmFscHJp bnQuYyBwYXJzZS5jIHByaW50Y21kLmMgXAorCXAtZXhwLnkgcC1sYW5nLmMg cC10eXBlcHJpbnQuYyBwLXZhbHByaW50LmMgcGFyc2UuYyBwaXBlLmMgcHJp bnRjbWQuYyBcCiAJcHJvYy1zZXJ2aWNlLmxpc3QgcHJvZ3NwYWNlLmMgXAog CXByb2xvZ3VlLXZhbHVlLmMgcHN5bXRhYi5jIFwKIAlyZWdjYWNoZS5jIHJl Z2dyb3Vwcy5jIHJlbW90ZS5jIHJlbW90ZS1maWxlaW8uYyByZXZlcnNlLmMg XApAQCAtODcwLDcgKzg3MCw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVT KSAkKENPTkZJR19PQlMpICQKIAltaS1jb21tb24ubyBcCiAJZXZlbnQtbG9v cC5vIGV2ZW50LXRvcC5vIGluZi1sb29wLm8gY29tcGxldGVyLm8gXAogCWdk YmFyY2gubyBhcmNoLXV0aWxzLm8gZ2RidHlwZXMubyBvc2FiaS5vIGNvcHlp bmcubyBcCi0JbWVtYXR0ci5vIG1lbS1icmVhay5vIHRhcmdldC5vIHBhcnNl Lm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKKwltZW1hdHRyLm8gbWVtLWJy ZWFrLm8gdGFyZ2V0Lm8gcGFyc2UubyBwaXBlLm8gbGFuZ3VhZ2UubyBidWls ZHN5bS5vIFwKIAlmaW5kY21kLm8gXAogCXN0ZC1yZWdzLm8gXAogCXNpZ25h bHMubyBcCmRpZmYgLXJ1cCBzcmMvZ2RiL05FV1MgZHN0L2dkYi9ORVdTCi0t LSBzcmMvZ2RiL05FV1MJMjAxMS0wOC0xNCAwNzoyNzo1MS41ODIyMzMwMDAg KzA1MzAKKysrIGRzdC9nZGIvTkVXUwkyMDExLTA4LTE0IDA3OjUwOjM4LjU2 MjIzNDQ5OCArMDUzMApAQCAtNjQsNiArNjQsOSBAQAogCiAqIE5ldyBjb21t YW5kcyAiaW5mbyBtYWNyb3MiLCBhbmQgImluZm8gZGVmaW5pdGlvbnMiIGhh dmUgYmVlbiBhZGRlZC4KIAorKiBOZXcgY29tbWFuZCAicGlwZSIgaGFzIGJl ZW4gYWRkZWQgdG8gbWFrZSBHREIgY29tbWFuZCBvdXRwdXQgYXZhaWxhYmxl IHRvIHRoZQorICBzaGVsbCBmb3IgcHJvY2Vzc2luZy4gCisKICogQ2hhbmdl ZCBjb21tYW5kcwogCiB3YXRjaCBFWFBSRVNTSU9OIG1hc2sgTUFTS19WQUxV RQpkaWZmIC1ydXAgc3JjL2dkYi9waXBlLmMgZHN0L2dkYi9waXBlLmMKLS0t IHNyYy9nZGIvcGlwZS5jCTIwMTEtMDctMjkgMTU6MTU6MjYuMDc4MDQ4NTE3 ICswNTMwCisrKyBkc3QvZ2RiL3BpcGUuYwkyMDExLTA4LTE2IDE0OjA1OjU2 Ljc3MTY2NTk5OSArMDUzMApAQCAtMCwwICsxLDIyNyBAQAorLyogRXZlcnl0 aGluZyBhYm91dCBwaXBlLCBmb3IgR0RCLgorCisgICBDb3B5cmlnaHQgKEMp IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlIDxjdHlw ZS5oPgorI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyNpbmNsdWRlICJ1aS1m aWxlLmgiCisjaW5jbHVkZSAidWktb3V0LmgiCisjaW5jbHVkZSAiY2xpL2Ns aS11dGlscy5oIgorI2luY2x1ZGUgImdkYmNtZC5oIgorI2luY2x1ZGUgImxp YmliZXJ0eS5oIgorI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKworI2lmIGRl ZmluZWQoX19NSU5HVzMyX18pCisjZGVmaW5lIFNIRUxMICJjbWQuZXhlIgor I2RlZmluZSBPUFRJT05fVE9fU0hFTEwgIi9jIgorI2Vsc2UKKyNkZWZpbmUg U0hFTEwgIi9iaW4vc2giCisjZGVmaW5lIE9QVElPTl9UT19TSEVMTCAiLWMi CisjZW5kaWYKKworLyogU3RydWN0dXJlIHRvIGVuY2Fwc3VsYXRlIGFsbCBl bnRpdGllcyBhc3NvY2lhdGVkIHdpdGggcGlwZS4gICovCisKK3N0cnVjdCBw aXBlX29iagoreworICAvKiBUaGUgZGVsaW1pdGVyIHRvIHNlcGFyYXRlIG91 dCBnZGItY29tbWFuZCBhbmQgc2hlbGwtY29tbWFuZC4gIFRoaXMgY2FuIGJl CisgICAgIGFueSBhcmJpdHJhcnkgc3RyaW5nIHdpdGhvdXQgY29udGFpbmlu ZyBhbnkgd2hpdGVzcGFjZS4gICovCisgIGNoYXIgKmRsaW07CisKKyAgLyog VGhlIGdkYi1jb21tYW5kLiAgKi8KKyAgY2hhciAqZ2RiX2NtZDsKKworICAv KiBUaGUgc2hlbGwtY29tbWFuZC4gICovCisgIGNoYXIgKnNoZWxsX2NtZDsK KworICAvKiBUaGUgZ2RiLXNpZGUgc3RyZWFtIHBvaW50ZXIgdG8gdGhlIHBp cGUuICAqLworICBGSUxFICpoYW5kbGU7CisKKyAgLyogVGhlIHBleCBvYmpl Y3QgdXNlZCB0byBjcmVhdGUgcGlwZWxpbmUgYmV0d2VlbiBnZGIgYW5kIHNo ZWxsLiAgKi8KKyAgc3RydWN0IHBleF9vYmogKnBleDsKK307CisKKy8qIERl c3RydWN0IHBpcGUgb2JqZWN0IHJlZmVyZW5jZWQgYnkgQVJHLiAgKi8KKwor c3RhdGljIHZvaWQKK2Rlc3RydWN0X3BpcGUgKHZvaWQgKmFyZykKK3sKKyAg c3RydWN0IHBpcGVfb2JqICpwaXBlID0gKHN0cnVjdCBwaXBlX29iaiAqKSBh cmc7CisKKyAgaWYgKHBpcGUtPmhhbmRsZSAhPSBOVUxMKQorICAgIGZjbG9z ZSAocGlwZS0+aGFuZGxlKTsKKworICBpZiAocGlwZS0+cGV4ICE9IE5VTEwp CisgICAgeworICAgICAgaW50IHN0YXR1czsKKworICAgICAgLyogV2FpdCB0 aWxsIHRoZSBwcm9jZXNzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBwaXBl IGNvbXBsZXRlcyBpdHMKKwkgam9iIGJlZm9yZSBjbG9zaW5nIGl0cyBmaWxl IGRlc2NyaXB0b3JzLiAgKi8KKyAgICAgIHBleF9nZXRfc3RhdHVzIChwaXBl LT5wZXgsIDEsICZzdGF0dXMpOworCisgICAgICBpZiAoIVdJRkVYSVRFRCAo c3RhdHVzKSkKKwl3YXJuaW5nIChfKCJFeGVjdXRpb24gb2Ygc2hlbGwtY29t bWFuZCBgJXMnIG1heSBub3QgYmUgY29tcGxldGVkIiksCisJCSBwaXBlLT5z aGVsbF9jbWQpOworCisgICAgICBwZXhfZnJlZSAocGlwZS0+cGV4KTsKKyAg ICB9CisKKyAgeGZyZWUgKHBpcGUtPmRsaW0pOworICB4ZnJlZSAocGlwZSk7 Cit9CisKKy8qIENvbnN0cnVjdCBhIHBpcGUgb2JqZWN0IGJ5IHBhcnNpbmcg YXJndW1lbnQgQVJHIHRvIHRoZSBwaXBlIGNvbW1hbmQuICAqLworCitzdGF0 aWMgc3RydWN0IHBpcGVfb2JqICoKK2NvbnN0cnVjdF9waXBlIChjaGFyICph cmcpCit7CisgIGNoYXIgKnAsICp0OworICBzdHJ1Y3QgcGlwZV9vYmogKnBp cGUgPSBOVUxMOworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKworICBp ZiAoYXJnID09IE5VTEwpCisgICAgZXJyb3IgKF8oIk5vIGFyZ3VtZW50IGlz IHNwZWNpZmllZCIpKTsKKworICBwaXBlID0gWENORVcgKHN0cnVjdCBwaXBl X29iaik7CisgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKGRlc3RydWN0X3Bp cGUsIHBpcGUpOworCisgIHAgPSB4c3RyZHVwIChhcmcpOworICBwaXBlLT5k bGltID0gcDsKKworICBpZiAoKnBpcGUtPmRsaW0gPT0gJy0nKQorICAgIGVy cm9yIChfKCJEZWxpbWl0ZXIgcGF0dGVybiBzaG91bGQgbm90IHN0YXJ0IHdp dGggJy0nIikpOworCisgIHQgPSBza2lwX3RvX3NwYWNlIChwKTsKKyAgcCA9 IHNraXBfc3BhY2VzICh0KTsKKworICBpZiAoKnAgPT0gJ1wwJykKKyAgICBl cnJvciAoXygiTm8gZ2RiLWNvbW1hbmQgaXMgc3BlY2lmaWVkIikpOworCisg ICp0ID0gJ1wwJzsKKyAgcGlwZS0+Z2RiX2NtZCA9IHA7CisKKyAgZm9yICg7 OykKKyAgICB7CisgICAgICB0ID0gc2tpcF90b19zcGFjZSAocCk7CisKKyAg ICAgIGlmICgqdCA9PSAnXDAnKQorCWVycm9yIChfKCJObyBzaGVsbC1jb21t YW5kIGlzIHNwZWNpZmllZCIpKTsKKworICAgICAgLyogQ2hlY2sgd2hldGhl ciB0aGUgdG9rZW4gc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgbWF0Y2hlcyB3 aXRoCisJIGRlbGltaXRlci4gICovIAorICAgICAgaWYgKG1lbWNtcCAocCwg cGlwZS0+ZGxpbSwgKHQgLSBwKSkgPT0gMAorCSAgJiYgcGlwZS0+ZGxpbVt0 IC0gcF0gPT0gJ1wwJykKKwl7CisJICAqcCA9ICdcMCc7CisJICBwaXBlLT5z aGVsbF9jbWQgPSBza2lwX3NwYWNlcyAodCk7CisJICBicmVhazsKKwl9CisK KyAgICAgICBwID0gc2tpcF9zcGFjZXMgKHQpOworICAgIH0KKworICBkaXNj YXJkX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgcmV0dXJuIHBpcGU7Cit9CisK Ky8qIFJ1biBleGVjdXRlX2NvbW1hbmQgZm9yIFBJUEUgYW5kIEZST01fVFRZ LiAgV3JpdGUgb3V0cHV0IHRvIHRoZSBwaXBlLCBkbyBub3QKKyAgIGRpc3Bs YXkgaXQgdG8gdGhlIHNjcmVlbi4gICovCisKK3N0YXRpYyB2b2lkCitleGVj dXRlX2NvbW1hbmRfdG9fcGlwZSAoc3RydWN0IHBpcGVfb2JqICpwaXBlLCBp bnQgZnJvbV90dHkpCit7CisgIGNoYXIgKmFyZ3ZbNF07CisgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwOworICBzdHJ1Y3QgdWlfZmlsZSAqZnA7CisgIGlu dCBzdGF0dXM7CisgIGNvbnN0IGNoYXIgKmVycm1zZzsKKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0aW9uOworCisgIGFyZ3ZbMF0g PSBTSEVMTDsKKyAgYXJndlsxXSA9IE9QVElPTl9UT19TSEVMTDsKKyAgYXJn dlsyXSA9IHBpcGUtPnNoZWxsX2NtZDsKKyAgYXJndlszXSA9IE5VTEw7CisK KyAgcGlwZS0+cGV4ID0gcGV4X2luaXQgKFBFWF9VU0VfUElQRVMsIGFyZ3Zb MF0sIE5VTEwpOworICBwaXBlLT5oYW5kbGUgPSBwZXhfaW5wdXRfcGlwZSAo cGlwZS0+cGV4LCAwKTsKKworICBpZiAocGlwZS0+aGFuZGxlID09IE5VTEwp CisgICAgZXJyb3IgKF8oIkZhaWxlZCB0byBjcmVhdGUgcGlwZSIpKTsKKwor ICBlcnJtc2cgPSBwZXhfcnVuIChwaXBlLT5wZXgsIFBFWF9MQVNULCBhcmd2 WzBdLCBhcmd2LCBOVUxMLCBOVUxMLCAmc3RhdHVzKTsKKworICBpZiAoZXJy bXNnICE9IE5VTEwpCisgICAgZXJyb3IgKF8oIkZhaWxlZCB0byBleGVjdXRl IHNoZWxsLWNvbW1hbmQgYCVzJyBvbiBwaXBlOiAlcyIpLAorCSAgIHBpcGUt PnNoZWxsX2NtZCwgZXJybXNnKTsKKworICAvKiBHREJfU1RET1VUIHNob3Vs ZCBiZSBiZXR0ZXIgYWxyZWFkeSByZXN0b3JlZCBkdXJpbmcgdGhlc2UKKyAg ICAgcmVzdG9yYXRpb24gY2FsbGJhY2tzLiAgKi8KKyAgY2xlYW51cCA9IHNl dF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2lu Zm8gKCk7CisgIGZwID0gc3RkaW9fZmlsZW9wZW4gKHBpcGUtPmhhbmRsZSk7 CisgIG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoZnApOworICBtYWtl X2NsZWFudXBfcmVzdG9yZV91aV9maWxlICgmZ2RiX3N0ZG91dCk7CisgIG1h a2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkZXJyKTsKKyAg bWFrZV9jbGVhbnVwX3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGRsb2cpOwor ICBtYWtlX2NsZWFudXBfcmVzdG9yZV91aV9maWxlICgmZ2RiX3N0ZHRhcmcp OworICBtYWtlX2NsZWFudXBfcmVzdG9yZV91aV9maWxlICgmZ2RiX3N0ZHRh cmdlcnIpOworCisgIGlmICh1aV9vdXRfcmVkaXJlY3QgKGN1cnJlbnRfdWlv dXQsIGZwKSA8IDApCisgICAgd2FybmluZyAoXygiQ3VycmVudCBvdXRwdXQg cHJvdG9jb2wgZG9lcyBub3Qgc3VwcG9ydCByZWRpcmVjdGlvbiIpKTsKKyAg ZWxzZSAKKyAgICBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCAo Y3VycmVudF91aW91dCk7CisKKyAgZ2RiX3N0ZG91dCA9IGZwOworICBnZGJf c3RkZXJyID0gZnA7CisgIGdkYl9zdGRsb2cgPSBmcDsKKyAgZ2RiX3N0ZHRh cmcgPSBmcDsKKyAgZ2RiX3N0ZHRhcmdlcnIgPSBmcDsKKworICBUUllfQ0FU Q0ggKGV4Y2VwdGlvbiwgUkVUVVJOX01BU0tfRVJST1IpCisgICAgeworICAg ICAgZXhlY3V0ZV9jb21tYW5kIChwaXBlLT5nZGJfY21kLCBmcm9tX3R0eSk7 CisgICAgfQorCisgIGlmIChleGNlcHRpb24ucmVhc29uIDwgMCkKKyAgICBl eGNlcHRpb25fcHJpbnQgKGdkYl9zdGRlcnIsIGV4Y2VwdGlvbik7CisKKyAg ZG9fY2xlYW51cHMgKGNsZWFudXApOworfQorCisvKiBFeGVjdXRlIHRoZSBw aXBlIGNvbW1hbmQgd2l0aCBhcmd1bWVudCBBUkcgYW5kIEZST01fVFRZLiAg Ki8KKworc3RhdGljIHZvaWQKK3BpcGVfY29tbWFuZCAoY2hhciAqYXJnLCBp bnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBwaXBlX29iaiAqcGlwZSA9IGNv bnN0cnVjdF9waXBlIChhcmcpOworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51 cCA9IG1ha2VfY2xlYW51cCAoZGVzdHJ1Y3RfcGlwZSwgcGlwZSk7CisKKyAg ZXhlY3V0ZV9jb21tYW5kX3RvX3BpcGUgKHBpcGUsIGZyb21fdHR5KTsKKyAg ZG9fY2xlYW51cHMgKGNsZWFudXApOworfQorCisvKiBNb2R1bGUgaW5pdGlh bGl6YXRpb24uICAqLworCit2b2lkCitfaW5pdGlhbGl6ZV9waXBlICh2b2lk KQoreworICBhZGRfY21kICgicGlwZSIsIG5vX2NsYXNzLCBwaXBlX2NvbW1h bmQsIF8oIlwKK0NyZWF0ZSBwaXBlIHRvIHBhc3MgZ2RiLWNvbW1hbmQgb3V0 cHV0IHRvIHRoZSBzaGVsbCBmb3IgcHJvY2Vzc2luZy5cblwKK0FyZ3VtZW50 cyBhcmUgYSBkZWxpbWl0ZXIsIGZvbGxvd2VkIGJ5IGEgZ2RiLWNvbW1hbmQs IHRoZW4gdGhlIHNhbWUgZGVsaW1pdGVyIFwKK2FnYWluIGFuZCBmaW5hbGx5 IGEgc2hlbGwtY29tbWFuZC4iKSwKKwkgICAmY21kbGlzdCk7Cit9Cg== --0015174c162893e32104aa9ec01b Content-Type: application/octet-stream; name=ChangeLog Content-Disposition: attachment; filename=ChangeLog Content-Transfer-Encoding: base64 X-Attachment-Id: f_grev7s5p1 Content-length: 366 MjAxMS0wNy0yOSBBYmhpaml0IEhhbGRlciA8YWJoaWppdC5rLmhhbGRlckBn bWFpbC5jb20+CgoJSW1wbGVtZW50YXRpb24gb2YgcGlwZSB0byBtYWtlIEkv TyBjb21tdW5pY2F0aW9uIAoJYmV0d2VlbiBnZGIgYW5kIHNoZWxsLgoKCSog cGlwZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFk ZCBwaXBlLmMuCgkoQ09NTU9OX09CUyk6IEFkZCBwaXBlLm8uIAoJKiBORVdT OiBBZGQgbmV3cyBpdGVtIGZvciB0aGUgbmV3IGNvbW1hbmQgYHBpcGUnLgo= --0015174c162893e32104aa9ec01b--