Hi!

I forgot to add that I _have read_ the FAQ, namely the
G5 question/answer ;):

> G5. I want to make fetchmail behave like Outlook Express.
> 
>    The  second-most-requested  feature for fetchmail, after content-based
>    filtering,  is  the ability to have it remove messages from a maildrop
>    after  N  days,
>    ...
>    This  feature  won't be added either. Repeat after me: fetchmail's job
>    is  transport,  not  policy.  If you want this, write a Perl or Python
>    script,

Here is my opinion on the matter: fetchmail is not a
transport only because it does auth info keeping and
authentication.

Yet, I did try script solution (in Python) but this had
problems with SSL and used external config file.
While it's perfectly possible to solve SSL issues
(IMHO) and parse .fetchmailrc to retrieve auth data
from there, I still think the job can be done better in
fetchmail itself.

And anyway, there _are_ already flush and keep options,
which are not strictly related to transport, but rather
to policy instead.

Also, preconnect/postconnect options are not enough to
allow easy extensibility of fetchmail by means of
scripting, IMHO. Such things as removing messages on
server by some criteria should be done when connection
is established, not before (preconnect) or after
(postconnect), so that you don't need to auth twice.
And fetchmail _could_ e.g. lend the
established/authenticated connection to some external
script which performes these tasks, but this in turn
interferes with NEW/SEEN flags on messages etc.

That's why again I'd prefer to implement the feature in
fetchmail itself.

P.S. when adding "maxkeep" I hit a problem with
long_option numbering. First time I assigned 63 to
LA_MAXKEEP, and this interfered with '?' which has the
same code (63 == 0x3f). Compiler complained about
duplicate "case ...:" values. So I redefined LA_MAXKEEP
as 163 (in the proposed patch).

Problem is in having LA_ constants defined in a range
that intersects with e.g. [?0-9], and is going to
intersect with [A-Z] if you add further sequential LA_
definitions.

Here is why this intersection matters (options.c):
>     while (!errflag && 
>          (c = getopt_long(argc,argv,shortoptions,
>                           longoptions, &option_index)) != -1)
>     {
>       switch (c) {
>       case 'V':
>       case LA_VERSION:
>           versioninfo = TRUE;
>           break;

Here you see that 'chars' and LA_ constants are used
interchangeably. That's why I propose to separate
ranges explicitly by assigning numbers to LA_ constants
starting from e.g. 300:
> #define LA_HELP               301
> #define LA_VERSION    302
and so on.

-- 
WBR,
xrgtn


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to