X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=mymail.c;h=3c810a117ab4ddf63b20deb4e136a63548f083b3;hb=7edf0cc9d64e71d1ca91dd34dbe03c12380c9466;hp=20d041910e6bfd98fbd7cf909cde7c3c86238c9d;hpb=1d852dd39736a83b168bbd1f4b0070f40b34be49;p=mymail.git diff --git a/mymail.c b/mymail.c index 20d0419..3c810a1 100644 --- a/mymail.c +++ b/mymail.c @@ -55,17 +55,11 @@ 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] == '!') { @@ -717,6 +712,12 @@ void init_condition(struct search_condition *condition, char *string) { 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 || @@ -785,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", @@ -815,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; @@ -834,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;