From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10734 invoked by alias); 8 Apr 2010 22:49:58 -0000 Received: (qmail 10718 invoked by uid 22791); 8 Apr 2010 22:49:55 -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; Thu, 08 Apr 2010 22:49:47 +0000 Received: from hpaq2.eem.corp.google.com (hpaq2.eem.corp.google.com [10.3.21.2]) by smtp-out.google.com with ESMTP id o38MnhNQ032753 for ; Fri, 9 Apr 2010 00:49:43 +0200 Received: from pwj2 (pwj2.prod.google.com [10.241.219.66]) by hpaq2.eem.corp.google.com with ESMTP id o38MnOMb024417 for ; Fri, 9 Apr 2010 00:49:42 +0200 Received: by pwj2 with SMTP id 2so2263180pwj.17 for ; Thu, 08 Apr 2010 15:49:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.247.17 with HTTP; Thu, 8 Apr 2010 15:49:41 -0700 (PDT) In-Reply-To: References: <20100406215751.7EC1784397@ruffy.mtv.corp.google.com> Date: Thu, 08 Apr 2010 22:49:00 -0000 Received: by 10.141.108.14 with SMTP id k14mr1206852rvm.170.1270766981253; Thu, 08 Apr 2010 15:49:41 -0700 (PDT) Message-ID: Subject: Re: [RFA] Add -s option to source command. From: Doug Evans To: tromey@redhat.com Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd13a9c828b470483c17edc 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/msg00203.txt.bz2 --000e0cd13a9c828b470483c17edc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2259 On Wed, Apr 7, 2010 at 1:14 PM, Tom Tromey wrote: >>>>>> "Doug" =3D=3D Doug Evans writes: > > Doug> This patch adds a -s option to the source command to make it > Doug> search for the script in the source search path even if the script > Doug> name specifies a directory. > > It seems reasonable to me. > > Doug> =A0Read commands from a file named FILE.\n\ > Doug> =A0Optional -v switch (before the filename) causes each command in\= n\ > Doug> =A0FILE to be echoed as it is executed.\n\ > Doug> +Optional -s switch (before the filename) causes gdb to search for\= n\ > Doug> +the script in the source search path, even if FILE contains direct= ories.\n\ > > I often wish that gdb help strings were formatted more like --help > output. > > Tom > Something like this? @@ -1379,8 +1437,12 @@ Commands defined in this way may have up source_help_text =3D xstrprintf (_("\ Read commands from a file named FILE.\n\ -Optional -v switch (before the filename) causes each command in\n\ -FILE to be echoed as it is executed.\n\ +\n\ +Usage: source [-s] [-v] FILE\n\ +-s: search for the script in the source search path,\n\ + even if FILE contains directories.\n\ +-v: each command in FILE is echoed as it is executed.\n\ +\n\ Note that the file \"%s\" is read automatically in this way\n\ when GDB is started."), gdbinit); c =3D add_cmd ("source", class_support, source_command, 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. --000e0cd13a9c828b470483c17edc Content-Type: text/plain; charset=US-ASCII; name="gdb-100408-source-s-2.patch.txt" Content-Disposition: attachment; filename="gdb-100408-source-s-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7s5ub5j0 Content-length: 16958 MjAxMC0wNC0wOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCUFk ZCAtcyBvcHRpb24gdG8gc291cmNlIGNvbW1hbmQuCgkqIE5FV1M6IERvY3Vt ZW50IG5ldyBvcHRpb24uCgkqIGNsaS9jbGktY21kcy5jIChmaW5kX2FuZF9v cGVuX3NjcmlwdCk6IEFkZCBmdW5jdGlvbiBjb21tZW50LgoJRGVsZXRlIGZy b21fdHR5IGFuZCBjbGVhbnVwcCBhcmdzLiAgU3BsaXQgZmlsZXAgYXJnIGlu dG8gZmlsZSBhbmQKCWZ1bGxfcGF0aHAuICBOZXcgYXJnIHNlYXJjaF9wYXRo LgoJKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXcgZnVuY3Rpb24u Cgkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IE5ldyBmdW5jdGlvbi4K CShzb3VyY2Vfc2NyaXB0KTogUmV3cml0ZS4KCShzb3VyY2VfY29tbWFuZCk6 IFBhcnNlICItcyIgb3B0aW9uLgoJKGluaXRfY2xpX2NtZHMpOiBBZGQgIi1z IiBkb2NzIHRvIHNvdXJjZSBjb21tYW5kIGhlbHAsIGFuZCByZWZvcm1hdC4K CSogcHl0aG9uL3B5dGhvbi5jIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE1h a2UgZmlsZSBhcmcgYSBjb25zdCBjaGFyICouCglEb24ndCBjYWxsIGZjbG9z ZSwgbGVhdmUgZm9yIGNhbGxlci4KCSogcHl0aG9uL3B5dGhvbi5oIChzb3Vy Y2VfcHl0aG9uX3NjcmlwdCk6IFVwZGF0ZS4KCgl0ZXN0c3VpdGUvCgkqIGdk Yi5iYXNlL3NvdXJjZS10ZXN0LmdkYjogTmV3IGZpbGUuCgkqIGdkYi5iYXNl L3NvdXJjZS5leHA6IEFkZCB0ZXN0cyBmb3IgInNvdXJjZSAtcyIuCgoJZG9j LwoJKiBnZGIudGV4aW5mbyAoQ29tbWFuZCBGaWxlcyk6IEFkZCBkb2NzIGZv ciBuZXcgInNvdXJjZSAtcyIgb3B0aW9uLgoKSW5kZXg6IE5FV1MKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9O RVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2NwpkaWZmIC11IC1wIC1y MS4zNjcgTkVXUwotLS0gTkVXUwkxIEFwciAyMDEwIDE0OjExOjIyIC0wMDAw CTEuMzY3CisrKyBORVdTCTggQXByIDIwMTAgMjI6NDA6NTkgLTAwMDAKQEAg LTMsNiArMywxMCBAQAogCiAqKiogQ2hhbmdlcyBzaW5jZSBHREIgNy4xCiAK KyogVGhlIHNvdXJjZSBjb21tYW5kIG5vdyBhY2NlcHRzIGEgLXMgb3B0aW9u IHRvIGZvcmNlIHNlYXJjaGluZyBmb3IgdGhlCisgIHNjcmlwdCBpbiB0aGUg c291cmNlIHNlYXJjaCBwYXRoIGV2ZW4gaWYgdGhlIHNjcmlwdCBuYW1lIHNw ZWNpZmllcworICBhIGRpcmVjdG9yeS4KKwogKiBHREIgbm93IHNlbmRzIHht bFJlZ2lzdGVycz0gaW4gcVN1cHBvcnRlZCBwYWNrZXQgdG8gaW5kaWNhdGUg dGhhdAogICBpdCB1bmRlcnN0YW5kcyByZWdpc3RlciBkZXNjcmlwdGlvbi4K IApJbmRleDogY2xpL2NsaS1jbWRzLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9jbGkvY2xpLWNtZHMuYyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS45OQpkaWZmIC11IC1wIC1yMS45OSBj bGktY21kcy5jCi0tLSBjbGkvY2xpLWNtZHMuYwk3IEFwciAyMDEwIDAzOjQy OjU1IC0wMDAwCTEuOTkKKysrIGNsaS9jbGktY21kcy5jCTggQXByIDIwMTAg MjI6NDA6NTkgLTAwMDAKQEAgLTQ3MCw2MiArNDcwLDU5IEBAIFNjcmlwdCBm aWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMKIAkJICAgIHZhbHVl KTsKIH0KIAorLyogVHJ5IHRvIG9wZW4gU0NSSVBUX0ZJTEUuCisgICBJZiBz dWNjZXNzZnVsLCB0aGUgZnVsbCBwYXRoIG5hbWUgaXMgc3RvcmVkIGluICpG VUxMX1BBVEhQLAorICAgdGhlIHN0cmVhbSBpcyBzdG9yZWQgaW4gKlNUUkVB TVAsIGFuZCByZXR1cm4gMS4KKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2li bGUgZm9yIGZyZWVpbmcgKkZVTExfUEFUSFAuCisgICBJZiBub3Qgc3VjY2Vz c2Z1bCwgcmV0dXJuIDA7IGVycm5vIGlzIHNldCBmb3IgdGhlIGxhc3QgZmls ZQorICAgd2UgdHJpZWQgdG8gb3Blbi4KKworICAgSWYgU0VBUkNIX1BBVEgg aXMgbm9uLXplcm8sIGFuZCB0aGUgZmlsZSBpc24ndCBmb3VuZCBpbiBjd2Qs CisgICBzZWFyY2ggZm9yIGl0IGluIHRoZSBzb3VyY2Ugc2VhcmNoIHBhdGgu CisKKyAgIE5PVEU6IFRoaXMgY2FsbHMgb3BlbnAgd2hpY2ggdXNlcyB4ZnVs bHBhdGggdG8gY29tcHV0ZSB0aGUgZnVsbCBwYXRoCisgICBpbnN0ZWFkIG9m IGdkYl9yZWFscGF0aC4gIFN5bWJvbGljIGxpbmtzIGFyZSBub3QgcmVzb2x2 ZWQuICAqLworCiBzdGF0aWMgaW50Ci1maW5kX2FuZF9vcGVuX3NjcmlwdCAo aW50IGZyb21fdHR5LCBjaGFyICoqZmlsZXAsIEZJTEUgKipzdHJlYW1wLAot CQkgICAgICBzdHJ1Y3QgY2xlYW51cCAqKmNsZWFudXBwKQorZmluZF9hbmRf b3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKnNjcmlwdF9maWxlLCBpbnQgc2Vh cmNoX3BhdGgsCisJCSAgICAgIEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVs bF9wYXRocCkKIHsKLSAgY2hhciAqZmlsZSA9ICpmaWxlcDsKLSAgY2hhciAq ZnVsbF9wYXRobmFtZSA9IE5VTEw7CisgIGNoYXIgKmZpbGU7CiAgIGludCBm ZDsKICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwczsKKyAgaW50IHNl YXJjaF9mbGFncyA9IE9QRl9UUllfQ1dEX0ZJUlNUOwogCi0gIGZpbGUgPSB0 aWxkZV9leHBhbmQgKGZpbGUpOworICBmaWxlID0gdGlsZGVfZXhwYW5kIChz Y3JpcHRfZmlsZSk7CiAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIGZpbGUpOwogCi0gIC8qIFNlYXJjaCBmb3IgYW5kIG9wZW4gJ2Zp bGUnIG9uIHRoZSBzZWFyY2ggcGF0aCB1c2VkIGZvciBzb3VyY2UKLSAgICAg ZmlsZXMuICBQdXQgdGhlIGZ1bGwgbG9jYXRpb24gaW4gJ2Z1bGxfcGF0aG5h bWUnLiAgKi8KLSAgZmQgPSBvcGVucCAoc291cmNlX3BhdGgsIE9QRl9UUllf Q1dEX0ZJUlNULAotCSAgICAgIGZpbGUsIE9fUkRPTkxZLCAmZnVsbF9wYXRo bmFtZSk7Ci0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aG5hbWUp OworICBpZiAoc2VhcmNoX3BhdGgpCisgICAgc2VhcmNoX2ZsYWdzIHw9IE9Q Rl9TRUFSQ0hfSU5fUEFUSDsKIAotICAvKiBVc2UgdGhlIGZ1bGwgcGF0aCBu YW1lLCBpZiBpdCBpcyBmb3VuZC4gICovCi0gIGlmIChmdWxsX3BhdGhuYW1l ICE9IE5VTEwgJiYgZmQgIT0gLTEpCi0gICAgewotICAgICAgZmlsZSA9IGZ1 bGxfcGF0aG5hbWU7Ci0gICAgfQorICAvKiBTZWFyY2ggZm9yIGFuZCBvcGVu ICdmaWxlJyBvbiB0aGUgc2VhcmNoIHBhdGggdXNlZCBmb3Igc291cmNlCisg ICAgIGZpbGVzLiAgUHV0IHRoZSBmdWxsIGxvY2F0aW9uIGluICpGVUxMX1BB VEhQLiAgKi8KKyAgZmQgPSBvcGVucCAoc291cmNlX3BhdGgsIHNlYXJjaF9m bGFncywKKwkgICAgICBmaWxlLCBPX1JET05MWSwgZnVsbF9wYXRocCk7CiAK ICAgaWYgKGZkID09IC0xKQogICAgIHsKLSAgICAgIGlmIChmcm9tX3R0eSkK LQlwZXJyb3Jfd2l0aF9uYW1lIChmaWxlKTsKLSAgICAgIGVsc2UKLQl7Ci0J ICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLQkgIHJldHVybiAwOwot CX0KKyAgICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisgICAgICBkb19j bGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyAgICAgIGVycm5vID0gc2F2ZV9l cnJubzsKKyAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAqc3RyZWFtcCA9 IGZkb3BlbiAoZmQsIEZPUEVOX1JUKTsKLSAgKmZpbGVwID0gZmlsZTsKLSAg KmNsZWFudXBwID0gb2xkX2NsZWFudXBzOworICBkb19jbGVhbnVwcyAob2xk X2NsZWFudXBzKTsKIAorICAqc3RyZWFtcCA9IGZkb3BlbiAoZmQsIEZPUEVO X1JUKTsKICAgcmV0dXJuIDE7CiB9CiAKLXZvaWQKLXNvdXJjZV9zY3JpcHQg KGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKLXsKLSAgRklMRSAqc3RyZWFt OwotICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBzOwotCi0gIGlmIChm aWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICB7Ci0gICAgICBlcnJv ciAoXygic291cmNlIGNvbW1hbmQgcmVxdWlyZXMgZmlsZSBuYW1lIG9mIGZp bGUgdG8gc291cmNlLiIpKTsKLSAgICB9Ci0KLSAgaWYgKCFmaW5kX2FuZF9v cGVuX3NjcmlwdCAoZnJvbV90dHksICZmaWxlLCAmc3RyZWFtLCAmb2xkX2Ns ZWFudXBzKSkKLSAgICByZXR1cm47CisvKiBMb2FkIHNjcmlwdCBGSUxFLCB3 aGljaCBoYXMgYWxyZWFkeSBiZWVuIG9wZW5lZCBhcyBTVFJFQU0uCisgICBT VFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAqLwogCitzdGF0 aWMgdm9pZAorc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSAoRklMRSAqc3Ry ZWFtLCBjb25zdCBjaGFyICpmaWxlKQorewogICBpZiAoc2NyaXB0X2V4dF9t b2RlICE9IHNjcmlwdF9leHRfb2ZmCiAgICAgICAmJiBzdHJsZW4gKGZpbGUp ID4gMyAmJiAhc3RyY21wICgmZmlsZVtzdHJsZW4gKGZpbGUpIC0gM10sICIu cHkiKSkKICAgICB7CkBAIC01NDEsMjIgKzUzOCw2NCBAQCBzb3VyY2Vfc2Ny aXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkpCiAJICBpZiAoc2NyaXB0 X2V4dF9tb2RlID09IHNjcmlwdF9leHRfc29mdAogCSAgICAgICYmIGUucmVh c29uID09IFJFVFVSTl9FUlJPUiAmJiBlLmVycm9yID09IFVOU1VQUE9SVEVE X0VSUk9SKQogCSAgICB7Ci0JICAgICAgaWYgKCFmaW5kX2FuZF9vcGVuX3Nj cmlwdCAoZnJvbV90dHksICZmaWxlLCAmc3RyZWFtLCAmb2xkX2NsZWFudXBz KSkKLQkJcmV0dXJuOwotCi0JICAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3Ry ZWFtLCBmaWxlKTsKKwkgICAgICBmc2VlayAoc3RyZWFtLCAwLCBTRUVLX1NF VCk7CisJICAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCAoY2hhciop IGZpbGUpOwogCSAgICB9CiAJICBlbHNlCi0JICAgIC8qIE5vcGUsIGp1c3Qg cHVudC4gICovCi0JICAgIHRocm93X2V4Y2VwdGlvbiAoZSk7CisJICAgIHsK KwkgICAgICAvKiBOb3BlLCBqdXN0IHB1bnQuICAqLworCSAgICAgIGZjbG9z ZSAoc3RyZWFtKTsKKwkgICAgICB0aHJvd19leGNlcHRpb24gKGUpOworCSAg ICB9CiAJfQorICAgICAgZWxzZQorCWZjbG9zZSAoc3RyZWFtKTsKICAgICB9 CiAgIGVsc2UKICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUp OworfQogCisvKiBXb3JrZXIgdG8gcGVyZm9ybSB0aGUgInNvdXJjZSIgY29t bWFuZC4KKyAgIExvYWQgc2NyaXB0IEZJTEUuCisgICBJZiBTRUFSQ0hfUEFU SCBpcyBub24temVybywgYW5kIHRoZSBmaWxlIGlzbid0IGZvdW5kIGluIGN3 ZCwKKyAgIHNlYXJjaCBmb3IgaXQgaW4gdGhlIHNvdXJjZSBzZWFyY2ggcGF0 aC4gICovCisKK3N0YXRpYyB2b2lkCitzb3VyY2Vfc2NyaXB0X3dpdGhfc2Vh cmNoIChjb25zdCBjaGFyICpmaWxlLCBpbnQgZnJvbV90dHksIGludCBzZWFy Y2hfcGF0aCkKK3sKKyAgRklMRSAqc3RyZWFtOworICBjaGFyICpmdWxsX3Bh dGg7CisgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHM7CisKKyAgaWYg KGZpbGUgPT0gTlVMTCB8fCAqZmlsZSA9PSAwKQorICAgIGVycm9yIChfKCJz b3VyY2UgY29tbWFuZCByZXF1aXJlcyBmaWxlIG5hbWUgb2YgZmlsZSB0byBz b3VyY2UuIikpOworCisgIGlmICghZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZp bGUsIHNlYXJjaF9wYXRoLCAmc3RyZWFtLCAmZnVsbF9wYXRoKSkKKyAgICB7 CisgICAgICAvKiBUaGUgc2NyaXB0IHdhc24ndCBmb3VuZCwgb3Igd2FzIG90 aGVyd2lzZSBpbmFjY2Vzc2libGUuCisJIElmIHRoZSBzb3VyY2UgY29tbWFu ZCB3YXMgaW52b2tlZCBpbnRlcmFjdGl2ZWx5LCB0aHJvdyBhbiBlcnJvci4K KwkgT3RoZXJ3aXNlIChlLmcuIGlmIGl0IHdhcyBpbnZva2VkIGJ5IGEgc2Ny aXB0KSwgc2lsZW50bHkgaWdub3JlCisJIHRoZSBlcnJvci4gICovCisgICAg ICBpZiAoZnJvbV90dHkpCisJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7Cisg ICAgICBlbHNlCisJcmV0dXJuOworICAgIH0KKworICBvbGRfY2xlYW51cHMg PSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworICBzb3VyY2Vf c2NyaXB0X2Zyb21fc3RyZWFtIChzdHJlYW0sIGZpbGUpOwogICBkb19jbGVh bnVwcyAob2xkX2NsZWFudXBzKTsKIH0KIAorLyogV3JhcHBlciBhcm91bmQg c291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCB0byBleHBvcnQgaXQgdG8gbWFp bi5jCisgICBmb3IgdXNlIGluIGxvYWRpbmcgLmdkYmluaXQgc2NyaXB0cy4g ICovCisKK3ZvaWQKK3NvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBm cm9tX3R0eSkKK3sKKyAgc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCAoZmls ZSwgZnJvbV90dHksIDApOworfQorCiAvKiBSZXR1cm4gdGhlIHNvdXJjZV92 ZXJib3NlIGdsb2JhbCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgc3RhdGUK ICAgIG9uIGV4aXQgZnJvbSB0aGUgc291cmNlIGNvbW1hbmQsIGJ5IHdoYXRl dmVyIG1lYW5zLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC01NzIsMzMgKzYxMSw1 MiBAQCBzb3VyY2VfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5 CiAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHM7CiAgIGNoYXIgKmZp bGUgPSBhcmdzOwogICBpbnQgKm9sZF9zb3VyY2VfdmVyYm9zZSA9IHhtYWxs b2MgKHNpemVvZihpbnQpKTsKKyAgaW50IHNlYXJjaF9wYXRoID0gMDsKIAog ICAqb2xkX3NvdXJjZV92ZXJib3NlID0gc291cmNlX3ZlcmJvc2U7CiAgIG9s ZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoc291cmNlX3ZlcmJvc2VfY2xl YW51cCwgb2xkX3NvdXJjZV92ZXJib3NlKTsKIAogICAvKiAtdiBjYXVzZXMg dGhlIHNvdXJjZSBjb21tYW5kIHRvIHJ1biBpbiB2ZXJib3NlIG1vZGUuCisg ICAgIC1zIGNhdXNlcyB0aGUgZmlsZSB0byBiZSBzZWFyY2hlZCBpbiB0aGUg c291cmNlIHNlYXJjaCBwYXRoLAorICAgICBldmVuIGlmIHRoZSBmaWxlIG5h bWUgY29udGFpbnMgYSAnLycuCiAgICAgIFdlIHN0aWxsIGhhdmUgdG8gYmUg YWJsZSB0byBoYW5kbGUgZmlsZW5hbWVzIHdpdGggc3BhY2VzIGluIGEKICAg ICAgYmFja3dhcmQgY29tcGF0aWJsZSB3YXksIHNvIGJ1aWxkYXJndiBpcyBu b3QgYXBwcm9wcmlhdGUuICAqLwogCiAgIGlmIChhcmdzKQogICAgIHsKLSAg ICAgIC8qIE1ha2Ugc3VyZSBsZWFkaW5nIHdoaXRlIHNwYWNlIGRvZXMgbm90 IGJyZWFrIHRoZSBjb21wYXJpc29ucy4gICovCi0gICAgICB3aGlsZSAoaXNz cGFjZShhcmdzWzBdKSkKLQlhcmdzKys7Ci0KLSAgICAgIC8qIElzIC12IHRo ZSBmaXJzdCB0aGluZyBpbiB0aGUgc3RyaW5nPyAgKi8KLSAgICAgIGlmIChh cmdzWzBdID09ICctJyAmJiBhcmdzWzFdID09ICd2JyAmJiBpc3NwYWNlIChh cmdzWzJdKSkKKyAgICAgIHdoaWxlIChhcmdzWzBdICE9ICdcMCcpCiAJewot CSAgc291cmNlX3ZlcmJvc2UgPSAxOworCSAgLyogTWFrZSBzdXJlIGxlYWRp bmcgd2hpdGUgc3BhY2UgZG9lcyBub3QgYnJlYWsgdGhlIGNvbXBhcmlzb25z LiAgKi8KKwkgIHdoaWxlIChpc3NwYWNlKGFyZ3NbMF0pKQorCSAgICBhcmdz Kys7CisKKwkgIGlmIChhcmdzWzBdICE9ICctJykKKwkgICAgYnJlYWs7CisK KwkgIGlmIChhcmdzWzFdID09ICd2JyAmJiBpc3NwYWNlIChhcmdzWzJdKSkK KwkgICAgeworCSAgICAgIHNvdXJjZV92ZXJib3NlID0gMTsKKworCSAgICAg IC8qIFNraXAgcGFzc2VkIC12LiAgKi8KKwkgICAgICBhcmdzID0gJmFyZ3Nb M107CisJICAgIH0KKwkgIGVsc2UgaWYgKGFyZ3NbMV0gPT0gJ3MnICYmIGlz c3BhY2UgKGFyZ3NbMl0pKQorCSAgICB7CisJICAgICAgc2VhcmNoX3BhdGgg PSAxOwogCi0JICAvKiBUcmltIC12IGFuZCB3aGl0ZXNwYWNlIGZyb20gdGhl IGZpbGVuYW1lLiAgKi8KLQkgIGZpbGUgPSAmYXJnc1szXTsKLQkgIHdoaWxl IChpc3NwYWNlIChmaWxlWzBdKSkKLQkgICAgZmlsZSsrOworCSAgICAgIC8q IFNraXAgcGFzc2VkIC1zLiAgKi8KKwkgICAgICBhcmdzID0gJmFyZ3NbM107 CisJICAgIH0KKwkgIGVsc2UKKwkgICAgYnJlYWs7CiAJfQorCisgICAgICB3 aGlsZSAoaXNzcGFjZSAoYXJnc1swXSkpCisJYXJncysrOworICAgICAgZmls ZSA9IGFyZ3M7CiAgICAgfQogCi0gIHNvdXJjZV9zY3JpcHQgKGZpbGUsIGZy b21fdHR5KTsKKyAgc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCAoZmlsZSwg ZnJvbV90dHksIHNlYXJjaF9wYXRoKTsKIAogICBkb19jbGVhbnVwcyAob2xk X2NsZWFudXBzKTsKIH0KQEAgLTEzNzksOCArMTQzNywxMiBAQCBDb21tYW5k cyBkZWZpbmVkIGluIHRoaXMgd2F5IG1heSBoYXZlIHVwCiAKICAgc291cmNl X2hlbHBfdGV4dCA9IHhzdHJwcmludGYgKF8oIlwKIFJlYWQgY29tbWFuZHMg ZnJvbSBhIGZpbGUgbmFtZWQgRklMRS5cblwKLU9wdGlvbmFsIC12IHN3aXRj aCAoYmVmb3JlIHRoZSBmaWxlbmFtZSkgY2F1c2VzIGVhY2ggY29tbWFuZCBp blxuXAotRklMRSB0byBiZSBlY2hvZWQgYXMgaXQgaXMgZXhlY3V0ZWQuXG5c CitcblwKK1VzYWdlOiBzb3VyY2UgWy1zXSBbLXZdIEZJTEVcblwKKy1zOiBz ZWFyY2ggZm9yIHRoZSBzY3JpcHQgaW4gdGhlIHNvdXJjZSBzZWFyY2ggcGF0 aCxcblwKKyAgICBldmVuIGlmIEZJTEUgY29udGFpbnMgZGlyZWN0b3JpZXMu XG5cCistdjogZWFjaCBjb21tYW5kIGluIEZJTEUgaXMgZWNob2VkIGFzIGl0 IGlzIGV4ZWN1dGVkLlxuXAorXG5cCiBOb3RlIHRoYXQgdGhlIGZpbGUgXCIl c1wiIGlzIHJlYWQgYXV0b21hdGljYWxseSBpbiB0aGlzIHdheVxuXAogd2hl biBHREIgaXMgc3RhcnRlZC4iKSwgZ2RiaW5pdCk7CiAgIGMgPSBhZGRfY21k ICgic291cmNlIiwgY2xhc3Nfc3VwcG9ydCwgc291cmNlX2NvbW1hbmQsCklu ZGV4OiBkb2MvZ2RiLnRleGluZm8KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8sdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuNjk3CmRpZmYgLXUgLXAgLXIxLjY5NyBn ZGIudGV4aW5mbwotLS0gZG9jL2dkYi50ZXhpbmZvCTggQXByIDIwMTAgMjE6 MDg6NDAgLTAwMDAJMS42OTcKKysrIGRvYy9nZGIudGV4aW5mbwk4IEFwciAy MDEwIDIyOjQxOjAwIC0wMDAwCkBAIC0xOTM3Myw3ICsxOTM3Myw3IEBAIHVz aW5nIHRoZSBAY29kZXtzY3JpcHQtZXh0ZW5zaW9ufSBzZXR0aW4KIEB0YWJs ZSBAY29kZQogQGtpbmRleCBzb3VyY2UKIEBjaW5kZXggZXhlY3V0ZSBjb21t YW5kcyBmcm9tIGEgZmlsZQotQGl0ZW0gc291cmNlIFtAY29kZXstdn1dIEB2 YXJ7ZmlsZW5hbWV9CitAaXRlbSBzb3VyY2UgW0Bjb2Rley1zfV0gW0Bjb2Rl ey12fV0gQHZhcntmaWxlbmFtZX0KIEV4ZWN1dGUgdGhlIGNvbW1hbmQgZmls ZSBAdmFye2ZpbGVuYW1lfS4KIEBlbmQgdGFibGUKIApAQCAtMTkzOTAsNiAr MTkzOTAsOSBAQCBkaXJlY3RvcnksIHRoZW4gQHZhbHVle0dEQk59IGFsc28g bG9va3MgCiBleGNlcHQgdGhhdCBAZmlsZXskY2Rpcn0gaXMgbm90IHNlYXJj aGVkIGJlY2F1c2UgdGhlIGNvbXBpbGF0aW9uIGRpcmVjdG9yeQogaXMgbm90 IHJlbGV2YW50IHRvIHNjcmlwdHMuCiAKK0lmIEBjb2Rley1zfSBpcyBzcGVj aWZpZWQsIHRoZW4gQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBAdmFye2Zp bGVuYW1lfQorb24gdGhlIHNlYXJjaCBwYXRoIGV2ZW4gaWYgQHZhcntmaWxl bmFtZX0gc3BlY2lmaWVzIGEgZGlyZWN0b3J5LgorCiBJZiBAY29kZXstdn0s IGZvciB2ZXJib3NlIG1vZGUsIGlzIGdpdmVuIHRoZW4gQHZhbHVle0dEQk59 IGRpc3BsYXlzCiBlYWNoIGNvbW1hbmQgYXMgaXQgaXMgZXhlY3V0ZWQuICBU aGUgb3B0aW9uIG11c3QgYmUgZ2l2ZW4gYmVmb3JlCiBAdmFye2ZpbGVuYW1l fSwgYW5kIGlzIGludGVycHJldGVkIGFzIHBhcnQgb2YgdGhlIGZpbGVuYW1l IGFueXdoZXJlIGVsc2UuCkluZGV4OiBweXRob24vcHl0aG9uLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9w eXRob24vcHl0aG9uLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjgKZGlm ZiAtdSAtcCAtcjEuMjggcHl0aG9uLmMKLS0tIHB5dGhvbi9weXRob24uYwk4 IEFwciAyMDEwIDA0OjU3OjI1IC0wMDAwCTEuMjgKKysrIHB5dGhvbi9weXRo b24uYwk4IEFwciAyMDEwIDIyOjQxOjAwIC0wMDAwCkBAIC0zNjIsMTAgKzM2 MiwxMSBAQCBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYs IFB5CiB9CiAKIC8qIFJlYWQgYSBmaWxlIGFzIFB5dGhvbiBjb2RlLiAgU1RS RUFNIGlzIHRoZSBpbnB1dCBmaWxlOyBGSUxFIGlzIHRoZQotICAgbmFtZSBv ZiB0aGUgZmlsZS4gICovCisgICBuYW1lIG9mIHRoZSBmaWxlLgorICAgU1RS RUFNIGlzIG5vdCBjbG9zZWQsIHRoYXQgaXMgdGhlIGNhbGxlcidzIHJlc3Bv bnNpYmlsaXR5LiAgKi8KIAogdm9pZAotc291cmNlX3B5dGhvbl9zY3JpcHQg KEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSkKK3NvdXJjZV9weXRob25fc2Ny aXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCiB7CiAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwogCkBAIC0zNzMsNyArMzc0LDYgQEAg c291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhcgogCiAg IFB5UnVuX1NpbXBsZUZpbGUgKHN0cmVhbSwgZmlsZSk7CiAKLSAgZmNsb3Nl IChzdHJlYW0pOwogICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiB9CiAKQEAg LTU2MCw5ICs1NjAsOCBAQCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29t bWFuZCAoc3RydWN0CiB9CiAKIHZvaWQKLXNvdXJjZV9weXRob25fc2NyaXB0 IChGSUxFICpzdHJlYW0sIGNoYXIgKmZpbGUpCitzb3VyY2VfcHl0aG9uX3Nj cmlwdCAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmaWxlKQogewotICBm Y2xvc2UgKHN0cmVhbSk7CiAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9F UlJPUiwKIAkgICAgICAgXygiUHl0aG9uIHNjcmlwdGluZyBpcyBub3Qgc3Vw cG9ydGVkIGluIHRoaXMgY29weSBvZiBHREIuIikpOwogfQpJbmRleDogcHl0 aG9uL3B5dGhvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nZGIvcHl0aG9uL3B5dGhvbi5oLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtcCAtcjEuNyBweXRob24uaAotLS0g cHl0aG9uL3B5dGhvbi5oCTE4IEphbiAyMDEwIDA2OjI1OjIyIC0wMDAwCTEu NworKysgcHl0aG9uL3B5dGhvbi5oCTggQXByIDIwMTAgMjI6NDE6MDAgLTAw MDAKQEAgLTI0LDcgKzI0LDcgQEAKIAogdm9pZCBldmFsX3B5dGhvbl9mcm9t X2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKIAot dm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtLCBjaGFy ICpmaWxlKTsKK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0 cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7CiAKIGludCBhcHBseV92YWxfcHJl dHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENP UkVfQUREUiBhZGRyZXNzLApJbmRleDogdGVzdHN1aXRlL2dkYi5iYXNlL3Nv dXJjZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc291cmNlLmV4cCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMQpkaWZmIC11IC1wIC1yMS4xMSBz b3VyY2UuZXhwCi0tLSB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc291cmNlLmV4cAk3 IEFwciAyMDEwIDAzOjQ3OjIyIC0wMDAwCTEuMTEKKysrIHRlc3RzdWl0ZS9n ZGIuYmFzZS9zb3VyY2UuZXhwCTggQXByIDIwMTAgMjI6NDE6MDAgLTAwMDAK QEAgLTUxLDQgKzUxLDE3IEBAIGdkYl90ZXN0X211bHRpcGxlICJzb3VyY2Ug JHtzcmNkaXJ9LyR7c3UKICAgICB9CiB9CiAKK2dkYl90ZXN0ICJkaXIgJHtz cmNkaXJ9LyR7c3ViZGlyfSIgIiIKK2dkYl90ZXN0ICJzb3VyY2UgLXMgLi9z b3VyY2UtdGVzdC5nZGIiIFwKKyAgICAidGVzdCBzb3VyY2Ugb3B0aW9ucyIg XAorICAgICJzb3VyY2UgLXMiCisKKyMgVGVzdCAtdiBhbmQgLXMgaW4gZWl0 aGVyIG9yZGVyLgorZ2RiX3Rlc3QgInNvdXJjZSAtcyAtdiAuL3NvdXJjZS10 ZXN0LmdkYiIgXAorICAgICJlY2hvIHRlc3Qgc291cmNlIG9wdGlvbnMuKiIg XAorICAgICJzb3VyY2UgLXMgLXYiCitnZGJfdGVzdCAic291cmNlIC12IC1z IC4vc291cmNlLXRlc3QuZ2RiIiBcCisgICAgImVjaG8gdGVzdCBzb3VyY2Ug b3B0aW9ucy4qIiBcCisgICAgInNvdXJjZSAtdiAtcyIKKwogZ2RiX2V4aXQK --000e0cd13a9c828b470483c17edc--