--- src/cmd.c.orig Sat Jun 24 19:44:21 2006 +++ src/cmd.c Sat Jun 24 19:45:46 2006 @@ -510,7 +510,7 @@ continue; } c = regexp_match (reg_exp_t, current_panel->dir.list[i].fname, - match_file); + match_file, 0); if (c == -1) { message (1, MSG_ERROR, _(" Malformed regular expression ")); g_free (reg_exp); --- src/dir.c.orig Sat Jun 24 19:51:05 2006 +++ src/dir.c Sat Jun 24 19:51:31 2006 @@ -405,7 +405,7 @@ *stale_link = 1; } if (!(S_ISDIR (buf1->st_mode) || *link_to_dir) && filter - && !regexp_match (filter, dp->d_name, match_file)) + && !regexp_match (filter, dp->d_name, match_file, 0)) return 0; /* Need to grow the *list? */ --- src/ext.c.orig Sat Jun 24 19:52:00 2006 +++ src/ext.c Sat Jun 24 19:52:21 2006 @@ -394,7 +394,7 @@ } if (content_string[0] - && regexp_match (ptr, content_string + content_shift, match_regex)) { + && regexp_match (ptr, content_string + content_shift, match_regex, 0)) { found = 1; } @@ -534,11 +534,11 @@ /* Do not transform shell patterns, you can use shell/ for * that */ - if (regexp_match (p, filename, match_regex)) + if (regexp_match (p, filename, match_regex, 0)) found = 1; } else if (!strncmp (p, "directory/", 10)) { if (S_ISDIR (mystat.st_mode) - && regexp_match (p + 10, filename, match_regex)) + && regexp_match (p + 10, filename, match_regex, 0)) found = 1; } else if (!strncmp (p, "shell/", 6)) { p += 6; --- src/find.c.orig Sat Jun 24 20:36:41 2006 +++ src/find.c Sat Jun 24 20:37:58 2006 @@ -575,6 +575,7 @@ struct stat tmp_stat; static int pos; static int subdirs_left = 0; + int cflags = 0; if (!h) { /* someone forces me to close dirp */ if (dirp) { @@ -586,6 +587,9 @@ dp = 0; return 1; } + + if (case_sensitive == 0) + cflags |= REG_ICASE; do_search_begin: while (!dp){ @@ -662,7 +666,7 @@ g_free (tmp_name); } - if (regexp_match (find_pattern, dp->d_name, match_file)){ + if (regexp_match (find_pattern, dp->d_name, match_file, cflags)){ if (content_pattern) { if (search_content (h, directory, dp->d_name)) { return 1; --- src/user.c.orig Sat Jun 24 19:54:48 2006 +++ src/user.c Sat Jun 24 19:55:10 2006 @@ -412,18 +412,18 @@ break; case 'f': /* file name pattern */ p = extract_arg (p, arg, sizeof (arg)); - *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file); + *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file, 0); break; case 'y': /* syntax pattern */ if (edit_widget && edit_widget->syntax_type) { p = extract_arg (p, arg, sizeof (arg)); *condition = panel && - regexp_match (arg, edit_widget->syntax_type, match_normal); + regexp_match (arg, edit_widget->syntax_type, match_normal, 0); } break; case 'd': p = extract_arg (p, arg, sizeof (arg)); - *condition = panel && regexp_match (arg, panel->cwd, match_file); + *condition = panel && regexp_match (arg, panel->cwd, match_file, 0); break; case 't': p = extract_arg (p, arg, sizeof (arg)); --- src/util.c.orig Sat Jun 24 19:55:21 2006 +++ src/util.c Sat Jun 24 19:57:49 2006 @@ -563,25 +563,28 @@ return g_strdup (pattern); } -int regexp_match (const char *pattern, const char *string, int match_type) +int regexp_match (const char *pattern, const char *string, int match_type, int cflags) { static regex_t r; static char *old_pattern = NULL; static int old_type; + static int old_cflags; int rval; char *my_pattern; - if (!old_pattern || STRCOMP (old_pattern, pattern) || old_type != match_type){ + if (!old_pattern || STRCOMP (old_pattern, pattern) || + old_type != match_type || cflags != old_cflags){ if (old_pattern){ regfree (&r); g_free (old_pattern); old_pattern = NULL; } my_pattern = convert_pattern (pattern, match_type, 0); - if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS)) { + if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS|cflags)) { g_free (my_pattern); return -1; } + old_cflags = cflags; old_pattern = my_pattern; old_type = match_type; } --- src/util.h.orig Sat Jun 24 19:57:50 2006 +++ src/util.h Sat Jun 24 19:58:03 2006 @@ -116,7 +116,7 @@ extern int easy_patterns; char *convert_pattern (const char *pattern, int match_type, int do_group); -int regexp_match (const char *pattern, const char *string, int match_type); +int regexp_match (const char *pattern, const char *string, int match_type, int cflags); /* Error pipes */ void open_error_pipe (void);