From 3702c6913e188ff3a7f7904a882c2737d3651ff6 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Sat, 2 Feb 2013 00:23:16 +0100 Subject: [PATCH] Now handle negative search constraints with a leading '!'. --- mymail.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mymail.c b/mymail.c index 35a0344..b114e8b 100644 --- a/mymail.c +++ b/mymail.c @@ -181,7 +181,9 @@ void search_in_db(int nb_search_patterns, char *position_in_file_string; char *mail_filename; - for(n = 0; n < nb_search_patterns && hits[n]; n++); + for(n = 0; n < nb_search_patterns && + ((hits[n] && !search_requests[n].negation) || + (!hits[n] && search_requests[n].negation)); n++); if(n == nb_search_patterns) { FILE *mail_file; @@ -617,6 +619,13 @@ int main(int argc, char **argv) { for(n = 0; n < nb_search_patterns; n++) { search_regexp_string = segment_next_field(search_pattern[n]); + if(search_pattern[n][0] == '!') { + search_pattern[n]++; + search_requests[n].negation = 1; + } else { + search_requests[n].negation = 0; + } + search_requests[n].field_id = -1; for(m = 0; (m < MAX_ID) && search_requests[n].field_id == -1; m++) { if(strncmp(field_names[m], search_pattern[n], strlen(search_pattern[n])) == 0) { -- 2.20.1