<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>9395</bug_id>
          
          <creation_ts>2006-06-10 14:29:35 -0700</creation_ts>
          <short_desc>Make prepare-ChangeLog faster</short_desc>
          <delta_ts>2006-06-11 16:45:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45283</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-10 14:29:35 -0700</bug_when>
    <thetext>Currently, prepare-ChangeLog does the following time-consuming things:

1. Runs &quot;svn stat&quot; on the entire WebKit directory to find the files that have changed.
2. Runs &quot;svn diff&quot; only on the files that were changed from Step 1 to find the changed lines.
3. Runs &quot;svn diff&quot; on the entire LayoutTests directory if there are any changes to WebCore to find out if any tests have been changed or been added.

Since &quot;svn diff&quot; runs much faster than &quot;svn stat&quot; on the entire WebKit directory, the following speeds up prepare-ChangeLog from about 2.5 minutes to just under 1 minute on a recent test (Bug 9394):

1. Run &quot;svn diff&quot; on the entire WebKit directory and save the output to a temp file.  Then run &quot;svn stat&quot; only on the changed files from Step 1.
2. Use the the temp file from Step 1 to find the changed lines.
3. Set a variable ($changedLayoutTests) during &quot;svn stat&quot; for Step 1 to determine if any changes have been made to LayoutTests, saving the need to run &quot;svn diff LayoutTests&quot; later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45284</commentid>
    <comment_count>1</comment_count>
      <attachid>8800</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-10 14:42:19 -0700</bug_when>
    <thetext>Created attachment 8800
Patch v1

In addition to the changes from Comment #0:

- Added -h|--help command-line switch and help message.
- Moved up check for no changed files closer to the beginning of the script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45330</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-06-11 11:05:26 -0700</bug_when>
    <thetext>Sweet!

This patch looks good to me, but I&apos;d like someone with more perl fu to give it a once-over.

I think this
+                  $changedLayoutTests = 1 if !$changedLayoutTests &amp;&amp; $components[0] eq &quot;LayoutTests&quot;;
would be clearer as this
+                  $changedLayoutTests = 1 if $components[0] eq &quot;LayoutTests&quot;;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45335</commentid>
    <comment_count>3</comment_count>
      <attachid>8811</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 12:12:49 -0700</bug_when>
    <thetext>Created attachment 8811
Patch v2

Same as Patch v1, but adjusted with feedback from Comment #2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45336</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 12:14:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; +                  $changedLayoutTests = 1 if $components[0] eq &quot;LayoutTests&quot;;

I could also have made it:

&gt; +                  $changedLayoutTests ||= ($components[0] eq &quot;LayoutTests&quot;);

:)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45338</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-06-11 12:22:08 -0700</bug_when>
    <thetext>I think bug 6445 is a duplicate of this.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45341</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 12:31:09 -0700</bug_when>
    <thetext>*** Bug 6445 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45357</commentid>
    <comment_count>7</comment_count>
      <attachid>8811</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-11 16:23:36 -0700</bug_when>
    <thetext>Comment on attachment 8811
Patch v2

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45360</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-11 16:45:31 -0700</bug_when>
    <thetext>Committed revision 14814.

Had to make a minor change to the patch so that &quot;OOPS&quot; didn&apos;t appear in the prepare-ChangeLog file:

Transmitting file data ..subversion/libsvn_client/commit.c:873: (apr_err=165001)
svn: Commit failed (details follow):
/SourceCache/subversion/subversion-3/subversion/subversion/libsvn_repos/hooks.c:106: (apr_err=165001)
svn: &apos;pre-commit&apos; hook failed with error output:
svnlook: Can&apos;t write to stream: Broken pipe

    The following ChangeLog files contain OOPS:

        trunk/WebKitTools/Scripts/prepare-ChangeLog

    Please don&apos;t ever say &quot;OOPS&quot; in a ChangeLog file.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8800</attachid>
            <date>2006-06-10 14:42:19 -0700</date>
            <delta_ts>2006-06-11 12:12:49 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-9395-v1.diff</filename>
            <type>text/plain</type>
            <size>6293</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMDYtMTAgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05Mzk1CisgICAgICAgIE1ha2UgcHJlcGFyZS1DaGFuZ2VMb2cgZmFzdGVyCisKKyAgICAgICAg
KiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOiBVc2UgInN2biBkaWZmIiBpbnN0ZWFkIG9mICJz
dm4gc3RhdCIgdG8gZmluZCBjaGFuZ2VkIGZpbGVzLAorICAgICAgICB0aGVuIHNhdmUgdGhlIGRp
ZmYgb3V0cHV0IGZvciByZXVzZS4gIEtlZXAgYSBzdGF0dXMgdmFyaWFibGUgaWYgY2hhbmdlcyBh
cmUgbWFkZSB0bworICAgICAgICBMYXlvdXRUZXN0cyBzbyAic3ZuIGRpZmYgTGF5b3V0VGVzdHMi
IGRvZXNuJ3QgaGF2ZSB0byBiZSBydW4gdG8gY2hlY2sgZm9yIGNoYW5nZXMgd2hlbgorICAgICAg
ICBXZWJDb3JlIGlzIHVwZGF0ZWQuICBBZGRlZCAtaHwtLWhlbHAgY29tbWFuZC1saW5lIHN3aXRj
aCBhbmQgaGVscCBtZXNzYWdlLiAgTW92ZSB0ZXN0CisgICAgICAgIGZvciBubyBjaGFuZ2VkIGZp
bGVzIGNsb3NlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9ncmFtLgorCiAyMDA2LTA2LTEw
ICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGFuZCBsYW5kZWQgYnkgYXAuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3By
ZXBhcmUtQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzk4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDI4IEBACiAjICAgICBw
cmV2aW91cyBmdW5jdGlvbi4KIAogdXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKIAordXNlIEZp
bGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6VGVtcDsKIHVzZSBHZXRv
cHQ6Okxvbmc7CiAKLW15ICRzcGV3RGlmZiA9ICRFTlZ7IlBSRVBBUkVfQ0hBTkdFTE9HX0RJRkYi
fTsKIG15ICRvcGVuQ2hhbmdlTG9ncyA9IDA7Ci1HZXRPcHRpb25zKCJkaWZmfGQhIiA9PiBcJHNw
ZXdEaWZmLAotICAgICAgICAgICAib3BlbnxvISIgPT4gXCRvcGVuQ2hhbmdlTG9ncyk7CitteSAk
c2hvd0hlbHAgPSAwOworbXkgJHNwZXdEaWZmID0gJEVOVnsiUFJFUEFSRV9DSEFOR0VMT0dfRElG
RiJ9OworbXkgJHBhcnNlT3B0aW9uc1Jlc3VsdCA9CisgICAgR2V0T3B0aW9ucygiZGlmZnxkISIg
PT4gXCRzcGV3RGlmZiwKKyAgICAgICAgICAgICAgICJoZWxwfGghIiA9PiBcJHNob3dIZWxwLAor
ICAgICAgICAgICAgICAgIm9wZW58byEiID0+IFwkb3BlbkNoYW5nZUxvZ3MpOworaWYgKCEkcGFy
c2VPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkKKyAgeworICAgIHByaW50IFNUREVSUiBiYXNl
bmFtZSgkMCkgLiAiIFstZHwtLWRpZmZdIFstaHwtLWhlbHBdIFstb3wtLW9wZW5dXG4iOworICAg
IHByaW50IFNUREVSUiAiICAtZHwtLWRpZmYgIFNwZXcgZGlmZiB0byBzdGRvdXQgd2hlbiBydW5u
aW5nXG4iOworICAgIHByaW50IFNUREVSUiAiICAtaHwtLWhlbHAgIFNob3cgdGhpcyBoZWxwIG1l
c3NhZ2VcbiI7CisgICAgcHJpbnQgU1RERVJSICIgIC1vfC0tb3BlbiAgT3BlbiBDaGFuZ2VMb2dz
IGluIGFuIGVkaXRvciB3aGVuIGRvbmVcbiI7CisgICAgZXhpdCAxOworICB9CiAKICMgRmluZCB0
aGUgbGlzdCBvZiBtb2RpZmllZCBmaWxlcwogbXkgQGNoYW5nZWRfZmlsZXM7CkBAIC02OCwyNiAr
ODMsNjcgQEAgbXkgQGNvbmZsaWN0X2ZpbGVzOwogCiBteSAkU1ZOID0gInN2biI7CiAKLXByaW50
IFNUREVSUiAiICBSdW5uaW5nICdzdm4gc3RhdHVzJyB0byBmaW5kIGNoYW5nZWQsIGFkZGVkLCBv
ciByZW1vdmVkIGZpbGVzLlxuIjsKLW9wZW4gVVBEQVRFLCAiJFNWTiBzdGF0dXMgMj4gL2Rldi9z
dGRvdXQgfCIgb3IgZGllICJUaGUgc3ZuIHN0YXR1cyBmYWlsZWQ6ICQhLlxuIjsKLXdoaWxlICg8
VVBEQVRFPikKK215ICVzdGF0dXNEZXNjcmlwdGlvbiA9ICgKKyAgICAiQSIgPT4gIiBBZGRlZC4i
LAorICAgICJEIiA9PiAiIFJlbW92ZWQuIiwKKyAgICAiTSIgPT4gIiIsCisgICAgIlIiID0+ICIg
UmVwbGFjZWQuIiwKKyk7CisKK215ICRjaGFuZ2VkTGF5b3V0VGVzdHMgPSAwOworCitteSAkRElG
Rk9VVCA9IG5ldyBGaWxlOjpUZW1wKFRFTVBMQVRFID0+IGJhc2VuYW1lKCQwKSAuICItWFhYWFhY
WFgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVIgPT4gKCRFTlZ7J1RNUERJUid9
IHx8ICIvdG1wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVRkZJWCA9PiAiLmRp
ZmYiKTsKK215ICRkaWZmVGVtcEZpbGUgPSAkRElGRk9VVC0+ZmlsZW5hbWUoKTsKK215IEBkaWZm
RmlsZXM7CisKK3ByaW50IFNUREVSUiAiICBSdW5uaW5nICdzdm4gZGlmZicgdG8gZmluZCBjaGFu
Z2VkLCBhZGRlZCwgb3IgcmVtb3ZlZCBmaWxlcy5cbiI7CitvcGVuIFNWTkRJRkYsICIkU1ZOIGRp
ZmYgLS1kaWZmLWNtZCBkaWZmIC14IC1OIHwiIG9yIGRpZSAiVGhlIHN2biBkaWZmIGZhaWxlZDog
JCEuXG4iOword2hpbGUgKDxTVk5ESUZGPikKICAgewotICAgIGlmICgvXltNQV0uK1xzKyguKykk
LykKKyAgICBwcmludCAkRElGRk9VVCAkXzsKKyAgICBpZiAoL15JbmRleDogKC4rKSQvKQogICAg
ICAgewotICAgICAgICBteSAkZmlsZSA9ICQxOwotICAgICAgICAkZnVuY3Rpb25fbGlzdHN7JGZp
bGV9ID0gIiI7Ci0gICAgICAgIHB1c2ggQGNoYW5nZWRfZmlsZXMsICRmaWxlIGlmICRmaWxlIG5l
ICJDaGFuZ2VMb2ciOworICAgICAgICBwdXNoIEBkaWZmRmlsZXMsICQxOwogICAgICAgfQorICB9
CitjbG9zZSBTVk5ESUZGOworY2xvc2UgJERJRkZPVVQ7CiAKLSAgICBwdXNoIEBjb25mbGljdF9m
aWxlcywgJDEgaWYgL15DLitccysoLispJC87Ci0KLSAgICAkZnVuY3Rpb25fbGlzdHN7JDF9ID0g
IiBBZGRlZC4iIGlmIC9eQS4rXHMrKC4rKSQvOwotICAgICRmdW5jdGlvbl9saXN0c3skMX0gPSAi
IFJlbW92ZWQuIiBpZiAvXkQuK1xzKyguKykkLzsKLSAgICAkZnVuY3Rpb25fbGlzdHN7JDF9ID0g
IiBSZXBsYWNlZC4iIGlmIC9eUi4rXHMrKC4rKSQvOworaWYgKEBkaWZmRmlsZXMpCisgIHsKKyAg
ICBteSAkZGlmZkZpbGVzU3RyaW5nID0gIiciIC4gam9pbiAoIicgJyIsIEBkaWZmRmlsZXMpIC4g
IiciOworICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nICdzdm4gc3RhdCcgb24gY2hhbmdlZCwg
YWRkZWQsIG9yIHJlbW92ZWQgZmlsZXMuXG4iOworICAgIG9wZW4gU1ZOU1RBVCwgIiRTVk4gc3Rh
dCAkZGlmZkZpbGVzU3RyaW5nIDI+IC9kZXYvc3Rkb3V0IHwiIG9yIGRpZSAiVGhlIHN2biBzdGF0
IGZhaWxlZDogJCEuXG4iOworICAgIHdoaWxlKDxTVk5TVEFUPikKKyAgICAgIHsKKyAgICAgICAg
aWYgKC9eKFtBLVpdKS4rXHMrKC4rKSQvKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbXkg
JHN0YXR1cyA9ICQxOworICAgICAgICAgICAgICBteSAkZmlsZSA9ICQyOworICAgICAgICAgICAg
ICBpZiAoJHN0YXR1cyBlcSAiQSIgfHwgJHN0YXR1cyBlcSAiTSIpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgbXkgQGNvbXBvbmVudHMgPSBGaWxlOjpTcGVjLT5zcGxpdGRp
cigkZmlsZSk7CisgICAgICAgICAgICAgICAgICAkY2hhbmdlZExheW91dFRlc3RzID0gMSBpZiAh
JGNoYW5nZWRMYXlvdXRUZXN0cyAmJiAkY29tcG9uZW50c1swXSBlcSAiTGF5b3V0VGVzdHMiOwor
ICAgICAgICAgICAgICAgICAgcHVzaCBAY2hhbmdlZF9maWxlcywgJGZpbGUgaWYgJGNvbXBvbmVu
dHNbJCNjb21wb25lbnRzXSBuZSAiQ2hhbmdlTG9nIjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIHB1c2ggQGNvbmZsaWN0X2ZpbGVzLCAkZmlsZSBpZiAkc3RhdHVzIGVxICJDIjsK
KyAgICAgICAgICAgICAgJGZ1bmN0aW9uX2xpc3RzeyRmaWxlfSA9ICRzdGF0dXNEZXNjcmlwdGlv
bnskc3RhdHVzfSBpZiBleGlzdHMgJHN0YXR1c0Rlc2NyaXB0aW9ueyRzdGF0dXN9OworICAgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50OyAgIyBl
cnJvciBvdXRwdXQgZnJvbSBzdm4gc3RhdAorICAgICAgICAgIH0KKyAgICAgIH0KKyAgICBjbG9z
ZSBTVk5TVEFUOworICB9CiAKLSAgICBwcmludCB1bmxlc3MgL15bQS1aXS87CitpZiAoIUBkaWZm
RmlsZXMgfHwgISVmdW5jdGlvbl9saXN0cykKKyAgeworICAgIHByaW50IFNUREVSUiAiICBObyBj
aGFuZ2VzIGZvdW5kLlxuIjsKKyAgICBleGl0IDE7CiAgIH0KLWNsb3NlIFVQREFURTsKIAogaWYg
KEBjb25mbGljdF9maWxlcykKICAgewpAQCAtMTAyLDkgKzE1OCw5IEBAIGlmIChAY2hhbmdlZF9m
aWxlcykKIAogICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlmaWVkIGxp
bmVzLgogICAgICMgVXNlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFj
aCBkaWZmLgotICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nICdzdm4gZGlmZicgdG8gZGV0ZXJt
aW5lIHdoaWNoIGxpbmVzIGNoYW5nZWQuXG4iOworICAgIHByaW50IFNUREVSUiAiICBSZXZpZXdp
bmcgJ3N2biBkaWZmJyB0byBkZXRlcm1pbmUgd2hpY2ggbGluZXMgY2hhbmdlZC5cbiI7CiAgICAg
bXkgJGZpbGU7Ci0gICAgb3BlbiBESUZGLCAiJFNWTiBkaWZmIC0tZGlmZi1jbWQgZGlmZiAteCAt
TiAkY2hhbmdlZF9maWxlc19zdHJpbmcgfCIgb3IgZGllICJUaGUgc3ZuIGRpZmYgZmFpbGVkOiAk
IS5cbiI7CisgICAgb3BlbiBESUZGLCAiPCAkZGlmZlRlbXBGaWxlIiBvciBkaWUgIk9wZW5pbmcg
JGRpZmZUZW1wRmlsZSBmYWlsZWQ6ICQhLlxuIjsKICAgICB3aGlsZSAoPERJRkY+KQogICAgICAg
ewogICAgICAgICAkZmlsZSA9ICQxIGlmIC9eSW5kZXg6IChcUyspJC87CkBAIC0xNzMsMTIgKzIy
OSw2IEBAIGlmICglY2hhbmdlZF9saW5lX3JhbmdlcykKICAgICAgIH0KICAgfQogCi1pZiAoISVm
dW5jdGlvbl9saXN0cykKLSAgewotICAgIHByaW50IFNUREVSUiAiICBObyBjaGFuZ2VzIGZvdW5k
LlxuIjsKLSAgICBleGl0IDE7Ci0gIH0KLQogIyBHZXQgc29tZSBwYXJhbWV0ZXJzIGZvciB0aGUg
Q2hhbmdlTG9nIHdlIGFyZSBhYm91dCB0byB3cml0ZS4KIG15ICRkYXRlID0gc3ByaW50ZiAiJWQt
JTAyZC0lMDJkIiwKICAgMTkwMCArIChsb2NhbHRpbWUgJF5UKVs1XSwgIyB5ZWFyCkBAIC0yNTAs
MTAgKzMwMCw3IEBAIGZvcmVhY2ggbXkgJHByZWZpeCAoc29ydCBrZXlzICVmaWxlcykKICAgICBw
cmludCBDSEFOR0VfTE9HICIkZGF0ZSAgJG5hbWUgIDwkZW1haWxfYWRkcmVzcz5cblxuIjsKICAg
ICBwcmludCBDSEFOR0VfTE9HICIgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLlxu
XG4iOwogICAgIGlmICgkcHJlZml4ID1+IG0vV2ViQ29yZS8gfHwgYHB3ZGAgPX4gbS9XZWJDb3Jl
LykgewotICAgICAgICBteSAkdGVzdHNEaXIgPSAiLi4vTGF5b3V0VGVzdHMiOwotICAgICAgICAk
dGVzdHNEaXIgPSAiJHByZWZpeC8kdGVzdHNEaXIiIGlmIGxlbmd0aCgkcHJlZml4KTsKLSAgICAg
ICAgbXkgJGhhdmVOZXdUZXN0cyA9ICgteCAiJHRlc3RzRGlyLy4uL0xheW91dFRlc3RzIiAmJiBg
c3ZuIGRpZmYgXCIkdGVzdHNEaXIvLi4vTGF5b3V0VGVzdHNcImApOwotICAgICAgICBwcmludCBD
SEFOR0VfTE9HICIgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdF
RFxuXG4iIHVubGVzcyAkaGF2ZU5ld1Rlc3RzOworICAgICAgICBwcmludCBDSEFOR0VfTE9HICIg
ICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRFxuXG4iIHVubGVz
cyAkY2hhbmdlZExheW91dFRlc3RzOwogICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNv
cnQgQHskZmlsZXN7JHByZWZpeH19KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8811</attachid>
            <date>2006-06-11 12:12:49 -0700</date>
            <delta_ts>2006-06-11 16:23:36 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-9395-v2.diff</filename>
            <type>text/plain</type>
            <size>6269</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODEwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMDYtMTEgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05Mzk1CisgICAgICAgIE1ha2UgcHJlcGFyZS1DaGFuZ2VMb2cgZmFzdGVyCisKKyAgICAgICAg
KiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOiBVc2UgInN2biBkaWZmIiBpbnN0ZWFkIG9mICJz
dm4gc3RhdCIgdG8gZmluZCBjaGFuZ2VkIGZpbGVzLAorICAgICAgICB0aGVuIHNhdmUgdGhlIGRp
ZmYgb3V0cHV0IGZvciByZXVzZS4gIEtlZXAgYSBzdGF0dXMgdmFyaWFibGUgaWYgY2hhbmdlcyBh
cmUgbWFkZSB0bworICAgICAgICBMYXlvdXRUZXN0cyBzbyAic3ZuIGRpZmYgTGF5b3V0VGVzdHMi
IGRvZXNuJ3QgaGF2ZSB0byBiZSBydW4gdG8gY2hlY2sgZm9yIGNoYW5nZXMgd2hlbgorICAgICAg
ICBXZWJDb3JlIGlzIHVwZGF0ZWQuICBBZGRlZCAtaHwtLWhlbHAgY29tbWFuZC1saW5lIHN3aXRj
aCBhbmQgaGVscCBtZXNzYWdlLiAgTW92ZSB0ZXN0CisgICAgICAgIGZvciBubyBjaGFuZ2VkIGZp
bGVzIGNsb3NlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9ncmFtLgorCiAyMDA2LTA2LTEw
ICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGFuZCBsYW5kZWQgYnkgYXAuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3By
ZXBhcmUtQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODEwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDI4IEBACiAjICAgICBw
cmV2aW91cyBmdW5jdGlvbi4KIAogdXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKIAordXNlIEZp
bGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6VGVtcDsKIHVzZSBHZXRv
cHQ6Okxvbmc7CiAKLW15ICRzcGV3RGlmZiA9ICRFTlZ7IlBSRVBBUkVfQ0hBTkdFTE9HX0RJRkYi
fTsKIG15ICRvcGVuQ2hhbmdlTG9ncyA9IDA7Ci1HZXRPcHRpb25zKCJkaWZmfGQhIiA9PiBcJHNw
ZXdEaWZmLAotICAgICAgICAgICAib3BlbnxvISIgPT4gXCRvcGVuQ2hhbmdlTG9ncyk7CitteSAk
c2hvd0hlbHAgPSAwOworbXkgJHNwZXdEaWZmID0gJEVOVnsiUFJFUEFSRV9DSEFOR0VMT0dfRElG
RiJ9OworbXkgJHBhcnNlT3B0aW9uc1Jlc3VsdCA9CisgICAgR2V0T3B0aW9ucygiZGlmZnxkISIg
PT4gXCRzcGV3RGlmZiwKKyAgICAgICAgICAgICAgICJoZWxwfGghIiA9PiBcJHNob3dIZWxwLAor
ICAgICAgICAgICAgICAgIm9wZW58byEiID0+IFwkb3BlbkNoYW5nZUxvZ3MpOworaWYgKCEkcGFy
c2VPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkKKyAgeworICAgIHByaW50IFNUREVSUiBiYXNl
bmFtZSgkMCkgLiAiIFstZHwtLWRpZmZdIFstaHwtLWhlbHBdIFstb3wtLW9wZW5dXG4iOworICAg
IHByaW50IFNUREVSUiAiICAtZHwtLWRpZmYgIFNwZXcgZGlmZiB0byBzdGRvdXQgd2hlbiBydW5u
aW5nXG4iOworICAgIHByaW50IFNUREVSUiAiICAtaHwtLWhlbHAgIFNob3cgdGhpcyBoZWxwIG1l
c3NhZ2VcbiI7CisgICAgcHJpbnQgU1RERVJSICIgIC1vfC0tb3BlbiAgT3BlbiBDaGFuZ2VMb2dz
IGluIGFuIGVkaXRvciB3aGVuIGRvbmVcbiI7CisgICAgZXhpdCAxOworICB9CiAKICMgRmluZCB0
aGUgbGlzdCBvZiBtb2RpZmllZCBmaWxlcwogbXkgQGNoYW5nZWRfZmlsZXM7CkBAIC02OCwyNiAr
ODMsNjcgQEAgbXkgQGNvbmZsaWN0X2ZpbGVzOwogCiBteSAkU1ZOID0gInN2biI7CiAKLXByaW50
IFNUREVSUiAiICBSdW5uaW5nICdzdm4gc3RhdHVzJyB0byBmaW5kIGNoYW5nZWQsIGFkZGVkLCBv
ciByZW1vdmVkIGZpbGVzLlxuIjsKLW9wZW4gVVBEQVRFLCAiJFNWTiBzdGF0dXMgMj4gL2Rldi9z
dGRvdXQgfCIgb3IgZGllICJUaGUgc3ZuIHN0YXR1cyBmYWlsZWQ6ICQhLlxuIjsKLXdoaWxlICg8
VVBEQVRFPikKK215ICVzdGF0dXNEZXNjcmlwdGlvbiA9ICgKKyAgICAiQSIgPT4gIiBBZGRlZC4i
LAorICAgICJEIiA9PiAiIFJlbW92ZWQuIiwKKyAgICAiTSIgPT4gIiIsCisgICAgIlIiID0+ICIg
UmVwbGFjZWQuIiwKKyk7CisKK215ICRjaGFuZ2VkTGF5b3V0VGVzdHMgPSAwOworCitteSAkRElG
Rk9VVCA9IG5ldyBGaWxlOjpUZW1wKFRFTVBMQVRFID0+IGJhc2VuYW1lKCQwKSAuICItWFhYWFhY
WFgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVIgPT4gKCRFTlZ7J1RNUERJUid9
IHx8ICIvdG1wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVRkZJWCA9PiAiLmRp
ZmYiKTsKK215ICRkaWZmVGVtcEZpbGUgPSAkRElGRk9VVC0+ZmlsZW5hbWUoKTsKK215IEBkaWZm
RmlsZXM7CisKK3ByaW50IFNUREVSUiAiICBSdW5uaW5nICdzdm4gZGlmZicgdG8gZmluZCBjaGFu
Z2VkLCBhZGRlZCwgb3IgcmVtb3ZlZCBmaWxlcy5cbiI7CitvcGVuIFNWTkRJRkYsICIkU1ZOIGRp
ZmYgLS1kaWZmLWNtZCBkaWZmIC14IC1OIHwiIG9yIGRpZSAiVGhlIHN2biBkaWZmIGZhaWxlZDog
JCEuXG4iOword2hpbGUgKDxTVk5ESUZGPikKICAgewotICAgIGlmICgvXltNQV0uK1xzKyguKykk
LykKKyAgICBwcmludCAkRElGRk9VVCAkXzsKKyAgICBpZiAoL15JbmRleDogKC4rKSQvKQogICAg
ICAgewotICAgICAgICBteSAkZmlsZSA9ICQxOwotICAgICAgICAkZnVuY3Rpb25fbGlzdHN7JGZp
bGV9ID0gIiI7Ci0gICAgICAgIHB1c2ggQGNoYW5nZWRfZmlsZXMsICRmaWxlIGlmICRmaWxlIG5l
ICJDaGFuZ2VMb2ciOworICAgICAgICBwdXNoIEBkaWZmRmlsZXMsICQxOwogICAgICAgfQorICB9
CitjbG9zZSBTVk5ESUZGOworY2xvc2UgJERJRkZPVVQ7CiAKLSAgICBwdXNoIEBjb25mbGljdF9m
aWxlcywgJDEgaWYgL15DLitccysoLispJC87Ci0KLSAgICAkZnVuY3Rpb25fbGlzdHN7JDF9ID0g
IiBBZGRlZC4iIGlmIC9eQS4rXHMrKC4rKSQvOwotICAgICRmdW5jdGlvbl9saXN0c3skMX0gPSAi
IFJlbW92ZWQuIiBpZiAvXkQuK1xzKyguKykkLzsKLSAgICAkZnVuY3Rpb25fbGlzdHN7JDF9ID0g
IiBSZXBsYWNlZC4iIGlmIC9eUi4rXHMrKC4rKSQvOworaWYgKEBkaWZmRmlsZXMpCisgIHsKKyAg
ICBteSAkZGlmZkZpbGVzU3RyaW5nID0gIiciIC4gam9pbiAoIicgJyIsIEBkaWZmRmlsZXMpIC4g
IiciOworICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nICdzdm4gc3RhdCcgb24gY2hhbmdlZCwg
YWRkZWQsIG9yIHJlbW92ZWQgZmlsZXMuXG4iOworICAgIG9wZW4gU1ZOU1RBVCwgIiRTVk4gc3Rh
dCAkZGlmZkZpbGVzU3RyaW5nIDI+IC9kZXYvc3Rkb3V0IHwiIG9yIGRpZSAiVGhlIHN2biBzdGF0
IGZhaWxlZDogJCEuXG4iOworICAgIHdoaWxlKDxTVk5TVEFUPikKKyAgICAgIHsKKyAgICAgICAg
aWYgKC9eKFtBLVpdKS4rXHMrKC4rKSQvKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbXkg
JHN0YXR1cyA9ICQxOworICAgICAgICAgICAgICBteSAkZmlsZSA9ICQyOworICAgICAgICAgICAg
ICBpZiAoJHN0YXR1cyBlcSAiQSIgfHwgJHN0YXR1cyBlcSAiTSIpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgbXkgQGNvbXBvbmVudHMgPSBGaWxlOjpTcGVjLT5zcGxpdGRp
cigkZmlsZSk7CisgICAgICAgICAgICAgICAgICAkY2hhbmdlZExheW91dFRlc3RzID0gMSBpZiAk
Y29tcG9uZW50c1swXSBlcSAiTGF5b3V0VGVzdHMiOworICAgICAgICAgICAgICAgICAgcHVzaCBA
Y2hhbmdlZF9maWxlcywgJGZpbGUgaWYgJGNvbXBvbmVudHNbJCNjb21wb25lbnRzXSBuZSAiQ2hh
bmdlTG9nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHB1c2ggQGNvbmZsaWN0
X2ZpbGVzLCAkZmlsZSBpZiAkc3RhdHVzIGVxICJDIjsKKyAgICAgICAgICAgICAgJGZ1bmN0aW9u
X2xpc3RzeyRmaWxlfSA9ICRzdGF0dXNEZXNjcmlwdGlvbnskc3RhdHVzfSBpZiBleGlzdHMgJHN0
YXR1c0Rlc2NyaXB0aW9ueyRzdGF0dXN9OworICAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHsKKyAgICAgICAgICAgIHByaW50OyAgIyBlcnJvciBvdXRwdXQgZnJvbSBzdm4gc3Rh
dAorICAgICAgICAgIH0KKyAgICAgIH0KKyAgICBjbG9zZSBTVk5TVEFUOworICB9CiAKLSAgICBw
cmludCB1bmxlc3MgL15bQS1aXS87CitpZiAoIUBkaWZmRmlsZXMgfHwgISVmdW5jdGlvbl9saXN0
cykKKyAgeworICAgIHByaW50IFNUREVSUiAiICBObyBjaGFuZ2VzIGZvdW5kLlxuIjsKKyAgICBl
eGl0IDE7CiAgIH0KLWNsb3NlIFVQREFURTsKIAogaWYgKEBjb25mbGljdF9maWxlcykKICAgewpA
QCAtMTAyLDkgKzE1OCw5IEBAIGlmIChAY2hhbmdlZF9maWxlcykKIAogICAgICMgRm9yIGVhY2gg
ZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlmaWVkIGxpbmVzLgogICAgICMgVXNlIGxpbmUgbnVt
YmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFjaCBkaWZmLgotICAgIHByaW50IFNUREVS
UiAiICBSdW5uaW5nICdzdm4gZGlmZicgdG8gZGV0ZXJtaW5lIHdoaWNoIGxpbmVzIGNoYW5nZWQu
XG4iOworICAgIHByaW50IFNUREVSUiAiICBSZXZpZXdpbmcgJ3N2biBkaWZmJyB0byBkZXRlcm1p
bmUgd2hpY2ggbGluZXMgY2hhbmdlZC5cbiI7CiAgICAgbXkgJGZpbGU7Ci0gICAgb3BlbiBESUZG
LCAiJFNWTiBkaWZmIC0tZGlmZi1jbWQgZGlmZiAteCAtTiAkY2hhbmdlZF9maWxlc19zdHJpbmcg
fCIgb3IgZGllICJUaGUgc3ZuIGRpZmYgZmFpbGVkOiAkIS5cbiI7CisgICAgb3BlbiBESUZGLCAi
PCAkZGlmZlRlbXBGaWxlIiBvciBkaWUgIk9wZW5pbmcgJGRpZmZUZW1wRmlsZSBmYWlsZWQ6ICQh
LlxuIjsKICAgICB3aGlsZSAoPERJRkY+KQogICAgICAgewogICAgICAgICAkZmlsZSA9ICQxIGlm
IC9eSW5kZXg6IChcUyspJC87CkBAIC0xNzMsMTIgKzIyOSw2IEBAIGlmICglY2hhbmdlZF9saW5l
X3JhbmdlcykKICAgICAgIH0KICAgfQogCi1pZiAoISVmdW5jdGlvbl9saXN0cykKLSAgewotICAg
IHByaW50IFNUREVSUiAiICBObyBjaGFuZ2VzIGZvdW5kLlxuIjsKLSAgICBleGl0IDE7Ci0gIH0K
LQogIyBHZXQgc29tZSBwYXJhbWV0ZXJzIGZvciB0aGUgQ2hhbmdlTG9nIHdlIGFyZSBhYm91dCB0
byB3cml0ZS4KIG15ICRkYXRlID0gc3ByaW50ZiAiJWQtJTAyZC0lMDJkIiwKICAgMTkwMCArIChs
b2NhbHRpbWUgJF5UKVs1XSwgIyB5ZWFyCkBAIC0yNTAsMTAgKzMwMCw3IEBAIGZvcmVhY2ggbXkg
JHByZWZpeCAoc29ydCBrZXlzICVmaWxlcykKICAgICBwcmludCBDSEFOR0VfTE9HICIkZGF0ZSAg
JG5hbWUgIDwkZW1haWxfYWRkcmVzcz5cblxuIjsKICAgICBwcmludCBDSEFOR0VfTE9HICIgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLlxuXG4iOwogICAgIGlmICgkcHJlZml4ID1+
IG0vV2ViQ29yZS8gfHwgYHB3ZGAgPX4gbS9XZWJDb3JlLykgewotICAgICAgICBteSAkdGVzdHNE
aXIgPSAiLi4vTGF5b3V0VGVzdHMiOwotICAgICAgICAkdGVzdHNEaXIgPSAiJHByZWZpeC8kdGVz
dHNEaXIiIGlmIGxlbmd0aCgkcHJlZml4KTsKLSAgICAgICAgbXkgJGhhdmVOZXdUZXN0cyA9ICgt
eCAiJHRlc3RzRGlyLy4uL0xheW91dFRlc3RzIiAmJiBgc3ZuIGRpZmYgXCIkdGVzdHNEaXIvLi4v
TGF5b3V0VGVzdHNcImApOwotICAgICAgICBwcmludCBDSEFOR0VfTE9HICIgICAgICAgIFdBUk5J
Tkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRFxuXG4iIHVubGVzcyAkaGF2ZU5ld1Rl
c3RzOworICAgICAgICBwcmludCBDSEFOR0VfTE9HICIgICAgICAgIFdBUk5JTkc6IE5PIFRFU1Qg
Q0FTRVMgQURERUQgT1IgQ0hBTkdFRFxuXG4iIHVubGVzcyAkY2hhbmdlZExheW91dFRlc3RzOwog
ICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgQHskZmlsZXN7JHByZWZpeH19KQo=
</data>
<flag name="review"
          id="2558"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>