Added the --default-search option.
authorFrancois Fleuret <francois@fleuret.org>
Wed, 6 Feb 2013 18:15:01 +0000 (19:15 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Wed, 6 Feb 2013 18:15:01 +0000 (19:15 +0100)
mymail-vm.el
mymail.1
mymail.c

index f424c85..db10a86 100644 (file)
       (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"))
   ))
index 62d6def..2cc4d0e 100644 (file)
--- a/mymail.1
+++ b/mymail.1
@@ -53,6 +53,10 @@ directories following the options on the command lines
 .TP
 \fB-o <output filename>\fR, \fB--output <output filename>\fR
 set the db filename pattern for recursive search
+.TP
+\fB-a <search field>\fR, \fB--default-search <search field>\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
index 3c810a1..5d16bb3 100644 (file)
--- 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 filename>, --output <output filename>\n");
   fprintf(out, "         set the result file, use stdout if unset\n");
+  fprintf(out, " -a <search field>, --default-search <search field>\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;