<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<appendix id="patches">
  <title>Useful Patches and Utilities for Bugzilla</title>		

<section id="setperl">
    <title>The setperl.csh Utility</title>
    <para>	
      You can use the "setperl.csh" utility to quickly and easily
      change the path to perl on all your Bugzilla files.
      This is a C-shell script; if you do not have "csh" or "tcsh" in the search
      path on your system, it will not work!
    </para>	
    <procedure>
      <step>
	<para>
	  Download the "setperl.csh" utility to your Bugzilla
	  directory and make it executable.
	</para>
	<substeps>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>cd /your/path/to/bugzilla</command>
	      </computeroutput>
	    </para>
	  </step>
	  <step>
	  <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>wget -O setperl.csh 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=10795'</command>
	      </computeroutput>
	    </para>
	  </step>
	<step>
	    <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>chmod u+x setperl.csh</command>
	      </computeroutput>
	    </para>
	  </step>
      </substeps>
      </step>
      <step>
	<para>
	  Prepare (and fix) Bugzilla file permissions.
	</para>
	<substeps>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>chmod u+w *</command>
	      </computeroutput>
	    </para>
	  </step>
	  <step>
	  <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>chmod u+x duplicates.cgi</command>
	      </computeroutput>
	    </para>
	  </step>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>chmod a-x bug_status.html</command>
	      </computeroutput>
	    </para>
	  </step>
	</substeps>
      </step>
      <step>
	<para>
	  Run the script:
	</para>
	<para>
	  <computeroutput>
	    <prompt>bash#</prompt>
	    <command>./setperl.csh /your/path/to/perl</command>
	  </computeroutput>
<example>
	    <title>Using Setperl to set your perl path</title>
	    <para>
	      <computeroutput>
	      <prompt>bash#</prompt>
	      <command>./setperl.csh /usr/bin/perl</command>
	      </computeroutput>
            </para>
	  </example>
	</para>
      </step>
    </procedure>
  </section>

  <section id="cmdline">
    <title>Command-line Bugzilla Queries</title>
    <para>
      Users can query Bugzilla from the command line using
      this suite of utilities.
    </para>
    <para>
      The query.conf file contains the mapping from options to field
      names and comparison types.  Quoted option names are "grepped" for, so
      it should be easy to edit this file.  Comments (#) have no effect; you
      must make sure these lines do not contain any quoted "option"
    </para>
    <para>
      buglist is a shell script which submits a Bugzilla query and writes the
      resulting HTML page to stdout.  It supports both short options,
      (such as "-Afoo" or "-Rbar") and long options (such as
      "--assignedto=foo" or "--reporter=bar").  If the first character
      of an option is not "-", it is treated as if it were prefixed
      with "--default=".
    </para>
    <para>
      The columlist is taken from the COLUMNLIST environment variable.
      This is equivalent to the "Change Columns" option when you list
      bugs in buglist.cgi.  If you have already used Bugzilla, use
      <command>grep COLUMLIST ~/.netscape/cookies</command> to see
      your current COLUMNLIST setting.
    </para>
    <para>
      bugs is a simple shell script which calls buglist and extracts
      the bug numbers from the output.  Adding the prefix
      "http://bugzilla.mozilla.org/buglist.cgi?bug_id="
      turns the bug list into a working link if any bugs are found.
      Counting bugs is easy.  Pipe the results through
      <command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>
    </para>
    <para>
      Akkana says she has good results piping buglist output through
      <command>w3m -T text/html -dump</command>
    </para>
    <procedure>
      <step>
	<para>
	  Download three files:
	</para>
	<substeps>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash$</prompt>
		<command>wget -O query.conf 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26157'</command>
	      </computeroutput>
	    </para>
	  </step>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash$</prompt>
		<command>wget -O buglist 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26944'</command>
	      </computeroutput>
	    </para>
	  </step>
	  <step>
	    <para>
	      <computeroutput>
		<prompt>bash#</prompt>
		<command>wget -O bugs 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26215'</command>
	      </computeroutput>
	    </para>
	  </step>
	</substeps>
      </step>
      <step>
	<para>
	  Make your utilities executable:
	  <computeroutput>
	    <prompt>bash$</prompt>
	    <command>chmod u+x buglist bugs</command>
	  </computeroutput>
	</para>
      </step>
    </procedure>
  </section>

  <section id="quicksearch">
    <title>The Quicksearch Utility</title>
    <para>
      Quicksearch is a new, experimental feature of the 2.12 release.
      It consist of two Javascript files, "quicksearch.js" and "localconfig.js",
      and two documentation files, "quicksearch.html" and "quicksearchhack.html"
    </para>
    <para>
      The index.html page has been updated to include the QuickSearch text box.
    </para>
    <para>
      To take full advantage of the query power, the Bugzilla maintainer must
      edit "localconfig.js" according to the value sets used in the local installation.
    </para>
    <para>
      Currently, keywords must be hard-coded in localconfig.js.  If they are not,
      keywords are not automatically recognized.  This means, if localconfig.js
      is left unconfigured, that searching for a bug with the "foo" keyword
      will only find bugs with "foo" in the summary, status whiteboard, product or
      component name, but not those with the keyword "foo".
    </para>
    <para>
      Workarounds for Bugzilla users:
      <simplelist>
	<member>search for '!foo' (this will find only bugs with the keyword "foo"</member>
	<member>search 'foo,!foo' (equivalent to 'foo OR keyword:foo')</member>
      </simplelist>
    </para>
    <para>
      When this tool is ported from client-side JavaScript to server-side Perl,
      the requirement for hard-coding keywords can be fixed.
      <ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=70907">This bug</ulink>
      has details.
    </para>
  </section>

</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->