12.06.2015 Views

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!