From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14172 invoked by alias); 14 Apr 2010 22:01:06 -0000 Received: (qmail 14042 invoked by uid 22791); 14 Apr 2010 22:01:01 -0000 X-SWARE-Spam-Status: No, hits=-1.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SARE_MSGID_LONG45,SPF_HELO_PASS,TW_RG,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 14 Apr 2010 22:00:51 +0000 Received: from hpaq14.eem.corp.google.com (hpaq14.eem.corp.google.com [10.3.21.14]) by smtp-out.google.com with ESMTP id o3EM0mcd023907 for ; Thu, 15 Apr 2010 00:00:48 +0200 Received: from pwj7 (pwj7.prod.google.com [10.241.219.71]) by hpaq14.eem.corp.google.com with ESMTP id o3EM0kLr005249 for ; Thu, 15 Apr 2010 00:00:46 +0200 Received: by pwj7 with SMTP id 7so619951pwj.30 for ; Wed, 14 Apr 2010 15:00:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.247.17 with HTTP; Wed, 14 Apr 2010 15:00:45 -0700 (PDT) In-Reply-To: <83iq80zali.fsf@gnu.org> References: <20100406215751.7EC1784397@ruffy.mtv.corp.google.com> <8339z512xz.fsf@gnu.org> <83mxxczfha.fsf@gnu.org> <83iq80zali.fsf@gnu.org> Date: Wed, 14 Apr 2010 22:01:00 -0000 Received: by 10.141.110.4 with SMTP id n4mr7681833rvm.261.1271282445630; Wed, 14 Apr 2010 15:00:45 -0700 (PDT) Message-ID: Subject: Re: [RFA] Add -s option to source command. From: Doug Evans To: Eli Zaretskii Cc: tromey@redhat.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00221540002694bc8f048439821a X-System-Of-Record: true 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: 2010-04/txt/msg00458.txt.bz2 --00221540002694bc8f048439821a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3790 On Fri, Apr 9, 2010 at 12:31 PM, Eli Zaretskii wrote: >> Date: Fri, 9 Apr 2010 11:12:27 -0700 >> From: Doug Evans >> Cc: tromey@redhat.com, gdb-patches@sourceware.org >> >> > This is fine, but what if @var{filename} is @file{d:/foo/myscript} (on >> > Windows)? >> >> source.c:openp() doesn't handle that case, it just blindly concatenates. >> [presumably because it hasn't needed to] >> >> I don't have an opinion on what *should* happen here. >> Possibilities are to either not try or remove the drive spec. > > My vote is for removing the drive letter. =A0The other alternative means > that absolute file names are handled inconsistently across platforms > (I assume that not trying to look for absolute file name on Posix > platforms will not be a useful behavior). Hi. Here is the patch I will check in pending approval of the doc changes to mention dos drive spec handling. 2010-04-08 Doug Evans Add -s option to source command. * NEWS: Document new option. * cli/cli-cmds.c (find_and_open_script): Add function comment. Delete from_tty and cleanupp args. Split filep arg into file and full_pathp. New arg search_path. (source_script_from_stream): New function. (source_script_with_search): New function. (source_script): Rewrite. (source_command): Parse "-s" option. (init_cli_cmds): Add "-s" docs to source command help, and reformat. * python/python.c (source_python_script): Make file arg a const char *. Don't call fclose, leave for caller. * python/python.h (source_python_script): Update. testsuite/ * gdb.base/source-test.gdb: New file. * gdb.base/source.exp: Add tests for "source -s". doc/ * gdb.texinfo (Command Files): Add docs for new "source -s" option. Index: doc/gdb.texinfo =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.704 diff -u -p -r1.704 gdb.texinfo --- doc/gdb.texinfo 14 Apr 2010 12:02:44 -0000 1.704 +++ doc/gdb.texinfo 14 Apr 2010 21:54:37 -0000 @@ -19373,7 +19373,7 @@ using the @code{script-extension} settin @table @code @kindex source @cindex execute commands from a file -@item source [@code{-v}] @var{filename} +@item source [-s] [-v] @var{filename} Execute the command file @var{filename}. @end table @@ -19390,6 +19390,21 @@ directory, then @value{GDBN} also looks except that @file{$cdir} is not searched because the compilation directory is not relevant to scripts. +If @code{-s} is specified, then @value{GDBN} searches for @var{filename} +on the search path even if @var{filename} specifies a directory. +The search is done by appending @var{filename} to each element of the +search path. So, for example, if @var{filename} is @file{mylib/myscript} +and the search path contains @file{/home/user} then @value{GDBN} will +look for the script @file{/home/user/mylib/myscript}. +The search is also done if @var{filename} is an absolute path. +For example, if @var{filename} is @file{/tmp/myscript} and +the search path contains @file{/home/user} then @value{GDBN} will +look for the script @file{/home/user/tmp/myscript}. +For DOS-like systems, if @var{filename} contains a drive specification, +it is stripped before concatenation. For example, if @var{filename} is +@file{d:myscript} and the search path contains @file{c:/tmp} then @value{G= DBN} +will look for the script @file{c:/tmp/myscript}. + If @code{-v}, for verbose mode, is given then @value{GDBN} displays each command as it is executed. The option must be given before @var{filename}, and is interpreted as part of the filename anywhere else. Full patch attached. --00221540002694bc8f048439821a Content-Type: text/plain; charset=US-ASCII; name="gdb-100414-source-s-3.patch.txt" Content-Disposition: attachment; filename="gdb-100414-source-s-3.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g80oq6m60 Content-length: 18040 MjAxMC0wNC0wOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCUFk ZCAtcyBvcHRpb24gdG8gc291cmNlIGNvbW1hbmQuCgkqIE5FV1M6IERvY3Vt ZW50IG5ldyBvcHRpb24uCgkqIGNsaS9jbGktY21kcy5jIChmaW5kX2FuZF9v cGVuX3NjcmlwdCk6IEFkZCBmdW5jdGlvbiBjb21tZW50LgoJRGVsZXRlIGZy b21fdHR5IGFuZCBjbGVhbnVwcCBhcmdzLiAgU3BsaXQgZmlsZXAgYXJnIGlu dG8gZmlsZSBhbmQKCWZ1bGxfcGF0aHAuICBOZXcgYXJnIHNlYXJjaF9wYXRo LgoJKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXcgZnVuY3Rpb24u Cgkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IE5ldyBmdW5jdGlvbi4K CShzb3VyY2Vfc2NyaXB0KTogUmV3cml0ZS4KCShzb3VyY2VfY29tbWFuZCk6 IFBhcnNlICItcyIgb3B0aW9uLgoJKGluaXRfY2xpX2NtZHMpOiBBZGQgIi1z IiBkb2NzIHRvIHNvdXJjZSBjb21tYW5kIGhlbHAsIGFuZCByZWZvcm1hdC4K CSogcHl0aG9uL3B5dGhvbi5jIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE1h a2UgZmlsZSBhcmcgYSBjb25zdCBjaGFyICouCglEb24ndCBjYWxsIGZjbG9z ZSwgbGVhdmUgZm9yIGNhbGxlci4KCSogcHl0aG9uL3B5dGhvbi5oIChzb3Vy Y2VfcHl0aG9uX3NjcmlwdCk6IFVwZGF0ZS4KCgl0ZXN0c3VpdGUvCgkqIGdk Yi5iYXNlL3NvdXJjZS10ZXN0LmdkYjogTmV3IGZpbGUuCgkqIGdkYi5iYXNl L3NvdXJjZS5leHA6IEFkZCB0ZXN0cyBmb3IgInNvdXJjZSAtcyIuCgoJZG9j LwoJKiBnZGIudGV4aW5mbyAoQ29tbWFuZCBGaWxlcyk6IEFkZCBkb2NzIGZv ciBuZXcgInNvdXJjZSAtcyIgb3B0aW9uLgoKSW5kZXg6IE5FV1MKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9O RVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2OQpkaWZmIC11IC1wIC1y MS4zNjkgTkVXUwotLS0gTkVXUwk5IEFwciAyMDEwIDE1OjI2OjU0IC0wMDAw CTEuMzY5CisrKyBORVdTCTE0IEFwciAyMDEwIDIxOjU0OjM3IC0wMDAwCkBA IC0zLDYgKzMsMTAgQEAKIAogKioqIENoYW5nZXMgc2luY2UgR0RCIDcuMQog CisqIFRoZSBzb3VyY2UgY29tbWFuZCBub3cgYWNjZXB0cyBhIC1zIG9wdGlv biB0byBmb3JjZSBzZWFyY2hpbmcgZm9yIHRoZQorICBzY3JpcHQgaW4gdGhl IHNvdXJjZSBzZWFyY2ggcGF0aCBldmVuIGlmIHRoZSBzY3JpcHQgbmFtZSBz cGVjaWZpZXMKKyAgYSBkaXJlY3RvcnkuCisKICogTmV3IGZlYXR1cmVzIGlu IHRoZSBHREIgcmVtb3RlIHN0dWIsIEdEQnNlcnZlcgogCiAgIC0gR0RCc2Vy dmVyIG5vdyBzdXBwb3J0IHRyYWNlcG9pbnRzLiAgVGhlIGZlYXR1cmUgaXMg Y3VycmVudGx5CkluZGV4OiBjbGkvY2xpLWNtZHMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2NsaS9jbGkt Y21kcy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwMApkaWZmIC11IC1w IC1yMS4xMDAgY2xpLWNtZHMuYwotLS0gY2xpL2NsaS1jbWRzLmMJOSBBcHIg MjAxMCAwMzowMDo1OCAtMDAwMAkxLjEwMAorKysgY2xpL2NsaS1jbWRzLmMJ MTQgQXByIDIwMTAgMjE6NTQ6MzcgLTAwMDAKQEAgLTQ3MCw2MiArNDcwLDU5 IEBAIFNjcmlwdCBmaWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMK IAkJICAgIHZhbHVlKTsKIH0KIAorLyogVHJ5IHRvIG9wZW4gU0NSSVBUX0ZJ TEUuCisgICBJZiBzdWNjZXNzZnVsLCB0aGUgZnVsbCBwYXRoIG5hbWUgaXMg c3RvcmVkIGluICpGVUxMX1BBVEhQLAorICAgdGhlIHN0cmVhbSBpcyBzdG9y ZWQgaW4gKlNUUkVBTVAsIGFuZCByZXR1cm4gMS4KKyAgIFRoZSBjYWxsZXIg aXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgKkZVTExfUEFUSFAuCisgICBJ ZiBub3Qgc3VjY2Vzc2Z1bCwgcmV0dXJuIDA7IGVycm5vIGlzIHNldCBmb3Ig dGhlIGxhc3QgZmlsZQorICAgd2UgdHJpZWQgdG8gb3Blbi4KKworICAgSWYg U0VBUkNIX1BBVEggaXMgbm9uLXplcm8sIGFuZCB0aGUgZmlsZSBpc24ndCBm b3VuZCBpbiBjd2QsCisgICBzZWFyY2ggZm9yIGl0IGluIHRoZSBzb3VyY2Ug c2VhcmNoIHBhdGguCisKKyAgIE5PVEU6IFRoaXMgY2FsbHMgb3BlbnAgd2hp Y2ggdXNlcyB4ZnVsbHBhdGggdG8gY29tcHV0ZSB0aGUgZnVsbCBwYXRoCisg ICBpbnN0ZWFkIG9mIGdkYl9yZWFscGF0aC4gIFN5bWJvbGljIGxpbmtzIGFy ZSBub3QgcmVzb2x2ZWQuICAqLworCiBzdGF0aWMgaW50Ci1maW5kX2FuZF9v cGVuX3NjcmlwdCAoaW50IGZyb21fdHR5LCBjaGFyICoqZmlsZXAsIEZJTEUg KipzdHJlYW1wLAotCQkgICAgICBzdHJ1Y3QgY2xlYW51cCAqKmNsZWFudXBw KQorZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKnNjcmlwdF9m aWxlLCBpbnQgc2VhcmNoX3BhdGgsCisJCSAgICAgIEZJTEUgKipzdHJlYW1w LCBjaGFyICoqZnVsbF9wYXRocCkKIHsKLSAgY2hhciAqZmlsZSA9ICpmaWxl cDsKLSAgY2hhciAqZnVsbF9wYXRobmFtZSA9IE5VTEw7CisgIGNoYXIgKmZp bGU7CiAgIGludCBmZDsKICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVw czsKKyAgaW50IHNlYXJjaF9mbGFncyA9IE9QRl9UUllfQ1dEX0ZJUlNUOwog Ci0gIGZpbGUgPSB0aWxkZV9leHBhbmQgKGZpbGUpOworICBmaWxlID0gdGls ZGVfZXhwYW5kIChzY3JpcHRfZmlsZSk7CiAgIG9sZF9jbGVhbnVwcyA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIGZpbGUpOwogCi0gIC8qIFNlYXJjaCBmb3Ig YW5kIG9wZW4gJ2ZpbGUnIG9uIHRoZSBzZWFyY2ggcGF0aCB1c2VkIGZvciBz b3VyY2UKLSAgICAgZmlsZXMuICBQdXQgdGhlIGZ1bGwgbG9jYXRpb24gaW4g J2Z1bGxfcGF0aG5hbWUnLiAgKi8KLSAgZmQgPSBvcGVucCAoc291cmNlX3Bh dGgsIE9QRl9UUllfQ1dEX0ZJUlNULAotCSAgICAgIGZpbGUsIE9fUkRPTkxZ LCAmZnVsbF9wYXRobmFtZSk7Ci0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1 bGxfcGF0aG5hbWUpOworICBpZiAoc2VhcmNoX3BhdGgpCisgICAgc2VhcmNo X2ZsYWdzIHw9IE9QRl9TRUFSQ0hfSU5fUEFUSDsKIAotICAvKiBVc2UgdGhl IGZ1bGwgcGF0aCBuYW1lLCBpZiBpdCBpcyBmb3VuZC4gICovCi0gIGlmIChm dWxsX3BhdGhuYW1lICE9IE5VTEwgJiYgZmQgIT0gLTEpCi0gICAgewotICAg ICAgZmlsZSA9IGZ1bGxfcGF0aG5hbWU7Ci0gICAgfQorICAvKiBTZWFyY2gg Zm9yIGFuZCBvcGVuICdmaWxlJyBvbiB0aGUgc2VhcmNoIHBhdGggdXNlZCBm b3Igc291cmNlCisgICAgIGZpbGVzLiAgUHV0IHRoZSBmdWxsIGxvY2F0aW9u IGluICpGVUxMX1BBVEhQLiAgKi8KKyAgZmQgPSBvcGVucCAoc291cmNlX3Bh dGgsIHNlYXJjaF9mbGFncywKKwkgICAgICBmaWxlLCBPX1JET05MWSwgZnVs bF9wYXRocCk7CiAKICAgaWYgKGZkID09IC0xKQogICAgIHsKLSAgICAgIGlm IChmcm9tX3R0eSkKLQlwZXJyb3Jfd2l0aF9uYW1lIChmaWxlKTsKLSAgICAg IGVsc2UKLQl7Ci0JICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLQkg IHJldHVybiAwOwotCX0KKyAgICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87 CisgICAgICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyAgICAgIGVy cm5vID0gc2F2ZV9lcnJubzsKKyAgICAgIHJldHVybiAwOwogICAgIH0KIAot ICAqc3RyZWFtcCA9IGZkb3BlbiAoZmQsIEZPUEVOX1JUKTsKLSAgKmZpbGVw ID0gZmlsZTsKLSAgKmNsZWFudXBwID0gb2xkX2NsZWFudXBzOworICBkb19j bGVhbnVwcyAob2xkX2NsZWFudXBzKTsKIAorICAqc3RyZWFtcCA9IGZkb3Bl biAoZmQsIEZPUEVOX1JUKTsKICAgcmV0dXJuIDE7CiB9CiAKLXZvaWQKLXNv dXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKLXsKLSAg RklMRSAqc3RyZWFtOwotICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBz OwotCi0gIGlmIChmaWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICB7 Ci0gICAgICBlcnJvciAoXygic291cmNlIGNvbW1hbmQgcmVxdWlyZXMgZmls ZSBuYW1lIG9mIGZpbGUgdG8gc291cmNlLiIpKTsKLSAgICB9Ci0KLSAgaWYg KCFmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZnJvbV90dHksICZmaWxlLCAmc3Ry ZWFtLCAmb2xkX2NsZWFudXBzKSkKLSAgICByZXR1cm47CisvKiBMb2FkIHNj cmlwdCBGSUxFLCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIG9wZW5lZCBhcyBT VFJFQU0uCisgICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4u ICAqLwogCitzdGF0aWMgdm9pZAorc291cmNlX3NjcmlwdF9mcm9tX3N0cmVh bSAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmaWxlKQorewogICBpZiAo c2NyaXB0X2V4dF9tb2RlICE9IHNjcmlwdF9leHRfb2ZmCiAgICAgICAmJiBz dHJsZW4gKGZpbGUpID4gMyAmJiAhc3RyY21wICgmZmlsZVtzdHJsZW4gKGZp bGUpIC0gM10sICIucHkiKSkKICAgICB7CkBAIC01NDEsMjIgKzUzOCw2NCBA QCBzb3VyY2Vfc2NyaXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkpCiAJ ICBpZiAoc2NyaXB0X2V4dF9tb2RlID09IHNjcmlwdF9leHRfc29mdAogCSAg ICAgICYmIGUucmVhc29uID09IFJFVFVSTl9FUlJPUiAmJiBlLmVycm9yID09 IFVOU1VQUE9SVEVEX0VSUk9SKQogCSAgICB7Ci0JICAgICAgaWYgKCFmaW5k X2FuZF9vcGVuX3NjcmlwdCAoZnJvbV90dHksICZmaWxlLCAmc3RyZWFtLCAm b2xkX2NsZWFudXBzKSkKLQkJcmV0dXJuOwotCi0JICAgICAgc2NyaXB0X2Zy b21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKKwkgICAgICBmc2VlayAoc3RyZWFt LCAwLCBTRUVLX1NFVCk7CisJICAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3Ry ZWFtLCAoY2hhciopIGZpbGUpOwogCSAgICB9CiAJICBlbHNlCi0JICAgIC8q IE5vcGUsIGp1c3QgcHVudC4gICovCi0JICAgIHRocm93X2V4Y2VwdGlvbiAo ZSk7CisJICAgIHsKKwkgICAgICAvKiBOb3BlLCBqdXN0IHB1bnQuICAqLwor CSAgICAgIGZjbG9zZSAoc3RyZWFtKTsKKwkgICAgICB0aHJvd19leGNlcHRp b24gKGUpOworCSAgICB9CiAJfQorICAgICAgZWxzZQorCWZjbG9zZSAoc3Ry ZWFtKTsKICAgICB9CiAgIGVsc2UKICAgICBzY3JpcHRfZnJvbV9maWxlIChz dHJlYW0sIGZpbGUpOworfQogCisvKiBXb3JrZXIgdG8gcGVyZm9ybSB0aGUg InNvdXJjZSIgY29tbWFuZC4KKyAgIExvYWQgc2NyaXB0IEZJTEUuCisgICBJ ZiBTRUFSQ0hfUEFUSCBpcyBub24temVybywgYW5kIHRoZSBmaWxlIGlzbid0 IGZvdW5kIGluIGN3ZCwKKyAgIHNlYXJjaCBmb3IgaXQgaW4gdGhlIHNvdXJj ZSBzZWFyY2ggcGF0aC4gICovCisKK3N0YXRpYyB2b2lkCitzb3VyY2Vfc2Ny aXB0X3dpdGhfc2VhcmNoIChjb25zdCBjaGFyICpmaWxlLCBpbnQgZnJvbV90 dHksIGludCBzZWFyY2hfcGF0aCkKK3sKKyAgRklMRSAqc3RyZWFtOworICBj aGFyICpmdWxsX3BhdGg7CisgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51 cHM7CisKKyAgaWYgKGZpbGUgPT0gTlVMTCB8fCAqZmlsZSA9PSAwKQorICAg IGVycm9yIChfKCJzb3VyY2UgY29tbWFuZCByZXF1aXJlcyBmaWxlIG5hbWUg b2YgZmlsZSB0byBzb3VyY2UuIikpOworCisgIGlmICghZmluZF9hbmRfb3Bl bl9zY3JpcHQgKGZpbGUsIHNlYXJjaF9wYXRoLCAmc3RyZWFtLCAmZnVsbF9w YXRoKSkKKyAgICB7CisgICAgICAvKiBUaGUgc2NyaXB0IHdhc24ndCBmb3Vu ZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuCisJIElmIHRoZSBz b3VyY2UgY29tbWFuZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LCB0aHJv dyBhbiBlcnJvci4KKwkgT3RoZXJ3aXNlIChlLmcuIGlmIGl0IHdhcyBpbnZv a2VkIGJ5IGEgc2NyaXB0KSwgc2lsZW50bHkgaWdub3JlCisJIHRoZSBlcnJv ci4gICovCisgICAgICBpZiAoZnJvbV90dHkpCisJcGVycm9yX3dpdGhfbmFt ZSAoZmlsZSk7CisgICAgICBlbHNlCisJcmV0dXJuOworICAgIH0KKworICBv bGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgp OworICBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChzdHJlYW0sIGZpbGUp OwogICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKIH0KIAorLyogV3Jh cHBlciBhcm91bmQgc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCB0byBleHBv cnQgaXQgdG8gbWFpbi5jCisgICBmb3IgdXNlIGluIGxvYWRpbmcgLmdkYmlu aXQgc2NyaXB0cy4gICovCisKK3ZvaWQKK3NvdXJjZV9zY3JpcHQgKGNoYXIg KmZpbGUsIGludCBmcm9tX3R0eSkKK3sKKyAgc291cmNlX3NjcmlwdF93aXRo X3NlYXJjaCAoZmlsZSwgZnJvbV90dHksIDApOworfQorCiAvKiBSZXR1cm4g dGhlIHNvdXJjZV92ZXJib3NlIGdsb2JhbCB2YXJpYWJsZSB0byBpdHMgcHJl dmlvdXMgc3RhdGUKICAgIG9uIGV4aXQgZnJvbSB0aGUgc291cmNlIGNvbW1h bmQsIGJ5IHdoYXRldmVyIG1lYW5zLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC01 NzIsMzMgKzYxMSw1MiBAQCBzb3VyY2VfY29tbWFuZCAoY2hhciAqYXJncywg aW50IGZyb21fdHR5CiAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHM7 CiAgIGNoYXIgKmZpbGUgPSBhcmdzOwogICBpbnQgKm9sZF9zb3VyY2VfdmVy Ym9zZSA9IHhtYWxsb2MgKHNpemVvZihpbnQpKTsKKyAgaW50IHNlYXJjaF9w YXRoID0gMDsKIAogICAqb2xkX3NvdXJjZV92ZXJib3NlID0gc291cmNlX3Zl cmJvc2U7CiAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoc291cmNl X3ZlcmJvc2VfY2xlYW51cCwgb2xkX3NvdXJjZV92ZXJib3NlKTsKIAogICAv KiAtdiBjYXVzZXMgdGhlIHNvdXJjZSBjb21tYW5kIHRvIHJ1biBpbiB2ZXJi b3NlIG1vZGUuCisgICAgIC1zIGNhdXNlcyB0aGUgZmlsZSB0byBiZSBzZWFy Y2hlZCBpbiB0aGUgc291cmNlIHNlYXJjaCBwYXRoLAorICAgICBldmVuIGlm IHRoZSBmaWxlIG5hbWUgY29udGFpbnMgYSAnLycuCiAgICAgIFdlIHN0aWxs IGhhdmUgdG8gYmUgYWJsZSB0byBoYW5kbGUgZmlsZW5hbWVzIHdpdGggc3Bh Y2VzIGluIGEKICAgICAgYmFja3dhcmQgY29tcGF0aWJsZSB3YXksIHNvIGJ1 aWxkYXJndiBpcyBub3QgYXBwcm9wcmlhdGUuICAqLwogCiAgIGlmIChhcmdz KQogICAgIHsKLSAgICAgIC8qIE1ha2Ugc3VyZSBsZWFkaW5nIHdoaXRlIHNw YWNlIGRvZXMgbm90IGJyZWFrIHRoZSBjb21wYXJpc29ucy4gICovCi0gICAg ICB3aGlsZSAoaXNzcGFjZShhcmdzWzBdKSkKLQlhcmdzKys7Ci0KLSAgICAg IC8qIElzIC12IHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgc3RyaW5nPyAgKi8K LSAgICAgIGlmIChhcmdzWzBdID09ICctJyAmJiBhcmdzWzFdID09ICd2JyAm JiBpc3NwYWNlIChhcmdzWzJdKSkKKyAgICAgIHdoaWxlIChhcmdzWzBdICE9 ICdcMCcpCiAJewotCSAgc291cmNlX3ZlcmJvc2UgPSAxOworCSAgLyogTWFr ZSBzdXJlIGxlYWRpbmcgd2hpdGUgc3BhY2UgZG9lcyBub3QgYnJlYWsgdGhl IGNvbXBhcmlzb25zLiAgKi8KKwkgIHdoaWxlIChpc3NwYWNlKGFyZ3NbMF0p KQorCSAgICBhcmdzKys7CisKKwkgIGlmIChhcmdzWzBdICE9ICctJykKKwkg ICAgYnJlYWs7CisKKwkgIGlmIChhcmdzWzFdID09ICd2JyAmJiBpc3NwYWNl IChhcmdzWzJdKSkKKwkgICAgeworCSAgICAgIHNvdXJjZV92ZXJib3NlID0g MTsKKworCSAgICAgIC8qIFNraXAgcGFzc2VkIC12LiAgKi8KKwkgICAgICBh cmdzID0gJmFyZ3NbM107CisJICAgIH0KKwkgIGVsc2UgaWYgKGFyZ3NbMV0g PT0gJ3MnICYmIGlzc3BhY2UgKGFyZ3NbMl0pKQorCSAgICB7CisJICAgICAg c2VhcmNoX3BhdGggPSAxOwogCi0JICAvKiBUcmltIC12IGFuZCB3aGl0ZXNw YWNlIGZyb20gdGhlIGZpbGVuYW1lLiAgKi8KLQkgIGZpbGUgPSAmYXJnc1sz XTsKLQkgIHdoaWxlIChpc3NwYWNlIChmaWxlWzBdKSkKLQkgICAgZmlsZSsr OworCSAgICAgIC8qIFNraXAgcGFzc2VkIC1zLiAgKi8KKwkgICAgICBhcmdz ID0gJmFyZ3NbM107CisJICAgIH0KKwkgIGVsc2UKKwkgICAgYnJlYWs7CiAJ fQorCisgICAgICB3aGlsZSAoaXNzcGFjZSAoYXJnc1swXSkpCisJYXJncysr OworICAgICAgZmlsZSA9IGFyZ3M7CiAgICAgfQogCi0gIHNvdXJjZV9zY3Jp cHQgKGZpbGUsIGZyb21fdHR5KTsKKyAgc291cmNlX3NjcmlwdF93aXRoX3Nl YXJjaCAoZmlsZSwgZnJvbV90dHksIHNlYXJjaF9wYXRoKTsKIAogICBkb19j bGVhbnVwcyAob2xkX2NsZWFudXBzKTsKIH0KQEAgLTEzNzksOCArMTQzNywx MiBAQCBDb21tYW5kcyBkZWZpbmVkIGluIHRoaXMgd2F5IG1heSBoYXZlIHVw CiAKICAgc291cmNlX2hlbHBfdGV4dCA9IHhzdHJwcmludGYgKF8oIlwKIFJl YWQgY29tbWFuZHMgZnJvbSBhIGZpbGUgbmFtZWQgRklMRS5cblwKLU9wdGlv bmFsIC12IHN3aXRjaCAoYmVmb3JlIHRoZSBmaWxlbmFtZSkgY2F1c2VzIGVh Y2ggY29tbWFuZCBpblxuXAotRklMRSB0byBiZSBlY2hvZWQgYXMgaXQgaXMg ZXhlY3V0ZWQuXG5cCitcblwKK1VzYWdlOiBzb3VyY2UgWy1zXSBbLXZdIEZJ TEVcblwKKy1zOiBzZWFyY2ggZm9yIHRoZSBzY3JpcHQgaW4gdGhlIHNvdXJj ZSBzZWFyY2ggcGF0aCxcblwKKyAgICBldmVuIGlmIEZJTEUgY29udGFpbnMg ZGlyZWN0b3JpZXMuXG5cCistdjogZWFjaCBjb21tYW5kIGluIEZJTEUgaXMg ZWNob2VkIGFzIGl0IGlzIGV4ZWN1dGVkLlxuXAorXG5cCiBOb3RlIHRoYXQg dGhlIGZpbGUgXCIlc1wiIGlzIHJlYWQgYXV0b21hdGljYWxseSBpbiB0aGlz IHdheVxuXAogd2hlbiBHREIgaXMgc3RhcnRlZC4iKSwgZ2RiaW5pdCk7CiAg IGMgPSBhZGRfY21kICgic291cmNlIiwgY2xhc3Nfc3VwcG9ydCwgc291cmNl X2NvbW1hbmQsCkluZGV4OiBkb2MvZ2RiLnRleGluZm8KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9kb2MvZ2Ri LnRleGluZm8sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzA0CmRpZmYgLXUg LXAgLXIxLjcwNCBnZGIudGV4aW5mbwotLS0gZG9jL2dkYi50ZXhpbmZvCTE0 IEFwciAyMDEwIDEyOjAyOjQ0IC0wMDAwCTEuNzA0CisrKyBkb2MvZ2RiLnRl eGluZm8JMTQgQXByIDIwMTAgMjE6NTQ6MzcgLTAwMDAKQEAgLTE5MzczLDcg KzE5MzczLDcgQEAgdXNpbmcgdGhlIEBjb2Rle3NjcmlwdC1leHRlbnNpb259 IHNldHRpbgogQHRhYmxlIEBjb2RlCiBAa2luZGV4IHNvdXJjZQogQGNpbmRl eCBleGVjdXRlIGNvbW1hbmRzIGZyb20gYSBmaWxlCi1AaXRlbSBzb3VyY2Ug W0Bjb2Rley12fV0gQHZhcntmaWxlbmFtZX0KK0BpdGVtIHNvdXJjZSBbLXNd IFstdl0gQHZhcntmaWxlbmFtZX0KIEV4ZWN1dGUgdGhlIGNvbW1hbmQgZmls ZSBAdmFye2ZpbGVuYW1lfS4KIEBlbmQgdGFibGUKIApAQCAtMTkzOTAsNiAr MTkzOTAsMjEgQEAgZGlyZWN0b3J5LCB0aGVuIEB2YWx1ZXtHREJOfSBhbHNv IGxvb2tzIAogZXhjZXB0IHRoYXQgQGZpbGV7JGNkaXJ9IGlzIG5vdCBzZWFy Y2hlZCBiZWNhdXNlIHRoZSBjb21waWxhdGlvbiBkaXJlY3RvcnkKIGlzIG5v dCByZWxldmFudCB0byBzY3JpcHRzLgogCitJZiBAY29kZXstc30gaXMgc3Bl Y2lmaWVkLCB0aGVuIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3IgQHZhcntm aWxlbmFtZX0KK29uIHRoZSBzZWFyY2ggcGF0aCBldmVuIGlmIEB2YXJ7Zmls ZW5hbWV9IHNwZWNpZmllcyBhIGRpcmVjdG9yeS4KK1RoZSBzZWFyY2ggaXMg ZG9uZSBieSBhcHBlbmRpbmcgQHZhcntmaWxlbmFtZX0gdG8gZWFjaCBlbGVt ZW50IG9mIHRoZQorc2VhcmNoIHBhdGguICBTbywgZm9yIGV4YW1wbGUsIGlm IEB2YXJ7ZmlsZW5hbWV9IGlzIEBmaWxle215bGliL215c2NyaXB0fQorYW5k IHRoZSBzZWFyY2ggcGF0aCBjb250YWlucyBAZmlsZXsvaG9tZS91c2VyfSB0 aGVuIEB2YWx1ZXtHREJOfSB3aWxsCitsb29rIGZvciB0aGUgc2NyaXB0IEBm aWxley9ob21lL3VzZXIvbXlsaWIvbXlzY3JpcHR9LgorVGhlIHNlYXJjaCBp cyBhbHNvIGRvbmUgaWYgQHZhcntmaWxlbmFtZX0gaXMgYW4gYWJzb2x1dGUg cGF0aC4KK0ZvciBleGFtcGxlLCBpZiBAdmFye2ZpbGVuYW1lfSBpcyBAZmls ZXsvdG1wL215c2NyaXB0fSBhbmQKK3RoZSBzZWFyY2ggcGF0aCBjb250YWlu cyBAZmlsZXsvaG9tZS91c2VyfSB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsCits b29rIGZvciB0aGUgc2NyaXB0IEBmaWxley9ob21lL3VzZXIvdG1wL215c2Ny aXB0fS4KK0ZvciBET1MtbGlrZSBzeXN0ZW1zLCBpZiBAdmFye2ZpbGVuYW1l fSBjb250YWlucyBhIGRyaXZlIHNwZWNpZmljYXRpb24sCitpdCBpcyBzdHJp cHBlZCBiZWZvcmUgY29uY2F0ZW5hdGlvbi4gIEZvciBleGFtcGxlLCBpZiBA dmFye2ZpbGVuYW1lfSBpcworQGZpbGV7ZDpteXNjcmlwdH0gYW5kIHRoZSBz ZWFyY2ggcGF0aCBjb250YWlucyBAZmlsZXtjOi90bXB9IHRoZW4gQHZhbHVl e0dEQk59Cit3aWxsIGxvb2sgZm9yIHRoZSBzY3JpcHQgQGZpbGV7YzovdG1w L215c2NyaXB0fS4KKwogSWYgQGNvZGV7LXZ9LCBmb3IgdmVyYm9zZSBtb2Rl LCBpcyBnaXZlbiB0aGVuIEB2YWx1ZXtHREJOfSBkaXNwbGF5cwogZWFjaCBj b21tYW5kIGFzIGl0IGlzIGV4ZWN1dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJl IGdpdmVuIGJlZm9yZQogQHZhcntmaWxlbmFtZX0sIGFuZCBpcyBpbnRlcnBy ZXRlZCBhcyBwYXJ0IG9mIHRoZSBmaWxlbmFtZSBhbnl3aGVyZSBlbHNlLgpJ bmRleDogcHl0aG9uL3B5dGhvbi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvcHl0aG9uL3B5dGhvbi5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjMwCmRpZmYgLXUgLXAgLXIxLjMwIHB5 dGhvbi5jCi0tLSBweXRob24vcHl0aG9uLmMJMTQgQXByIDIwMTAgMTM6MTg6 NTUgLTAwMDAJMS4zMAorKysgcHl0aG9uL3B5dGhvbi5jCTE0IEFwciAyMDEw IDIxOjU0OjM3IC0wMDAwCkBAIC0zNjQsMTAgKzM2NCwxMSBAQCBnZGJweV9w YXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5CiB9CiAKIC8qIFJl YWQgYSBmaWxlIGFzIFB5dGhvbiBjb2RlLiAgU1RSRUFNIGlzIHRoZSBpbnB1 dCBmaWxlOyBGSUxFIGlzIHRoZQotICAgbmFtZSBvZiB0aGUgZmlsZS4gICov CisgICBuYW1lIG9mIHRoZSBmaWxlLgorICAgU1RSRUFNIGlzIG5vdCBjbG9z ZWQsIHRoYXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LiAgKi8K IAogdm9pZAotc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwg Y2hhciAqZmlsZSkKK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJl YW0sIGNvbnN0IGNoYXIgKmZpbGUpCiB7CiAgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwOwogCkBAIC0zNzUsNyArMzc2LDYgQEAgc291cmNlX3B5dGhvbl9z Y3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhcgogCiAgIFB5UnVuX1NpbXBsZUZp bGUgKHN0cmVhbSwgZmlsZSk7CiAKLSAgZmNsb3NlIChzdHJlYW0pOwogICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CiB9CiAKQEAgLTU2Miw5ICs1NjIsOCBA QCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0CiB9 CiAKIHZvaWQKLXNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0s IGNoYXIgKmZpbGUpCitzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3Ry ZWFtLCBjb25zdCBjaGFyICpmaWxlKQogewotICBmY2xvc2UgKHN0cmVhbSk7 CiAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9FUlJPUiwKIAkgICAgICAg XygiUHl0aG9uIHNjcmlwdGluZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMg Y29weSBvZiBHREIuIikpOwogfQpJbmRleDogcHl0aG9uL3B5dGhvbi5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvcHl0aG9uL3B5dGhvbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcK ZGlmZiAtdSAtcCAtcjEuNyBweXRob24uaAotLS0gcHl0aG9uL3B5dGhvbi5o CTE4IEphbiAyMDEwIDA2OjI1OjIyIC0wMDAwCTEuNworKysgcHl0aG9uL3B5 dGhvbi5oCTE0IEFwciAyMDEwIDIxOjU0OjM3IC0wMDAwCkBAIC0yNCw3ICsy NCw3IEBACiAKIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1h bmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CiAKLXZvaWQgc291cmNlX3B5 dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSk7Cit2b2lk IHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNo YXIgKmZpbGUpOwogCiBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJ CQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVz cywKSW5kZXg6IHRlc3RzdWl0ZS9nZGIuYmFzZS9zb3VyY2UuZXhwCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NvdXJjZS5leHAsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMTEKZGlmZiAtdSAtcCAtcjEuMTEgc291cmNlLmV4cAotLS0g dGVzdHN1aXRlL2dkYi5iYXNlL3NvdXJjZS5leHAJNyBBcHIgMjAxMCAwMzo0 NzoyMiAtMDAwMAkxLjExCisrKyB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc291cmNl LmV4cAkxNCBBcHIgMjAxMCAyMTo1NDozNyAtMDAwMApAQCAtNTEsNCArNTEs MTcgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInNvdXJjZSAke3NyY2Rpcn0vJHtz dQogICAgIH0KIH0KIAorZ2RiX3Rlc3QgImRpciAke3NyY2Rpcn0vJHtzdWJk aXJ9IiAiIgorZ2RiX3Rlc3QgInNvdXJjZSAtcyAuL3NvdXJjZS10ZXN0Lmdk YiIgXAorICAgICJ0ZXN0IHNvdXJjZSBvcHRpb25zIiBcCisgICAgInNvdXJj ZSAtcyIKKworIyBUZXN0IC12IGFuZCAtcyBpbiBlaXRoZXIgb3JkZXIuCitn ZGJfdGVzdCAic291cmNlIC1zIC12IC4vc291cmNlLXRlc3QuZ2RiIiBcCisg ICAgImVjaG8gdGVzdCBzb3VyY2Ugb3B0aW9ucy4qIiBcCisgICAgInNvdXJj ZSAtcyAtdiIKK2dkYl90ZXN0ICJzb3VyY2UgLXYgLXMgLi9zb3VyY2UtdGVz dC5nZGIiIFwKKyAgICAiZWNobyB0ZXN0IHNvdXJjZSBvcHRpb25zLioiIFwK KyAgICAic291cmNlIC12IC1zIgorCiBnZGJfZXhpdAo= --00221540002694bc8f048439821a--