summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2013-09-14 13:59:59 -0400
committerEric S. Raymond <esr@thyrsus.com>2013-09-14 13:59:59 -0400
commit21a86e25352b57828e998bc448f3f32587aee55c (patch)
treeda949c4727b15ac65e226973dbd030f6ad3e05ff
parent810ea3e35953226083925a77ba20de18ea159829 (diff)
downloaddeheader-21a86e25352b57828e998bc448f3f32587aee55c.tar.gz
deheader-21a86e25352b57828e998bc448f3f32587aee55c.tar.bz2
deheader-21a86e25352b57828e998bc448f3f32587aee55c.tar.xz
deheader-21a86e25352b57828e998bc448f3f32587aee55c.zip
More documentation fixes.
-rw-r--r--deheader.xml24
1 files changed, 14 insertions, 10 deletions
diff --git a/deheader.xml b/deheader.xml
index ffb3acf..60a2b79 100644
--- a/deheader.xml
+++ b/deheader.xml
@@ -37,8 +37,12 @@ report on which #includes can be omitted from them; also, what
standard inclusions may be required for portability. The test, for
each foo.c or foo.cc or foo.cpp, is simply whether 'rm foo.o; make
foo.o' returns a zero status (but the build command may be
-overridden). Optionally, with the <option>-r</option> switch, the
-unneeded headers are removed from the sourcefiles.</para>
+overridden).</para>
+
+<para>Optionally, with the <option>-r</option> switch, the
+unneeded headers are removed from the sourcefiles. Don't use
+this option unless you have your sourcefiles safely under version
+control and can revert!</para>
<para>If a sourcefile argument is a directory, the report is generated
on all source files beneath it. Subdirectories beginning with a dot
@@ -80,9 +84,10 @@ see the output from the make and compilation commands.</para>
<para>The last line of the output will be a statistical summary.</para>
-<para>Running deheader will leave a lot of binaries in your directory that
-were compiled in ways possibly not invoked by your normal build process.
-Running "make clean" afterwards is strongly recommended.</para>
+<para>Running deheader will leave a lot of binaries in your directory
+that were compiled in ways possibly not invoked by your normal build
+process. Running "make clean" afterwards (or the equivalent under
+whatever build system you are using) is strongly recommended.</para>
</refsect1>
<refsect1 id='options'><title>OPTIONS</title>
@@ -135,11 +140,11 @@ Takes a Python regular expression.</para>
<refsect1 id='bugs'><title>BUGS</title>
-<para>Test-compiling after running with <option>-r</option> will
+<para>Rarely, test-compiling after running with <option>-r</option> will
sometimes show that this tool removed some headers that are actually
-required for your build. This happens because
+required for your build. This can happen because
<command>deheader</command> doesn't know about all the strange things
-your build system gets up to, and the problem of analyzing it to
+your build system gets up to, and the problem of analyzing your build to
understand them would be Turing-complete. Simply revert the altered
files and continue.</para>
@@ -154,14 +159,13 @@ spot. <command>deheader</command> has an internal table of rules that
heads off the most common problems by suppressing deletion of headers
that are required for portability, but your mileage may vary.</para>
-<para>Sufficiently perverse C++ can silently invalidate the simple
+<para>Sufficiently perverse C++ can silently invalidate the brute-force
algorithm this tool uses. Example: if an overloaded function has
different overloads from two different files, removing one may expose
the other, changing runtime semantics without a compile-time warning.
Similarly, removing a later file containing a template specialization
may lead to undefined behavior from a template defined in an earlier
file. Use this with caution near such features, and test carefully.</para>
-
</refsect1>
<refsect1 id='author'><title>AUTHOR</title>