Added default_search_field, set to "participant".
[mymail.git] / mymail.c
index 2519a7a..3c810a1 100644 (file)
--- a/mymail.c
+++ b/mymail.c
 
 regex_t leading_from_line_regexp;
 
-char *db_filename;
-char *db_filename_regexp_string;
-char *db_root_path;
-char *db_filename_list;
-char output_filename[PATH_MAX + 1];
+/* Global variables! */
 
 int paranoid;
-int action_index;
 int quiet;
-
-time_t being_today;
+char *default_search_field = "p";
 
 /********************************************************************/
 
@@ -695,11 +689,12 @@ static struct option long_options[] = {
 
 /*********************************************************************/
 
-void init_condition(struct search_condition *condition, char *string) {
+void init_condition(struct search_condition *condition, char *full_string) {
   char full_search_field[TOKEN_BUFFER_SIZE], *search_field;
   int m;
+  char *string;
 
-  string = parse_token(full_search_field, TOKEN_BUFFER_SIZE, ' ', string);
+  string = parse_token(full_search_field, TOKEN_BUFFER_SIZE, ' ', full_string);
   search_field = full_search_field;
 
   if(search_field[0] == '!') {
@@ -709,12 +704,22 @@ void init_condition(struct search_condition *condition, char *string) {
     condition->negation = 0;
   }
 
-  if(strcmp(search_field, "6h") == 0) {
+  /* Last 8 hours */
+
+  if(strcmp(search_field, "8h") == 0) {
     condition->field_id = ID_INTERVAL;
-    condition->interval_start = time(0) - 3600 * 6;
+    condition->interval_start = time(0) - 3600 * 8;
     condition->interval_stop = 0;
   }
 
+  else if(strcmp(search_field, "week") == 0) {
+    condition->field_id = ID_INTERVAL;
+    condition->interval_start = time(0) - 3600 * 24 * 7;
+    condition->interval_stop = 0;
+  }
+
+  /* Today and yesterday */
+
   else if(strcmp(search_field, "24h") == 0 ||
           strcmp(search_field, "today") == 0) {
     condition->field_id = ID_INTERVAL;
@@ -722,6 +727,14 @@ void init_condition(struct search_condition *condition, char *string) {
     condition->interval_stop = 0;
   }
 
+  else if(strcmp(search_field, "yesterday") == 0) {
+    condition->field_id = ID_INTERVAL;
+    condition->interval_start = time(0) - 2 * 3600 * 24;
+    condition->interval_stop = condition->interval_start + 3600 * 24;
+  }
+
+  /* Week days */
+
   else if(strcmp(search_field, "monday") == 0) {
     condition->field_id = ID_INTERVAL;
     condition->interval_start = time_for_past_day(1);
@@ -764,12 +777,6 @@ void init_condition(struct search_condition *condition, char *string) {
     condition->interval_stop = condition->interval_start + 3600 * 24;
   }
 
-  else if(strcmp(search_field, "yesterday") == 0) {
-    condition->field_id = ID_INTERVAL;
-    condition->interval_start = time(0) - 2 * 3600 * 24;
-    condition->interval_stop = condition->interval_start + 3600 * 24;
-  }
-
   else {
     condition->field_id = -1;
 
@@ -779,6 +786,18 @@ void init_condition(struct search_condition *condition, char *string) {
       }
     }
 
+    if(condition->field_id == -1) {
+      if(default_search_field) {
+        for(m = 0; (m < MAX_ID) && condition->field_id == -1; m++) {
+          if(strncmp(field_names[m],
+                     default_search_field, strlen(default_search_field)) == 0) {
+            condition->field_id = m;
+          }
+        }
+        string = full_string;
+      }
+    }
+
     if(condition->field_id == -1) {
       fprintf(stderr,
               "mymail: Syntax error in field name \"%s\".\n",
@@ -809,6 +828,13 @@ void free_condition(struct search_condition *condition) {
 /*********************************************************************/
 
 int main(int argc, char **argv) {
+  char *db_filename;
+  char *db_filename_regexp_string;
+  char *db_root_path;
+  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;
@@ -828,6 +854,7 @@ int main(int argc, char **argv) {
   paranoid = 0;
   action_index = 0;
   db_filename = 0;
+  db_filename_regexp_string = 0;
   db_root_path = 0;
   db_filename_list = 0;
   quiet = 0;