  <chapter id="patches">
    <title>Submitting Patches</title>

    <sect1 id="patch-format">
      <title>Patch Format</title>

      <para>
        Patches are submitted via email to the Wine patches mailing list, 
	<email>wine-patches@winehq.org</email>. Your patch should include:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            A meaningful subject (very short description of patch)            
          </para>
        </listitem>
         <listitem>
          <para>
            A long (paragraph) description of what was wrong and what is now 
            better. (recommended)
          </para>
        </listitem>
        <listitem>
          <para>
            A change log entry (short description of what was changed).
          </para>
        </listitem>
        <listitem>
          <para>
            The patch in <command>diff -u</command> format
          </para>
        </listitem>
      </itemizedlist>

      <para>
	
      </para>

      <para>
        <command>cvs diff -u</command> works great for the common case
        where a file is edited.  However, if you add or remove a file
        <command>cvs diff</command> will not report that correctly so
        make sure you explicitly take care of this rare case.
      </para>
      <para>
        For additions simply include them by appending the
        <command>diff -u /dev/null /my/new/file</command> output of them
	to any <command>cvs diff -u</command> output you may have.
	Alternatively, use <command>diff -Nu olddir/ newdir/</command>
	in case of multiple new files to add.
      </para>
      <para>
        For removals, clearly list the files in the description of the patch.
      </para>
      <para>
        Since wine is constantly changing due to development it is strongly
        recommended that you use cvs for patches, if you cannot use cvs for
        some reason, you can submit patches against the latest tarball. 
        To do this make a copy of the files that you will be modifying and
        <command>diff -u</command> against the old file. I.E.
      </para>
      <screen>
diff -u file.old file.c > file.txt
      </screen>
    </sect1>

    <sect1 id="Style-notes">
      <title>Some notes about style</title>
       
      <para>
        There are a few conventions that about coding style that have been
        adopted over the years of development. The rational for these 
        <quote>rules</quote> is explained for each one.
      </para>
      <itemizedlist>
        <listitem>
        <para>
          No HTML mail, since patches should be in-lined and HTML turns the 
          patch into garbage. Also it is considered bad etiquette as it 
          uglifies the message, and is not viewable by many of the subscribers.
        </para>
        </listitem>
         <listitem>
        <para>
           Only one change set per patch. Patches should address only one
           bug/problem at a time. If a lot of changes need to be made then it
           is preferred to break it into a series of patches. This makes it
           easier to find regressions.
        </para>
        </listitem>
        <listitem>
        <para>
          Tabs are not forbidden but discouraged. A tab is defined as
          8 characters and the usual amount of indentation is 4
          characters.
        </para>
        </listitem>
        <listitem>
        <para>
          C++ style comments are discouraged since some compilers choke on 
          them.
        </para>
        </listitem>
        <listitem>
        <para>
          Commenting out a block of code is usually done by enclosing it in 
          <command>#if 0 ... #endif</command> Statements. For example.
        </para>
        <screen> 
/* note about reason for commenting block */
#if 0
code
code /* comments */
code
#endif
        </screen>
        <para>
          The reason for using this method is that it does not require that
          you edit comments that may be inside the block of code.
        </para>
        </listitem>
        <listitem>
        <para>
          Patches should be in-lined (if you can configure your email client to
          not wrap lines), or attached as plain text attachments so they can 
          be read inline. This may mean some more work for you. However it
          allows others to review your patch easily and decreases the chances
          of it being overlooked or forgotten.
        </para>
        </listitem>
        <listitem>
        <para>
          Code is usually limited to 80 columns. This helps prevent mailers
          mangling patches by line wrap. Also it generally makes code easier
          to read.
        </para>
        </listitem>
      </itemizedlist>
      <sect2 id="Inline-Attachments-with-OE">
        <title>Inline attachments with Outlook Express</title>
        <para>
          Outlook Express is notorious for mangling attachments. Giving the
          patch a <filename>.txt</filename> extension and attaching will solve
          the problem for most mailers including Outlook. Also, there is a way
          to enable Outlook Express send <filename>.diff</filename>
          attachments.
        </para>
        <para>
          You need following two things to make it work.
        </para>
        <orderedlist>
          <listitem>
          <para>
            Make sure that <filename>.diff</filename> files have \r\n line
            ends, because if OE detects that there is no \r\n line endings it
            switches to quoted-printable format attachments.
          </para>
          </listitem>
          <listitem>
          <para>
            Using regedit add key "Content Type" with value "text/plain" 
            to the .diff extension under HKEY_CLASSES_ROOT (same as for .txt
            extension). This tells OE to use Content-Type: text/plain instead
            of application/octet-stream.
          </para>
          </listitem>
        </orderedlist>
        <para>
          Item #1 is important. After you hit "Send" button, go to "Outbox" 
          and using "Properties" verify the message source to make sure that
          the mail has correct format. You might want to send several test
          emails to yourself too.
        </para>
      </sect2>
      <sect2 id="Alexandre-Bottom-Line">
        <title>Alexandre's Bottom Line</title>
        <para>
          <quote>The basic rules are: no attachments, no mime crap, no 
          line wrapping, a single patch per mail. Basically if I can't 
          do <command>"cat raw_mail | patch -p0"</command> it's in the
          wrong format.</quote>
        </para>
      </sect2>
    </sect1>

    <sect1 id="patch-quality">
      <title>Quality Assurance</title>

      <para>
        (Or, "How do I get Alexandre to apply my patch quickly so I
        can build on it and it will not go stale?")
      </para>
      <para>
        Make sure your patch applies to the current CVS head
        revisions.  If a bunch of patches are committed to CVS that may
        affect whether your patch will apply cleanly then verify that
        your patch does apply!   <command>cvs update</command> is your
        friend!
      </para>
      <para>
        Save yourself some embarrassment and run your patched code
        against more than just your current test example.  Experience
        will tell you how much effort to apply here.
      </para>

    </sect1>
  </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-devel.sgml" "set" "book" "part" "chapter" "")
End:
-->
