You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
8.3 KiB
255 lines
8.3 KiB
--- man/procmail.man Tue Sep 11 06:54:43 2001 |
|
+++ man/procmail.man Sun Mar 30 21:13:44 2003 |
|
@@ -166,7 +166,8 @@ |
|
accept an unlimited number of arguments.@ETCRCS_desc@ |
|
For some advanced usage of this option you should look in the |
|
.B EXAMPLES |
|
-section below.@LMTPOPTdesc@.SH ARGUMENTS |
|
+section below.@LMTPOPTdesc@ |
|
+.SH ARGUMENTS |
|
Any arguments containing an '=' are considered to be environment variable |
|
assignments, they will |
|
.I all |
|
@@ -720,6 +721,15 @@ |
|
.na |
|
.nf |
|
@FW_content@ |
|
+.fi |
|
+.ad |
|
+.PP |
|
+Some mailers (notably exim) do not currently accept the above syntax. |
|
+In such case use this instead: |
|
+.PP |
|
+.na |
|
+.nf |
|
+|/usr/bin/procmail |
|
.fi |
|
.ad |
|
.PP |
|
--- man/procmailrc.man Tue Sep 11 06:55:03 2001 |
|
+++ man/procmailrc.man Sun Mar 30 21:13:44 2003 |
|
@@ -779,7 +779,7 @@ |
|
.PP |
|
Some non-optimal and non-obvious regexps set MATCH to an incorrect |
|
value. The regexp can be made to work by removing one or more unneeded |
|
-'*', '+', or '?' operator on the left-hand side of the \e/ token. |
|
+\&'*', '+', or '?' operator on the left-hand side of the \e/ token. |
|
.SH MISCELLANEOUS |
|
If the regular expression contains `\fB@TO_key@\fP' it will be substituted by |
|
.na |
|
--- new/mailstat.1 Thu Jan 1 01:00:00 1970 |
|
+++ new/mailstat.1 Sun Mar 30 21:13:44 2003 |
|
@@ -0,0 +1,40 @@ |
|
+.TH MAILSTAT 1 |
|
+.SH NAME |
|
+mailstat \- shows mail-arrival statistics |
|
+.SH SYNOPSIS |
|
+.B mailstat |
|
+[\-klmots] [logfile] |
|
+.SH DESCRIPTION |
|
+.B mailstat |
|
+parses a procmail-generated $LOGFILE and displays |
|
+a summary about the messages delivered to all folders |
|
+(total size, average size, nr of messages). |
|
+The $LOGFILE is truncated to zero length, unless the |
|
+.B -k |
|
+option is used. |
|
+Exit code 0 if mail arrived, 1 if no mail arrived. |
|
+.SH OPTIONS |
|
+.TP |
|
+.I \-k |
|
+keep logfile intact |
|
+.TP |
|
+.I \-l |
|
+long display format |
|
+.TP |
|
+.I \-m |
|
+merge any errors into one line |
|
+.TP |
|
+.I \-o |
|
+use the old logfile |
|
+.TP |
|
+.I \-t |
|
+terse display format |
|
+.TP |
|
+.I \-s |
|
+silent in case of no mail |
|
+.SH NOTES |
|
+Customise to your heart's content, this program is only provided as a |
|
+guideline. |
|
+.SH AUTHOR |
|
+This manual page was written by Santiago Vila <sanvila@debian.org> |
|
+for the Debian GNU/Linux distribution (but may be used by others). |
|
--- src/comsat.c Tue Sep 11 06:55:46 2001 |
|
+++ src/comsat.c Sun Mar 30 21:13:45 2003 |
|
@@ -92,7 +92,7 @@ |
|
} |
|
if(newvalid) /* so far, so good */ |
|
{ int s; |
|
- if(!*chp) /* no service */ |
|
+ if(!chad||!*chp) /* no service */ |
|
chp=BIFF_serviceport; /* new balls please! */ |
|
s=strtol(chp,&chad,10); |
|
if(chp!=chad) /* the service is not numeric */ |
|
@@ -120,7 +120,7 @@ |
|
{ int s;const char*p; |
|
if(!csvalid||!buf) /* is comat on and set to a valid address? */ |
|
return; |
|
- if(!*cslgname||strlen(cslgname)+2>linebuf) /* is $LOGNAME bogus? */ |
|
+ if(!cslgname||!*cslgname||strlen(cslgname)+2>linebuf)/* is $LOGNAME bogus? */ |
|
return; |
|
if(!(p=folder?folder:cslastf)) /* do we have a folder? */ |
|
return; |
|
--- src/foldinfo.h Tue Dec 5 07:34:25 2000 |
|
+++ src/foldinfo.h Sun Mar 30 21:13:45 2003 |
|
@@ -10,7 +10,7 @@ |
|
|
|
#define ft_lock(type) ((type)>ft_MAILDIR) /* kernel lock fd */ |
|
#define ft_atime(type) ((type)==ft_FILE) /* force atime < mtime */ |
|
-#define ft_dotlock(type) ((type)==ft_FILE) /* dotlock $DEFAULT */ |
|
+#define ft_dotlock(type) ((type)>ft_MAILDIR) /* dotlock $DEFAULT */ |
|
#define ft_delim(type) ((type)==ft_FILE) /* add MMDF delim */ |
|
#define ft_checkcloser(type) ((type)>ft_MH) |
|
#define ft_forceblank(type) ((type)!=ft_MAILDIR) /* force blank line at end */ |
|
--- src/mailfold.c Tue Sep 11 06:58:34 2001 |
|
+++ src/mailfold.c Sun Mar 30 21:13:45 2003 |
|
@@ -378,7 +378,8 @@ |
|
dfilled=mailread=0; |
|
else if(rhead) /* only read in a new header */ |
|
{ memblk new; |
|
- dfilled=mailread=0;makeblock(&new,0);readdyn(&new,&dfilled,0); |
|
+ dfilled=mailread=0;makeblock(&new,0); |
|
+ readdyn(&new,&dfilled,thebody-themail.p); |
|
if(tobesent>dfilled&&isprivate) /* put it in place here */ |
|
{ tmemmove(themail.p+dfilled,thebody,filled-=tobesent); |
|
tmemmove(themail.p,new.p,dfilled); |
|
--- src/manconf.c Tue Sep 11 06:58:34 2001 |
|
+++ src/manconf.c Sun Mar 30 21:13:44 2003 |
|
@@ -139,7 +139,7 @@ |
|
sh before procmail ever sees it; it is however a necessary kludge against\1\ |
|
overoptimising sendmail programs:\1"); |
|
#else |
|
- ps("FW_content","\"|exec @BINDIR@/procmail\""); |
|
+ ps("FW_content","\"|exec @BINDIR@/procmail || exit 75\""); |
|
ps("FW_comment",""); |
|
#endif |
|
#else |
|
@@ -233,7 +233,7 @@ |
|
\2-@PRESERVOPT@\1and\1.BR \2-@FROMWHOPT@ .\1"); |
|
pc("LMTPOPT",LMTPOPT); |
|
#else |
|
- ps("LMTPOPTdesc","");ps("LMTPusage",""); |
|
+ ps("LMTPOPTdesc","");ps("LMTPusage","\1"); |
|
#endif |
|
pname("INIT_UMASK",0);printf("0%lo/g\n",(unsigned long)INIT_UMASK);lines--; |
|
pn("DEFlinebuf",DEFlinebuf); |
|
--- src/memblk.c Fri Jun 29 04:20:56 2001 |
|
+++ src/memblk.c Sun Mar 30 21:13:44 2003 |
|
@@ -51,11 +51,11 @@ |
|
{ |
|
#ifdef USE_MMAP |
|
if(mb->fd>=0) |
|
- { long len=mb->len+1; |
|
- if(munmap(mb->p,len)) |
|
- mmapfailed(len); /* don't want to continue here */ |
|
- if((mb->p=mmap(0,len,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED) |
|
- mmapfailed(len); |
|
+ { long mlen=mb->len+1; |
|
+ if(munmap(mb->p,mlen)) |
|
+ mmapfailed(mlen); /* don't want to continue here */ |
|
+ if((mb->p=mmap(0,mlen,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED) |
|
+ mmapfailed(mlen); |
|
close(mb->fd); |
|
mb->fd=ropen(devnull,O_RDWR,0); /* XXX Perhaps -1 is better? */ |
|
} |
|
@@ -77,8 +77,8 @@ |
|
strcpy(filename,MMAP_DIR); |
|
if(unique(filename,strchr(filename,'\0'),MMAP_FILE_LEN,MMAP_PERM,0,0)&& |
|
(mb->fd=ropen(filename,O_RDWR,MMAP_PERM),unlink(filename),mb->fd>=0)) |
|
- { mb->filelen=len; |
|
- if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) |
|
+ { mb->filelen=len+1; |
|
+ if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) |
|
dropf: { close(mb->fd);mb->fd= -1; |
|
if(verbose)nlog("Unable to extend or use tempfile"); |
|
} |
|
@@ -98,9 +98,9 @@ |
|
} |
|
} |
|
if(mb->fd>=0) |
|
- { if(len>mb->filelen) /* need to extend? */ |
|
- { mb->filelen=len; |
|
- if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) |
|
+ { if(len>=mb->filelen) /* need to extend? */ |
|
+ { mb->filelen=len+1; |
|
+ if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) |
|
{ char*p=malloc(len+1); /* can't extend, switch to malloc */ |
|
tmemmove(p,mb->p,mb->len); |
|
munmap(mb->p,mb->len+1); |
|
@@ -124,9 +124,9 @@ |
|
} |
|
else |
|
mb->p=realloc(mb->p,len+1); |
|
- mb->len=len+1; |
|
- mb->p[len]='\0'; |
|
+ mb->len=len; |
|
ret1: |
|
+ mb->p[len]='\0'; |
|
return 1; |
|
} |
|
|
|
--- src/memblk.h Sat Jun 30 06:12:18 2001 |
|
+++ src/memblk.h Sun Mar 30 21:13:44 2003 |
|
@@ -1,6 +1,6 @@ |
|
typedef struct memblk { |
|
char*p; /* where it starts */ |
|
- long len; /* currently allocated size */ |
|
+ long len; /* current size, not including trailing NUL */ |
|
#ifdef USE_MMAP |
|
off_t filelen; /* how long is the file */ |
|
int fd; /* file which is mmap()ed */ |
|
--- src/pipes.c Tue Sep 11 06:58:44 2001 |
|
+++ src/pipes.c Sun Mar 30 21:13:45 2003 |
|
@@ -145,7 +145,9 @@ |
|
if(Stdout) |
|
{ *(eq=strchr(Stdout,'\0')-1)='\0'; /* chop the '=' */ |
|
if(!(backblock=getenv(Stdout))) /* no current value? */ |
|
- PRDB=PWRB= -1; |
|
+ { PRDB=PWRB= -1; |
|
+ backlen=0; |
|
+ } |
|
else |
|
{ backlen=strlen(backblock); |
|
goto pip; |
|
@@ -155,9 +157,7 @@ |
|
pip: rpipe(pbackfd); |
|
rpipe(pinfd); /* main pipes setup */ |
|
if(!(pidchild=sfork())) /* create a sending procmail */ |
|
- { if(Stdout&&backblock) |
|
- backlen=strlen(backblock); |
|
- else |
|
+ { if(!Stdout) |
|
backblock=source,backlen=len; |
|
childsetup();rclose(PRDI);rclose(PRDB); |
|
rpipe(poutfd);rclose(STDOUT); |
|
@@ -194,7 +194,7 @@ |
|
makeblock(&temp,Stdfilled); |
|
tmemmove(temp.p,Stdout,Stdfilled); |
|
readdyn(&temp,&Stdfilled,Stdfilled+backlen+1); |
|
- Stdout=realloc(Stdout,&Stdfilled+1); |
|
+ Stdout=realloc(Stdout,Stdfilled+1); |
|
tmemmove(Stdout,temp.p,Stdfilled+1); |
|
freeblock(&temp); |
|
retStdout(Stdout,pwait&&pipw,!backblock); |
|
--- src/procmail.c Tue Sep 11 06:59:14 2001 |
|
+++ src/procmail.c Sun Mar 30 21:13:45 2003 |
|
@@ -652,8 +652,7 @@ |
|
nrcond= -1; |
|
if(tolock) /* clear temporary buffer for lockfile name */ |
|
free(tolock); |
|
- for(i=maxindex(flags);i;i--) /* clear the flags */ |
|
- flags[i]=0; |
|
+ bbzero(flags,sizeof(flags)); /* clear the flags */ |
|
for(tolock=0,locknext=0;;) |
|
{ chp=skpspace(chp); |
|
switch(i= *chp++)
|
|
|