Added the --use-leading-time option.
authorFrancois Fleuret <francois@fleuret.org>
Fri, 22 Mar 2013 07:15:02 +0000 (08:15 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Fri, 22 Mar 2013 07:15:02 +0000 (08:15 +0100)
mymail.1
mymail.c

index 57a7bda..596a6e0 100644 (file)
--- a/mymail.1
+++ b/mymail.1
@@ -31,6 +31,10 @@ print the version number
 \fB-q\fR, \fB--quiet\fR
 do not write information during the search
 .TP
+\fB-t\fR, \fB--use-leading-time\fR
+use the time stamp from the leading line of each mail and not the
+Date: field
+.TP
 \fB-p <db filename pattern>\fR, \fB--db-pattern <db filename pattern>\fR
 set the db filename pattern for recursive search
 .TP
index 87c23a3..e078bf6 100644 (file)
--- a/mymail.c
+++ b/mymail.c
@@ -58,6 +58,7 @@
 /* Global variables! */
 
 int global_quiet;
+int global_use_leading_time;
 
 regex_t global_leading_from_line_regexp;
 
@@ -210,6 +211,9 @@ void print_usage(FILE *out) {
   fprintf(out, "         print the version number\n");
   fprintf(out, " -q, --quiet\n");
   fprintf(out, "         do not print information during search\n");
+  fprintf(out, " -t, --use-leading-time\n");
+  fprintf(out, "         use the time stamp from the leading line of each mail and not the Date:\n");
+  fprintf(out, "         field\n");
   fprintf(out, " -p <db filename pattern>, --db-pattern <db filename pattern>\n");
   fprintf(out, "         set the db filename pattern for recursive search\n");
   fprintf(out, " -r <db root path>, --db-root <db root path>\n");
@@ -249,21 +253,31 @@ int mbox_line_match_search(struct search_condition *condition,
                            int mbox_id, const char *mbox_value) {
 
   if(condition->field_id == ID_INTERVAL) {
-    if(mbox_id == ID_LEADING_LINE) {
-      const 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));
+    const char *c;
+    time_t t;
+    struct tm tm;
+    if(global_use_leading_time) {
+      if(mbox_id == ID_LEADING_LINE) {
+        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 0;
+      if(mbox_id == ID_DATE) {
+        strptime(mbox_value, "%a, %d %b %Y %k:%M:%S", &tm);
+        t = mktime(&tm);
+        return (t >= condition->interval_start &&
+                (condition->interval_stop == 0 ||
+                 t <= condition->interval_stop));
+      } else {
+        return 0;
+      }
     }
   } else {
     return
@@ -683,6 +697,7 @@ static struct option long_options[] = {
   { "help", no_argument, 0, 'h' },
   { "version", no_argument, 0, 'v' },
   { "quiet", no_argument, 0, 'q' },
+  { "use-leading-time", no_argument, 0, 't' },
   { "db-file-generate", 1, 0, 'd' },
   { "db-pattern", 1, 0, 'p' },
   { "db-root", 1, 0, 'r' },
@@ -854,6 +869,7 @@ int main(int argc, char **argv) {
   }
 
   global_quiet = 0;
+  global_use_leading_time = 0;
   default_search_field = 0;
   strncpy(output_filename, "", PATH_MAX);
 
@@ -878,6 +894,10 @@ int main(int argc, char **argv) {
       global_quiet = 1;
       break;
 
+    case 't':
+      global_use_leading_time = 1;
+      break;
+
     case 'i':
       action_index = 1;
       break;