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.
212 DEVELOPMENT LOG ANNOYANCE-FILTER §256<br />
Added logic to configure.in to test for the presence of the system function and the gnuplot and<br />
ppmtogif utilities required by the −−plot option. If any of them is missing, the option will be disabled<br />
when the program is compiled.<br />
Added a test to configure.in for the presence of readlink and disabled the code that chases symbolic<br />
links in file name arguments if it’s absent. I also added a “probable loop” warning if this code exceeds<br />
the maximum link depth limit.<br />
Added a configurator test for the presence of popen and code to disable the ability to read compressed<br />
files if it’s not present. This allowed me to remove the special case for WIN32 I added last night to build<br />
on DJGPP—it’s now subsumed into the test for popen.<br />
Designed this version as “Release Candidate 1” and indicated this by setting VERSION to "0.1−RC1".<br />
Proofed the program documentation and the formatting of the code listing and fixed numerous typos<br />
and infelicitous layout.<br />
Defined −t as a shortcut single-letter option for −−test and −r as a shortcut for −−read.<br />
Release 0.1-RC1.<br />
2002 September 24<br />
Hugh Daniel took a look at the program and had many comments and suggestions. Until otherwise<br />
noted, the following items result from them.<br />
Corrected “vertical interlace” terminology in the document to “vertical retrace”. I’m forever screwing<br />
that one up.<br />
Renamed −−purge to −−prune, which is a more precise (and less intimidating) description of what it<br />
does. For the moment, −−purge is still accepted to ease the transition. Fixed the check target in<br />
Makefile.in to use −−prune.<br />
Added the hideous logic to Makefile.in to report overall pass/fail status for the check target.<br />
Clarified the infectuous nature of the GPL in COPYING. While I was at it, I added information about<br />
the public domain status of DCDFlib.<br />
Okay, back to self-generated items. . . . Changed the −−plot option to use pnmtopng to generate the<br />
plot in PNG format instead of GIF.<br />
Release 0.1-RC2.<br />
2002 September 26<br />
Added the ability to treat a directory as a mail folder consisting of messages in individual files in the<br />
directory. <strong>The</strong> contents of the directory are simply logically concatenated and are not restricted to one<br />
message per file–they may be UNIX mail folders in their own right.<br />
After a huge amount of wasted effort trying to do this in an ultra-clean C++ fashion by defining an<br />
idirstream flavour of istream which returns the concatenated contents of files in a directory (I got that<br />
close, but couldn’t make it work with the getline function for string without stooping to ugliness and<br />
making assumptions about the guts of the iostream package I believed unwarranted. This dead end is<br />
why you see no log entries for yesterday.<br />
So, I ripped all that out and simply added logic to mailFolder to detect when it’s passed a directory<br />
and wrap a loop traversing the directory around the main input loop; when end of file is encountered and<br />
we’re traversing a directory, we look for the next file and commence processing it, declaring a genuine<br />
end of file only at the end of the directory.<br />
This interacts in an interesting way with the MIME decoders. Recall that they are passed the actual<br />
istream from which the mailFolder normally reads and take charge of it until the end of the encoded