From cf24e85e7e8dad2d7e002982bca9124e0ae9832f Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Fri, 22 Mar 2013 08:15:02 +0100 Subject: [PATCH] Added the --use-leading-time option. --- mymail.1 | 4 ++++ mymail.c | 48 ++++++++++++++++++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/mymail.1 b/mymail.1 index 57a7bda..596a6e0 100644 --- 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 \fR, \fB--db-pattern \fR set the db filename pattern for recursive search .TP diff --git a/mymail.c b/mymail.c index 87c23a3..e078bf6 100644 --- 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-pattern \n"); fprintf(out, " set the db filename pattern for recursive search\n"); fprintf(out, " -r , --db-root \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; -- 2.20.1