- return
- (condition->field_id == mbox_id ||
- (condition->field_id == ID_PARTICIPANT && (mbox_id == ID_FROM || mbox_id == ID_TO)) ||
- (condition->field_id == ID_FROM && mbox_id == ID_FIRST_LINE))
- &&
- regexec(&condition->regexp, mbox_value, 0, 0, 0) == 0;
+
+ if(condition->field_id == ID_INTERVAL) {
+ if(mbox_id == ID_LEADING_LINE) {
+ char *c;
+ time_t t;
+ struct tm tm;
+
+ c = mbox_value;
+ while(*c && *c != ' ') c++; while(*c && *c == ' ') c++;
+ strptime(c, "%a %b %e %k:%M:%S %Y", &tm);
+ t = mktime(&tm);
+
+ return (t >= condition->interval_start &&
+ (condition->interval_stop == 0 ||
+ t <= condition->interval_stop));
+ } else {
+ return 0;
+ }
+ } else {
+ return
+ (
+
+ (condition->field_id == mbox_id)
+
+ ||
+
+ (condition->field_id == ID_PARTICIPANT && (mbox_id == ID_LEADING_LINE ||
+ mbox_id == ID_FROM ||
+ mbox_id == ID_TO))
+ ||
+
+ (condition->field_id == ID_FROM && mbox_id == ID_LEADING_LINE)
+
+ )
+ &&
+ regexec(&condition->regexp, mbox_value, 0, 0, 0) == 0;
+ }