Патч лимитирующий размер письма для popsneaker (patch pop3 limit)
Ключевые слова: patch, pop3, limit, (найти похожие документы)
Date: Fri, 26 Dec 2003 05:46:23 +0500
From: Serge <[email protected]>
Newsgroups: ftn.ru.linux
Subject: Патч лимитирующий размер письма для popsneaker
S>> Hужно дропать (уведомления - мне) письма от 135000 до 165000 байт.
S>> Остальное - оставлять.
MK> Уведомления - должно получиться, от ... до ... - не должно, кажется.
Замечательно получается :)
##-------- popsneaker-0.6.2_ext_maxsize.patch --------##
diff -ruN popsneaker-0.6.2/popsneaker/parser.cpp
popsneaker-0.6.2_ext_maxsize/popsneaker/parser.cpp
- --- popsneaker-0.6.2/popsneaker/parser.cpp 2002-10-22 23:37:36 +0700
+++ popsneaker-0.6.2_ext_maxsize/popsneaker/parser.cpp 2003-12-25
09:21:47 +0000
@@ -331,6 +331,7 @@
void Parser::maxsize(void){
Rule* rule = new Rule;
+ unsigned long size0;
chkptr(rule);
scanner.nextToken();
@@ -340,14 +341,20 @@
}
if(scanner.getToken() == t_numeric) {
- rule->set_maxsize(scanner.getNumeric());
+ size0 = scanner.getNumeric();
+ scanner.nextToken();
+ if(scanner.getToken() == t_numeric) {
+ rule->set_maxsize(size0, scanner.getNumeric());
+ scanner.nextToken();
+ } else {
+ rule->set_maxsize(size0, (unsigned long)-1);
+ }
} else {
parse_error("size expected");
}
rp.add(rule);
- scanner.nextToken();
eoc();
}
diff -ruN popsneaker-0.6.2/popsneaker/rule.cpp
popsneaker-0.6.2_ext_maxsize/popsneaker/rule.cpp
- --- popsneaker-0.6.2/popsneaker/rule.cpp 2002-10-22 23:38:31 +0700
+++ popsneaker-0.6.2_ext_maxsize/popsneaker/rule.cpp 2003-12-25 09:05:03
+0000
@@ -40,9 +40,10 @@
/** Setup a maxsize rule */
-void Rule::set_maxsize(unsigned long size){
+void Rule::set_maxsize(unsigned long size0, unsigned long size1){
type = RT_MAXSIZE;
- maxsize = size;
+ maxsize[0] = size0;
+ maxsize[1] = size1;
}
@@ -233,10 +234,10 @@
/** Apply the maxsize rule on a mailheader */
mailaction Rule::applyMaxsize(MailHeader* header){
- if(header->size > maxsize) {
+ if(header->size > maxsize[0] && header->size <= maxsize[1]) {
char buffer[64];
- sprintf(buffer, "mail (%10.2fKB) is bigger than %10.2fKB", \
- header->size / 1024.0, maxsize / 1024.0);
+ sprintf(buffer, "mail (%10.2fKB) is bigger than %10.2fKB and less
than %10.2fKB", \
+ header->size / 1024.0, maxsize[0] / 1024.0, maxsize[1] / 1024.0);
header->reason = buffer;
return (silent) ? MA_SDELETE : MA_DELETE;
} else {
diff -ruN popsneaker-0.6.2/popsneaker/rule.h
popsneaker-0.6.2_ext_maxsize/popsneaker/rule.h
- --- popsneaker-0.6.2/popsneaker/rule.h 2002-10-22 23:37:36 +0700
+++ popsneaker-0.6.2_ext_maxsize/popsneaker/rule.h 2003-12-25 09:48:47 +0000
@@ -40,7 +40,7 @@
~Rule();
/** Setup a maxsize rule */
- void set_maxsize(unsigned long);
+ void set_maxsize(unsigned long, unsigned long);
/** Setup an accept rule */
void set_accept(const char*);
@@ -111,7 +111,7 @@
int options; // Options for the regular expression.
private:
bool silent; // Delete mail in silence.
- unsigned long maxsize; // A maximum size for the mail.
+ unsigned long maxsize[2]; // A maximum size for the mail.
mailaction score_action; // Action when score evaluation succeeds.
public:
long score_value; // The value for a score rule.
##-------- popsneaker-0.6.2_ext_maxsize.patch --------##
теперь можно указывать необязательный второй агрумент maxsize, задающий
верхнюю границу размера (если не указывать, считается 2^32-1)