diff --git a/include/usage.h b/include/usage.h index ac6376afd..24008deeb 100644 --- a/include/usage.h +++ b/include/usage.h @@ -2078,7 +2078,7 @@ "5\n" #define less_trivial_usage \ - "[-EMNmh~?] [FILE...]" + "[-EMNmh~I?] [FILE...]" #define less_full_usage "\n\n" \ "View a file or list of files. The position within files can be\n" \ "changed, and files can be manipulated in various ways.\n" \ @@ -2087,6 +2087,7 @@ "\n -M,-m Display a status line containing the line numbers" \ "\n and percentage through the file" \ "\n -N Prefix line numbers to each line" \ + "\n -I Ignore case in all searches" \ "\n -~ Suppress ~s displayed past the end of the file" \ #define linux32_trivial_usage NOUSAGE_STR diff --git a/miscutils/less.c b/miscutils/less.c index 530a40a8c..cd47590ee 100644 --- a/miscutils/less.c +++ b/miscutils/less.c @@ -79,6 +79,7 @@ enum { FLAG_m = 1 << 2, FLAG_N = 1 << 3, FLAG_TILDE = 1 << 4, + FLAG_I = 1 << 5, /* hijack command line options variable for internal state vars */ LESS_STATE_MATCH_BACKWARDS = 1 << 15, }; @@ -965,7 +966,8 @@ static void regex_process(void) } /* Compile the regex and check for errors */ - err = regcomp_or_errmsg(&pattern, uncomp_regex, 0); + err = regcomp_or_errmsg(&pattern, uncomp_regex, + option_mask32 & FLAG_I ? REG_ICASE : 0); free(uncomp_regex); if (err) { print_statusline(err); @@ -1359,7 +1361,7 @@ int less_main(int argc, char **argv) /* TODO: -x: do not interpret backspace, -xx: tab also */ /* -xxx: newline also */ /* -w N: assume width N (-xxx -w 32: hex viewer of sorts) */ - getopt32(argv, "EMmN~"); + getopt32(argv, "EMmN~I"); argc -= optind; argv += optind; num_files = argc;