#include <getopt.h>
#include <limits.h>
-#define VERSION "1.1.2"
+#define VERSION "1.1.3"
#define BUFFER_SIZE 4096
int case_sensitive = 0;
char *title = 0;
int error_flash = 0;
+int exclamation_negates = 0;
int attr_modeline, attr_focus_line, attr_error;
fprintf(out, " start in regexp mode\n");
fprintf(out, " -a, --case-sensitive\n");
fprintf(out, " start in case sensitive mode\n");
+ fprintf(out, " -n, --exclamation-negates\n");
+ fprintf(out, " exclamation points in substring requires the string to be absent\n");
fprintf(out, " -m, --monochrome\n");
fprintf(out, " monochrome mode\n");
fprintf(out, " -q, --no-beep\n");
int n;
if(matcher->nb_patterns >= 0) {
if(matcher->case_sensitive) {
- for(n = 0; n < matcher->nb_patterns; n++) {
- if(strstr(string, matcher->patterns[n]) == 0) return 0;
+ if(exclamation_negates) {
+ for(n = 0; n < matcher->nb_patterns; n++) {
+ if(matcher->patterns[n][0] == '!') {
+ if(strstr(string, matcher->patterns[n] + 1) != 0) return 0;
+ } else {
+ if(strstr(string, matcher->patterns[n]) == 0) return 0;
+ }
+ }
+ } else {
+ for(n = 0; n < matcher->nb_patterns; n++) {
+ if(strstr(string, matcher->patterns[n]) == 0) return 0;
+ }
}
} else {
- for(n = 0; n < matcher->nb_patterns; n++) {
- if(strcasestr(string, matcher->patterns[n]) == 0) return 0;
+ if(exclamation_negates) {
+ for(n = 0; n < matcher->nb_patterns; n++) {
+ if(matcher->patterns[n][0] == '!') {
+ if(strcasestr(string, matcher->patterns[n] + 1) != 0) return 0;
+ } else {
+ if(strcasestr(string, matcher->patterns[n]) == 0) return 0;
+ }
+ }
+ } else {
+ for(n = 0; n < matcher->nb_patterns; n++) {
+ if(strcasestr(string, matcher->patterns[n]) == 0) return 0;
+ }
}
}
return 1;
strcpy(output_filename, "");
while (!rest_are_files &&
- (c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeat:l:c:-h",
+ (c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeant:l:c:-h",
long_options, NULL)) != -1) {
switch(c) {
case_sensitive = 1;
break;
+ case 'n':
+ exclamation_negates = 1;
+ break;
+
case 't':
free(title);
title = safe_malloc((strlen(optarg) + 1) * sizeof(char));