From ed9a958f95d7436aa585bc57a5e4761e8120be02 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Wed, 6 Feb 2013 19:15:01 +0100 Subject: [PATCH] Added the --default-search option. --- mymail-vm.el | 6 ++++-- mymail.1 | 8 +++++--- mymail.c | 26 +++++++++++++++++++++----- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/mymail-vm.el b/mymail-vm.el index f424c85..db10a86 100644 --- a/mymail-vm.el +++ b/mymail-vm.el @@ -45,9 +45,11 @@ (setq n (+ n 1))) (if (= (apply 'call-process - (nconc (list "mymail" nil nil nil "--output" mbox-name) + (nconc (list "mymail" nil nil nil + "--output" mbox-name + "--default-search" "p") search-args)) - 0) + 0) (vm-visit-folder mbox-name t) (message "mymail failed")) )) diff --git a/mymail.1 b/mymail.1 index 62d6def..2cc4d0e 100644 --- a/mymail.1 +++ b/mymail.1 @@ -53,6 +53,10 @@ directories following the options on the command lines .TP \fB-o \fR, \fB--output \fR set the db filename pattern for recursive search +.TP +\fB-a \fR, \fB--default-search \fR +set the default search field: If a search request is not understood, +it is interpreted as the regexp with this default search field .SH "ENVIRONMENT VARIABLES" @@ -97,9 +101,7 @@ entirely. .TP \fB8h\fR selects mails received during the last 8 hours. .TP -\fBtoday\fR, \fB24h\fR selects mails received during the last 24 hours. -.TP -\fBweek\fR selects mails received during the last 7*24 hours. +\fBtoday\fR, \fB24h\fR, \fBweek\fR, and \fBmonth\fR selects mails received during the last 24, 7 * 24 hours or 31 * 24 hours. .TP \fByesterday\fR selects mails received between 48h and 24h ago. .TP diff --git a/mymail.c b/mymail.c index 3c810a1..5d16bb3 100644 --- a/mymail.c +++ b/mymail.c @@ -59,7 +59,7 @@ regex_t leading_from_line_regexp; int paranoid; int quiet; -char *default_search_field = "p"; +char *default_search_field; /********************************************************************/ @@ -207,6 +207,8 @@ void print_usage(FILE *out) { fprintf(out, " index mails\n"); fprintf(out, " -o , --output \n"); fprintf(out, " set the result file, use stdout if unset\n"); + fprintf(out, " -a , --default-search \n"); + fprintf(out, " set the default search field\n"); } /*********************************************************************/ @@ -684,6 +686,7 @@ static struct option long_options[] = { { "search", 1, 0, 's' }, { "index", 0, 0, 'i' }, { "output", 1, 0, 'o' }, + { "default-search", 1, 0, 'a' }, { 0, 0, 0, 0 } }; @@ -704,7 +707,7 @@ void init_condition(struct search_condition *condition, char *full_string) { condition->negation = 0; } - /* Last 8 hours */ + /* Recently */ if(strcmp(search_field, "8h") == 0) { condition->field_id = ID_INTERVAL; @@ -718,7 +721,11 @@ void init_condition(struct search_condition *condition, char *full_string) { condition->interval_stop = 0; } - /* Today and yesterday */ + else if(strcmp(search_field, "month") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time(0) - 3600 * 24 * 31; + condition->interval_stop = 0; + } else if(strcmp(search_field, "24h") == 0 || strcmp(search_field, "today") == 0) { @@ -727,6 +734,8 @@ void init_condition(struct search_condition *condition, char *full_string) { condition->interval_stop = 0; } + /* Yesterday */ + else if(strcmp(search_field, "yesterday") == 0) { condition->field_id = ID_INTERVAL; condition->interval_start = time(0) - 2 * 3600 * 24; @@ -778,6 +787,9 @@ void init_condition(struct search_condition *condition, char *full_string) { } else { + + /* header-related conditions */ + condition->field_id = -1; for(m = 0; (m < MAX_ID) && condition->field_id == -1; m++) { @@ -834,7 +846,6 @@ int main(int argc, char **argv) { char *db_filename_list; char output_filename[PATH_MAX + 1]; int action_index; - int error = 0, show_help = 0; const int nb_fields_to_parse = sizeof(fields_to_parse) / sizeof(struct parsable_field); char c; @@ -858,12 +869,13 @@ int main(int argc, char **argv) { db_root_path = 0; db_filename_list = 0; quiet = 0; + default_search_field = 0; setlocale(LC_ALL, ""); nb_search_conditions = 0; - while ((c = getopt_long(argc, argv, "hvqip:s:d:r:l:o:", + while ((c = getopt_long(argc, argv, "hvqip:s:d:r:l:o:a:", long_options, NULL)) != -1) { switch(c) { @@ -913,6 +925,10 @@ int main(int argc, char **argv) { nb_search_conditions++; break; + case 'a': + default_search_field = optarg; + break; + default: error = 1; break; -- 2.20.1