- for(n = 0; n < nb_search_patterns; n++) {
- search_regexp_strings[n] = segment_next_field(search_pattern[n]);
- search_ids[n] = -1;
- for(m = 0; (m < MAX_ID) && search_ids[n] == -1; m++) {
- if(strncmp(field_names[m], search_pattern[n], strlen(search_pattern[n])) == 0) {
- search_ids[n] = m;
+ for(n = 0; n < nb_search_conditions; n++) {
+ search_field = search_condition_strings[n];
+
+ if(search_field[0] == '!') {
+ search_field++;
+ search_conditions[n].negation = 1;
+ } else {
+ search_conditions[n].negation = 0;
+ }
+
+ if(strcmp(search_field, "6h") == 0) {
+ search_conditions[n].field_id = ID_INTERVAL;
+ search_conditions[n].interval_start = time(0) - 3600 * 6;
+ search_conditions[n].interval_stop = 0;
+ }
+
+ else if(strcmp(search_field, "24h") == 0 ||
+ strcmp(search_field, "today") == 0) {
+ search_conditions[n].field_id = ID_INTERVAL;
+ search_conditions[n].interval_start = time(0) - 3600 * 24;
+ search_conditions[n].interval_stop = 0;
+ }
+
+ else if(strcmp(search_field, "yesterday") == 0) {
+ search_conditions[n].field_id = ID_INTERVAL;
+ search_conditions[n].interval_start = time(0) - 2 * 3600 * 24;
+ search_conditions[n].interval_stop = time(0) - 3600 * 24;
+ }
+
+ else {
+ search_regexp_string = segment_next_field(search_condition_strings[n]);
+
+ search_conditions[n].field_id = -1;
+
+ for(m = 0; (m < MAX_ID) && search_conditions[n].field_id == -1; m++) {
+ if(strncmp(field_names[m], search_field, strlen(search_field)) == 0) {
+ search_conditions[n].field_id = m;
+ }
+ }
+
+ if(search_conditions[n].field_id == -1) {
+ fprintf(stderr,
+ "mymail: Syntax error in field name \"%s\".\n",
+ search_field);
+ exit(EXIT_FAILURE);
+ }
+
+ if(regcomp(&search_conditions[n].regexp,
+ search_regexp_string,
+ REG_ICASE)) {
+ fprintf(stderr,
+ "mymail: Syntax error in regexp \"%s\" for field \"%s\".\n",
+ search_regexp_string,
+ field_names[search_conditions[n].field_id]);
+ exit(EXIT_FAILURE);