The Annoyance Filter.pdf - Fourmilab
The Annoyance Filter.pdf - Fourmilab
The Annoyance Filter.pdf - Fourmilab
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
214 DEVELOPMENT LOG ANNOYANCE-FILTER §256<br />
to correct these items, and modified the Makefile.in targets to generate a first draft HTML in<br />
annoyance−filter_man_raw.html, which is post-processed by the fixup program into the final annoyance−filter_ma<br />
file, which is now included in the distribution by the dist target and copied to the Web directory by<br />
publish, both of which targets generate it if necessary.<br />
Added a mantroff target to Makefile.in to preview the troff format manual page using “groff␣−X”<br />
(if available on the system—if not, don’t do that).<br />
Wrote a docutil/cwebextract.pl Perl program which searches a CWEB file for a named section (which<br />
can be a regular “@” section, so long as the search target appears on the same line as the “@”. If the<br />
section is found (matching is case insensitive and the search target given on the command line matches<br />
the first line containing a substring which it matches), the contents of the documentation section is<br />
written to standard output, trimming leading and trailing blank lines. <strong>The</strong> end of the documentation<br />
section is the next line which begins with an at sign or the end of file.<br />
Moved the TEX definitions used to generate the options list to the top of annoyance−filter.w so they<br />
don’t confuse the automatic extraction and translation process.<br />
Modified docutil/cwebtex2man.pl to ignore TEX \bigskip commands, carefully avoiding generating<br />
a nugatory .PP in the troff output due to two consecutive blank lines once the command has been<br />
ignored.<br />
Added the docutil directory and its contents to the distribution generation target in Makefile.in.<br />
Generation of the “OPTIONS” section of the annoyance−filter.1 manual page from the corresponding<br />
section of annoyance−filter.w is now completely Turbo Digital TM . <strong>The</strong> invariant parts of<br />
the manual page are now defined in the “manual page macro” file annoyance−filter.manm. <strong>The</strong><br />
Makefile.in now understands that annoyance−filter.1 is generated by processing this file with<br />
docutil/manm_expand.pl which expands \"%include statements in the macro file by extracting the<br />
specified section from the named CWEB file with docutil/cwebextract.pl, translating it into manual<br />
page troff with docutil/cwebtex2man.pl, and inserting it in the output file in place of the include<br />
statement. This completely eliminates all manual labour when updating the options in the manual page<br />
and guarantees that changes to the option documentation in annoyance−filter.w are propagated to<br />
the manual page document. <strong>The</strong> same mechanism can be used for other common documentation as the<br />
need arises.<br />
2002 October 3<br />
Subtly obfuscated the E-mail address to which bugs should be reported in the manual page so the<br />
process of transforming it into HTML won’t result in a deadly mailto: link or a sniffable address in<br />
the page. Visual fidelity for human readers is maintained.<br />
Updated the Web document to reflect the existence of the HTML manual page and added links to it.<br />
Added a reference to the PDF document to the “SEE ALSO” section of annoyance−filter.manm.<br />
Fixed an embarrassing hyphenation of a file name by prefixing the offending word with the troff<br />
“don’t hyphenate” escape “\%”. (Apparently, even in nh mode, troff will hyphenate a word which<br />
contains an embedded hyphen unless you explicitly forbid it.)<br />
Added the .w files to the winarch.zip archive used to transfer files to build for Win32. While they<br />
aren’t strictly required, they’re awfully handy to have should you encounter compile errors, which are<br />
reported with line numbers from the CWEB file. Looking it up while on Windows and patching the C++<br />
file is a lot quicker than booting back into a real operating system to explore the problem.<br />
In 〈 Check whether folder is a directory of messages 135 〉 there was an erroneous reference to dirFolder<br />
not conditional on HAVE_DIRECTORY_TRAVERSAL—fixed.<br />
<strong>The</strong> mailFolder constructor which accepts a file name in a string re-used the ifstream isc, which was<br />
previously used only when reading compressed files. This caused compile errors on systems where