ports/99428: [PATCH] Case insensetive search in mc doesn't work
Stanislav Sedov
ssedov at mbsd.msk.ru
Sat Jun 24 16:50:13 UTC 2006
>Number: 99428
>Category: ports
>Synopsis: [PATCH] Case insensetive search in mc doesn't work
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Jun 24 16:50:12 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Stanislav Sedov
>Release: FreeBSD 7.0-CURRENT i386
>Organization:
MBSD labs, Inc.
>Environment:
System: FreeBSD fonon.realnet 7.0-CURRENT FreeBSD 7.0-CURRENT #7: Sun Jun 18 20:51:36 MSD 2006 root at fonon.realnet:/work/src/fbsd-cur/src/sys/i386/compile/FONON i386
>Description:
Midnight commander ignores case sensetivity flag when
performing search, thus case insensetive search doesn't
work. This patch fixes this.
The following files were added:
files/patch-src-cmd.c
files/patch-src-dir.c
files/patch-src-ext.c
files/patch-src-find.c
files/patch-src-user.c
files/patch-src-util.c
files/patch-src-util.h
Maintainier was CC'ed.
>How-To-Repeat:
>Fix:
--- mc.diff begins here ---
diff -ruN mc.orig/files/patch-src-cmd.c mc/files/patch-src-cmd.c
--- mc.orig/files/patch-src-cmd.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-cmd.c Sat Jun 24 20:07:24 2006
@@ -0,0 +1,11 @@
+--- 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);
diff -ruN mc.orig/files/patch-src-dir.c mc/files/patch-src-dir.c
--- mc.orig/files/patch-src-dir.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-dir.c Sat Jun 24 20:04:53 2006
@@ -0,0 +1,11 @@
+--- 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? */
diff -ruN mc.orig/files/patch-src-ext.c mc/files/patch-src-ext.c
--- mc.orig/files/patch-src-ext.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-ext.c Sat Jun 24 20:04:53 2006
@@ -0,0 +1,25 @@
+--- 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;
diff -ruN mc.orig/files/patch-src-find.c mc/files/patch-src-find.c
--- mc.orig/files/patch-src-find.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-find.c Sat Jun 24 20:38:07 2006
@@ -0,0 +1,29 @@
+--- 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;
diff -ruN mc.orig/files/patch-src-subshell.c mc/files/patch-src-subshell.c
--- mc.orig/files/patch-src-subshell.c Sat Jun 24 19:25:35 2006
+++ mc/files/patch-src-subshell.c Thu Jan 1 03:00:00 1970
@@ -1,11 +0,0 @@
---- src/subshell.c.orig Wed Jun 14 15:45:12 2006
-+++ src/subshell.c Wed Jun 14 15:45:39 2006
-@@ -395,6 +395,8 @@
- subshell_type = ZSH;
- else if (strstr (shell, "/tcsh"))
- subshell_type = TCSH;
-+ else if (strstr (shell, "/csh"))
-+ subshell_type = TCSH;
- else if (strstr (shell, "/bash") || getenv ("BASH"))
- subshell_type = BASH;
- else {
diff -ruN mc.orig/files/patch-src-user.c mc/files/patch-src-user.c
--- mc.orig/files/patch-src-user.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-user.c Sat Jun 24 20:04:53 2006
@@ -0,0 +1,24 @@
+--- 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));
diff -ruN mc.orig/files/patch-src-util.c mc/files/patch-src-util.c
--- mc.orig/files/patch-src-util.c Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-util.c Sat Jun 24 20:04:53 2006
@@ -0,0 +1,34 @@
+--- 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;
+ }
diff -ruN mc.orig/files/patch-src-util.h mc/files/patch-src-util.h
--- mc.orig/files/patch-src-util.h Thu Jan 1 03:00:00 1970
+++ mc/files/patch-src-util.h Sat Jun 24 20:04:53 2006
@@ -0,0 +1,11 @@
+--- 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);
--- mc.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list