<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Ant User Manual</title>
</head>

<body>

<h2><a name="fixcrlf">FixCRLF</a></h2>
<h3>Description</h3>
      <p>
	Adjusts a text file to local conventions.
      </p>
      
      <p>
	The set of files to be adjusted can be refined with the
	<i>includes</i>, <i>includesfile</i>, <i>excludes</i>,
	<i>excludesfile</i> and <i>defaultexcludes</i>
	attributes. Patterns provided through the <i>includes</i> or
	<i>includesfile</i> attributes specify files to be
	included. Patterns provided through the <i>exclude</i> or
	<i>excludesfile</i> attribute specify files to be
	excluded. Additionally, default exclusions can be specified with
	the <i>defaultexcludes</i> attribute. See the section on <a
	href="../dirtasks.html#directorybasedtasks">directory based
	tasks</a>, for details of file inclusion/exclusion patterns
	and their usage.
      </p>
      
<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and
supports all attributes of <code>&lt;fileset&gt;</code>
(<code>dir</code> becomes <code>srcdir</code>) as well as the nested
<code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
<code>&lt;patternset&gt;</code> elements.</p>

      <p>
	The output file is only written if it is a new file, or if it
	differs from the existing file.  This prevents spurious
	rebuilds based on unchanged files which have been regenerated
	by this task.
      </p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">srcDir</td>
    <td valign="top">Where to find the files to be fixed up.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">destDir</td>
    <td valign="top">Where to place the corrected files.  Defaults to
      srcDir (replacing the original file)</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">includes</td>
    <td valign="top">comma separated list of patterns of files that must be
      included. All files are included when omitted.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">includesfile</td>
    <td valign="top">the name of a file. Each line of this file is
      taken to be an include pattern</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">excludes</td>
    <td valign="top">comma separated list of patterns of files that must be
      excluded. No files (except default excludes) are excluded when omitted.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">excludesfile</td>
    <td valign="top">the name of a file. Each line of this file is
      taken to be an exclude pattern</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">defaultexcludes</td>
    <td valign="top">indicates whether default excludes should be used or not
      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
    <td valign="top" align="center">No</td>
  </tr>
	<tr>
	  <td valign="top">eol</td>
	  <td valign="top">
	    Specifies how end-of-line (EOL) characters are to be
	    handled.  The EOL characters are CR, LF and the pair CRLF.
	    Valid values for this property are:
	    <ul>
	      <li>asis: leave EOL characters alone</li>
	      <li>cr: convert all EOLs to a single CR</li>
	      <li>lf: convert all EOLs to a single LF</li>
	      <li>crlf: convert all EOLs to the pair CRLF</li>
	    </ul>
	    Default is based on the platform on which you are running
	    this task.  For Unix platforms, the default is "lf".
	    For DOS based systems (including Windows), the default is
	    "crlf".  For Mac OS, the default is "cr".
	    <p>
	      This is the preferred method for specifying EOL.  The
	      &quot;<i><b>cr</b></i>&quot; attribute (see below) is
	      now deprecated.
	    </p>
	    <p>
	      <i>N.B.</i>: One special case is recognized. The three
	      characters CR-CR-LF are regarded as a single EOL.
	      Unless this property is specified as &quot;asis&quot;,
	      this sequence will be converted into the specified EOL
	      type.
	    </p>
	  </td>
	  <td valign="top" align="center">No</td>
	</tr>
	<tr>
	  <td valign="top">cr</td>
	  <td valign="top">
	    <i><b>Deprecated.</b></i> Specifies how CR characters are
	    to be handled at end-of-line (EOL).  Valid values for this
	    property are:
	    <ul>
	      <li>asis: leave EOL characters alone.</li>
	      <li>
		add: add a CR before any single LF characters. The
		intent is to convert all EOLs to the pair CRLF.
	      </li>
	      <li>
		remove: remove all CRs from the file.  The intent is
		to convert all EOLs to a single LF.
	      </li>
	    </ul>
	    Default is based on the platform on which you are running
	    this task.  For Unix platforms, the default is "remove".
	    For DOS based systems (including Windows), the default is
	    "add".
	    <p>
	      <i>N.B.</i>: One special case is recognized. The three
	      characters CR-CR-LF are regarded as a single EOL.
	      Unless this property is specified as &quot;asis&quot;,
	      this sequence will be converted into the specified EOL
	      type.
	    </p>
	  </td>
	  <td valign="top" align="center">No</td>
	</tr>
	<tr>
	  <td valign="top">javafiles</td>
	  <td valign="top">
	    Used only in association with the
	    &quot;<i><b>tab</b></i>&quot; attribute (see below), this
	    boolean attribute indicates whether the fileset is a set
	    of java source files
	    (&quot;yes&quot;/&quot;no&quot;). Defaults to
	    &quot;no&quot;.  See notes in section on &quot;tab&quot;.
	  </td>
	  <td valign="top" align="center">No</td>
	</tr>
	<tr>
  <tr>
    <td valign="top">tab</td>
    <td valign="top">Specifies how tab characters are to be handled.  Valid
      values for this property are:
      <ul>
      <li>add: convert sequences of spaces which span a tab stop to tabs</li>
      <li>asis: leave tab and space characters alone</li>
      <li>remove: convert tabs to spaces</li>
      </ul>
      Default for this parameter is &quot;asis&quot;.
	    <p>
	      <i>N.B.</i>: When the attribute
	      &quot;<i><b>javafiles</b></i>&quot; (see above) is
	      &quot;true&quot;, literal TAB characters occurring
	      within Java string or character constants are never
	      modified.  This functionality also requires the
	      recognition of Java-style comments.
	    </p>
      <p>
		<i>N.B.</i>: There is an incompatibility between this
		and the previous version in the handling of white
		space at the end of lines.  This version does
		<i><b>not</b></i> remove trailing whitespace on lines.
</p>
      </td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">tablength</td>
    <td valign="top">TAB character interval. Valid values are between
	      2 and 80 inclusive.  The default for this parameter is 8.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">eof</td>
    <td valign="top">Specifies how DOS end of file (control-Z) characters are
      to be handled.  Valid values for this property are:
      <ul>
      <li>add: ensure that there is an EOF character at the end of the file</li>
      <li>asis: leave EOF characters alone</li>
      <li>remove: remove any EOF character found at the end</li>
      </ul>
      Default is based on the platform on which you are running this task.
      For Unix platforms, the default is remove.  For DOS based systems
      (including Windows), the default is asis.
      </td>
    <td valign="top" align="center">No</td>
  </tr>
</table>
<h3>Examples</h3>
<pre>  &lt;fixcrlf srcdir=&quot;${src}&quot;
       eol=&quot;lf&quot; eof=&quot;remove&quot;
       includes=&quot;**/*.sh&quot;
  /&gt;</pre>
<p>Replaces EOLs with LF characters and removes eof characters from
	the shell scripts.  Tabs and spaces are left as is.</p>
<pre>  &lt;fixcrlf srcdir=&quot;${src}&quot;
       eol=&quot;crlf&quot;
       includes=&quot;**/*.bat&quot;
  /&gt;</pre>
<p>Replaces all EOLs with cr-lf pairs in the batch files.
Tabs and spaces are left as is.
EOF characters are left alone if run on
DOS systems, and are removed if run on Unix systems.</p>
<pre>  &lt;fixcrlf srcdir=&quot;${src}&quot;
       tabs=&quot;add&quot;
       includes=&quot;**/Makefile&quot;
  /&gt;</pre>
<p>Sets EOLs according to local OS conventions, and
converts sequences of spaces and tabs to the minimal set of spaces and
	tabs which will maintain spacing within the line.  Tabs are
	set at 8 character intervals.  EOF characters are left alone if
run on DOS systems, and are removed if run on Unix systems.
Many versions of make require tabs prior to commands.</p>
      <pre>  &lt;fixcrlf srcdir=&quot;${src}&quot;
       tabs=&quot;remove&quot;
       tablength=&quot;3&quot;
       eol=&quot;lf&quot;
       javafiles=&quot;yes&quot;
       includes=&quot;**/*.java&quot;
  /&gt;</pre>
      <p>
	Converts all EOLs in the included java source files to a
	single LF.  Replace all TAB characters except those in string
	or character constants with spaces, assuming a tab width of 3.
	If run on a unix system, any CTRL-Z EOF characters at the end
	of the file are removed.  On DOS/Windows, any such EOF
	characters will be left untouched.
      </p>
<pre>  &lt;fixcrlf srcdir=&quot;${src}&quot;
       tabs=&quot;remove&quot;
       includes=&quot;**/README*&quot;
  /&gt;</pre>
<p>Sets EOLs according to local OS conventions, and
converts all tabs to spaces, assuming a tab width of 8.
EOF characters are left alone if run on
DOS systems, and are removed if run on Unix systems.
You never know what editor a user will use to browse README's.</p>
<hr>
<p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>

